|
Spec-Zone .ru
спецификации, руководства, описания, API
|
| Содержание | Предыдущий | Следующий | Индекс | Спецификация Виртуальной машины JavaTM |
| getfield_quick | |
| смещение | |
| <неиспользованный> |
Формы
getfield_quick = 206 (0xce)
Стек
..., objectref
..., значение
Описание
objectref, который должен иметь тип reference, выталкивается от стека операнда. Значение поля с одним словом при смещении в экземпляр класса, на который ссылается objectref, выбирается и продвигается на стек операнда.
Исключение на этапе выполнения
Если objectref null, getfield_quick инструкция бросает a NullPointerException.
Примечания
Код операции этой инструкции был первоначально getfield, работающий на поле, решенном динамически иметь смещение в данные экземпляра класса 255 слов или меньше и иметь ширину одного слова.
Когда постоянная запись пула, на которую ссылается getfield инструкция, разрешается, смещение для поля, на которое это ссылается, сгенерировано. То смещение заменяет первый байт операнда исходной getfield инструкции. Второй байт операнда getfield неиспользован getfield_quick.
getfield_quick_w getfield_quick_w
Работа
Поле выборки от объекта
| getfield_quick_w | |
| indexbyte1 | |
| indexbyte2 |
Формы
getfield_quick_w = 227 (0xe3)
Стек
..., objectref
..., значение
Стек
..., objectref
..., значение word1, значение word2
Описание
objectref, который должен иметь тип reference, выталкивается от стека операнда. indexbyte1 без знака и indexbyte2 используются, чтобы создать индекс в постоянный пул текущего класса (§3.6), где индекс (indexbyte1 << 8) | indexbyte2. Постоянный элемент пула по индексу должен быть a CONSTANT_Fieldref (§4.4.2), который, должно быть, уже был разрешен и не должен быть классом (static) поле. Полевое смещение, должно быть, было сохранено в постоянном пуле. Значение при том смещении в экземпляр класса, на который ссылается objectref, выбирается и продвигается на стек операнда.
Исключение на этапе выполнения
Если objectref null, getfield_quick_w инструкция бросает a NullPointerException.
Примечания
Код операции этой инструкции был первоначально getfield, работающий на поле, решенном динамически иметь смещение в данные экземпляра класса больше чем 255 слов.
getfield_quick_w (продолжение следует). getfield_quick_w (продолжение следует).
Операнды getfield инструкции не изменяются. Поскольку getfield_quick_w инструкция работает и на одном - и на широких полях с двумя словами, это должно знать и полевое смещение и тип того поля. Поскольку исходная getfield инструкция, необходимая 16-разрядный индекс, полевое смещение может быть 16 битов шириной. Как есть недостаточное пространство в инструкции, чтобы сохранить и 16-разрядное смещение и тип поля, getfield_quick_w сохраняет свои исходные операнды и использует их, чтобы индексировать в постоянный пул, где смещение и тип поля доступны в разрешенной записи.
getfield2_quick getfield2_quick
Работа
Выборка long или double поле от объекта
| getfield2_quick | |
| смещение | |
| <неиспользованный> |
Формы
getfield2_quick = 208 (0xd0)
Стек
..., objectref
..., значение word1, значение word2
Описание
objectref, который должен иметь тип reference, выталкивается от стека операнда. Значение поля с двумя словами при смещении в экземпляр класса, на который ссылается objectref, выбирается и продвигается на стек операнда.
Исключение на этапе выполнения
Если objectref null, getfield2_quick инструкция бросает a NullPointerException.
Примечания
Код операции этой инструкции был первоначально getfield, работающий на поле, решенном динамически иметь смещение в данные экземпляра класса 255 слов или меньше и иметь ширину двух слов.
Когда постоянная запись пула, на которую ссылается getfield инструкция, разрешается, смещение для поля, на которое это ссылается, сгенерировано. То смещение заменяет первый операнд исходной getfield инструкции. Второй операнд getfield неиспользован getfield2_quick.
getstatic_quick getstatic_quick
Работа
Получите статическое поле от класса
| getstatic_quick | |
| indexbyte1 | |
| indexbyte2 |
Формы
getstatic_quick = 210 (0xd2)
Описание
indexbyte1 без знака и indexbyte2 используются, чтобы создать индекс в постоянный пул текущего класса (§3.6), где значение индекса (indexbyte1 << 8) | indexbyte2. Постоянный элемент пула по тому индексу должен быть a CONSTANT_Fieldref (§4.4.2), который, должно быть, уже был разрешен и должен быть классом (static) поле, которое является одним широким словом. Значение того поля класса выбирается и продвигается на стек операнда.
Примечания
Код операции этой инструкции был первоначально getstatic, работающий на a static поле, определенное динамически, чтобы быть одним широким словом. Операнды getstatic инструкции не изменяются. Нет никакого эквивалента getfield_quick инструкции, храня смещение класса как операнд инструкции, для одного слова static поля.
getstatic2_quick getstatic2_quick
Работа
Получите статическое поле от класса
| getstatic2_quick | |
| indexbyte1 | |
| indexbyte2 |
Формы
getstatic2_quick = 212 (0xd4)
Стек
...
..., значение word1, значение word2
Описание
indexbyte1 без знака и indexbyte2 используются, чтобы создать индекс в постоянный пул текущего класса (§3.6), где значение индекса (indexbyte1 << 8) | indexbyte2. Постоянный элемент пула по тому индексу должен быть a CONSTANT_Fieldref (§4.4.2), который, должно быть, уже был разрешен и должен быть классом (static) поле, которое является двумя широкими словами. Значение того поля класса выбирается и продвигается на стек операнда.
Постоянный элемент пула является полевой ссылкой на статическое поле класса. Тип поля должен быть long или double. Значение того поля продвигается на стек.
Примечания
Код операции этой инструкции был первоначально getstatic, работающий на поле класса, решенном динамически быть двумя широкими словами. Операнды getstatic инструкции не изменяются. Нет никакого эквивалента getfield2_quick инструкции, храня смещение класса как операнд инструкции, для с двумя словами static поля.
Содержание | Предыдущий | Следующий | Индекс
Спецификация Виртуальной машины Java (HTML, сгенерированный chsieh 13 марта 1997)
Авторское право © 1996, 1997 Sun Microsystems, Inc. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к doug.kramer@sun.com