Spec-Zone .ru
спецификации, руководства, описания, API
Содержание | Предыдущий | Следующий | Индекс

putfield_quick

Работа
Поле набора в объекте

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
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 инструкции не изменяются. Поскольку putfield_quick_w инструкция работает и на одном - и на широких полях с двумя словами, это должно знать и полевое смещение и тип того поля. Поскольку исходная putfield инструкция, необходимая 16-разрядный индекс, полевое смещение может быть 16 битов шириной. Как есть недостаточное пространство в инструкции, чтобы сохранить и 16-разрядное смещение и тип поля, putfield_quick_w сохраняет свои исходные операнды и использует их, чтобы индексировать в постоянный пул, где смещение и тип поля доступны в разрешенной записи.


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

Работа
Набор 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

Работа
Набор 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

free hit counter