|
Spec-Zone .ru
спецификации, руководства, описания, API
|
| putfield_quick | |
| смещение | |
| неиспользованный |
Формы
putfield_quick = 207 (0xcf)
Стек
..., objectref, значение
...
Описание
objectref, который должен иметь тип reference, и значение, которое должно быть значением типа, подходящего для указанного поля, выталкивается от стека операнда. Значение пишется при смещении в экземпляр класса, на который ссылается objectref.
Исключение на этапе выполнения
Если objectref null, putfield_quick инструкция бросает a NullPointerException.
Примечания
Код операции этой инструкции был первоначально putfield, работающий на поле, решенном динамически иметь смещение в данные экземпляра класса 255 слов или меньше и иметь ширину одного слова.
Когда постоянная запись пула, на которую ссылается putfield инструкция, разрешается, смещение для поля, на которое это ссылается, сгенерировано. То смещение заменяет первый байт операнда исходной putfield инструкции. Второй байт операнда putfield неиспользован в putfield_quick.
| putfield_quick_w | |
| indexbyte1 | |
| indexbyte2 |
Формы
putfield_quick_w = 228 (0xe4)
Стек
..., objectref, значение
...
Стек
..., objectref, значение word1, оценивают word2
...
Описание
objectref, который должен иметь тип reference, и значение, которое должно быть значением типа, подходящего для указанного поля, выталкивается от стека операнда. indexbyte1 без знака и indexbyte2 используются, чтобы создать индекс в постоянный пул текущего класса (§3.6), где индекс (indexbyte1 << 8) | indexbyte2. Постоянный элемент пула по индексу должен быть a CONSTANT_Fieldref (§4.4.2), который, должно быть, уже был разрешен и не должен быть классом (static) поле. Значение пишется при смещении в экземпляр класса, на который ссылается objectref.
Исключение на этапе выполнения
Если objectref null, putfield_quick_w инструкция бросает a NullPointerException.
Примечания
Код операции этой инструкции был первоначально putfield, работающий на поле, решенном динамически иметь смещение в данные экземпляра класса больше чем 255 слов.
long или double поле в объекте
| putfield2_quick | |
| смещение | |
| неиспользованный |
Формы
putfield2_quick = 209 (0xd1)
Стек
..., objectref, значение word1, оценивают word2
...
Описание
objectref, который должен иметь тип reference, и значение, которое должно быть значением типа, подходящего для указанного поля, выталкивается от стека операнда. Значение пишется при смещении в экземпляр класса, на который ссылается objectref.
Исключение на этапе выполнения
Если objectref null, putfield2_quick инструкция бросает a NullPointerException.
Примечания
Код операции этой инструкции был первоначально putfield, работающий на поле, решенном динамически иметь смещение в данные экземпляра класса 255 слов или меньше и иметь ширину двух слов.
Когда постоянная запись пула, на которую ссылается putfield инструкция, разрешается, смещение для поля, на которое это ссылается, сгенерировано. То смещение заменяет первый операнд исходной putfield инструкции. Второй операнд putfield неиспользован putfield2_quick.
static поле в классе
| putstatic_quick | |
| indexbyte1 | |
| indexbyte2 |
Формы
putstatic_quick = 211 (0xd3)
Описание
indexbyte1 без знака и indexbyte2 используются, чтобы создать индекс в постоянный пул текущего класса (§3.6), где значение индекса (indexbyte1 << 8) | indexbyte2. Постоянный элемент пула должен быть полевой ссылкой на класс (static) поле, которое, должно быть, было уже успешно разрешено к типу, который является одним широким словом. Значение должно иметь тип, соответствующий тому полю класса. Значение выталкивается от стека операнда, и то поле класса устанавливается оценить.
Примечания
Код операции этой инструкции был первоначально putstatic, работающий на a static поле, определенное динамически, чтобы быть одним широким словом. Операнды putstatic инструкции не изменяются. Нет никакого эквивалента putfield_quick инструкции, храня смещение класса как операнд инструкции, для одного слова static поля.
static поле в классе
| putstatic2_quick | |
| indexbyte1 | |
| indexbyte2 |
Формы
putstatic2_quick = 213 (0xd5)
Стек
..., значение word1, значение word2
...
Описание
indexbyte1 без знака и indexbyte2 используются, чтобы создать индекс в постоянный пул текущего класса (§3.6), где значение индекса (indexbyte1 << 8) | indexbyte2. Постоянный элемент пула должен быть полевой ссылкой на класс (static) поле, которое, должно быть, было уже успешно разрешено к типу, который является двумя широкими словами. Значение должно иметь тип, соответствующий тому полю класса. Значение выталкивается от стека операнда, и то поле класса устанавливается оценить.
Примечания
Код операции этой инструкции был первоначально putstatic, работающий на a static поле, определенное динамически, чтобы быть двумя широкими словами. Операнды putstatic инструкции не изменяются. Нет никакого эквивалента putfield2_quick инструкции, храня смещение класса как операнд инструкции, для с двумя словами static поля.
Спецификация Виртуальной машины Java (HTML, сгенерированный chsieh 04 марта 1997)
Авторское право © 1996, 1997 Sun Microsystems, Inc. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к doug.kramer@sun.com