|
Spec-Zone .ru
спецификации, руководства, описания, API
|
| Содержание | Предыдущий | Следующий | Индекс | Спецификация Виртуальной машины JavaTM |
| 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 putfield_quick_w
| 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 слов.
putfield_quick_w (продолжение следует). putfield_quick_w (продолжение следует).
Операнды putfield инструкции не изменяются. Поскольку putfield_quick_w инструкция работает и на одном - и на широких полях с двумя словами, это должно знать и полевое смещение и тип того поля. Поскольку исходная putfield инструкция, необходимая 16-разрядный индекс, полевое смещение может быть 16 битов шириной. Как есть недостаточное пространство в инструкции, чтобы сохранить и 16-разрядное смещение и тип поля, putfield_quick_w сохраняет свои исходные операнды и использует их, чтобы индексировать в постоянный пул, где смещение и тип поля доступны в разрешенной записи.
putfield2_quick putfield2_quick
Работа
Набор 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.
putstatic_quick putstatic_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 поля.
putstatic2_quick putstatic2_quick
Работа
Набор 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 13 марта 1997)
Авторское право © 1996, 1997 Sun Microsystems, Inc. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к doug.kramer@sun.com