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


A B C D F Г Я J L М. N P R S T W

появиться

Работа

Вытолкайте главное значение стека операнда

Формат

появиться

Формы

появитесь = 87 (0x57)

Стек операнда

..., значение...

Описание

Вытолкайте главное значение от стека операнда.

Выталкивать инструкция не должна использоваться, если значение не является значением категории 1 вычислительный тип (§3.11.1).


pop2

Работа

Вытолкайте лучший или два значения стека операнда

Формат

pop2

Формы

pop2 = 88 (0x58)

Стек операнда

Форма 1:

..., value2, value1...

где каждый из value1 и value2 является значением категории 1 вычислительный тип (§3.11.1).

Форма 2:

..., значение...

где значение является значением категории 2 вычислительных типа (§3.11.1).

Описание

Вытолкайте лучший или два значения от стека операнда.


putfield

Работа

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

Формат

putfield
indexbyte1
indexbyte2

Формы

putfield = 181 (0xb5)

Стек операнда

..., objectref, значение...

Описание

indexbyte1 без знака и indexbyte2 используются, чтобы создать индекс в пул константы этапа выполнения текущего класса (§3.6), где значение индекса (indexbyte1 << 8) | indexbyte2. Элемент пула константы этапа выполнения по тому индексу должен быть символьной ссылкой на поле (§5.1), который дает имя и дескриптор поля так же как символьной ссылки на класс, в котором должно быть найдено поле. Класс objectref не должен быть массивом. Если поле protected (§4.6), и это - или элемент текущего класса или элемент суперкласса текущего класса, тогда класс objectref должен быть или текущим классом или подклассом текущего класса.

Поле, на которое ссылаются, разрешается (§5.4.3.2). Тип значения, сохраненного putfield инструкцией, должен быть совместимым с дескриптором поля, на которое ссылаются (§4.3.2). Если полевой тип дескриптора boolean, byte, char, short, или int, тогда значение должно быть int. Если полевой тип дескриптора float, long, или double, тогда значение должно быть a float, long, или double, соответственно. Если полевой тип дескриптора является ссылочным типом, то значение должно иметь тип, который является присвоением, совместимым (§2.6.7) с полевым типом дескриптора. Если поле final, это должно быть объявлено в текущем классе. Иначе, IllegalAccessError бросается.

Значение и objectref выталкиваются от стека операнда. objectref должен иметь тип reference. Значение подвергается преобразованию набора значений (§3.8.3), приводя к значению', и поле, на которое ссылаются, в objectref устанавливается оценить'.

Соединение Исключений

Во время разрешения символьной ссылки на поле может быть выдано любое из исключений, имеющих отношение к полевому разрешению, задокументированному в Раздел 5.4.3.2.


Иначе, если разрешенное поле является a static поле, putfield бросает IncompatibleClassChangeError.

Иначе, если поле final, это должно быть объявлено в текущем классе. Иначе, IllegalAccessError бросается.

Исключение на этапе выполнения

Иначе, если objectref null, putfield инструкция бросает a NullPointerException.


putstatic

Работа

Набор static поле в классе

Формат

putstatic
indexbyte1
indexbyte2

Формы

putstatic = 179 (0xb3)

Стек операнда

..., значение...

Описание

indexbyte1 без знака и indexbyte2 используются, чтобы создать индекс в пул константы этапа выполнения текущего класса (§3.6), где значение индекса (indexbyte1 << 8) | indexbyte2. Элемент пула константы этапа выполнения по тому индексу должен быть символьной ссылкой на поле (§5.1), который дает имя и дескриптор поля так же как символьной ссылки на класс или интерфейс, в котором должно быть найдено поле. Поле, на которое ссылаются, разрешается (§5.4.3.2).

На успешном разрешении поля класс или интерфейс, который объявил, разрешенное поле инициализируется (§5.5), если тот класс или интерфейс не были уже инициализированы.

Тип значения, сохраненного putstatic инструкцией, должен быть совместимым с дескриптором поля, на которое ссылаются (§4.3.2). Если полевой тип дескриптора boolean, byte, char, short, или int, тогда значение должно быть int. Если полевой тип дескриптора float, long, или double, тогда значение должно быть a float, long, или double, соответственно. Если полевой тип дескриптора является ссылочным типом, то значение должно иметь тип, который является присвоением, совместимым (§2.6.7) с полевым типом дескриптора. Если поле final, это должно быть объявлено в текущем классе. Иначе, IllegalAccessError бросается.

Значение выталкивается от стека операнда и подвергается преобразованию набора значений (§3.8.3), приводя к значению'. Поле класса устанавливается оценить'.

Соединение Исключений

Во время разрешения символьной ссылки на класс или интерфейсное поле, может быть выдано любое из исключений, имеющих отношение к полевому разрешению, задокументированному в Раздел 5.4.3.2.

Иначе, если разрешенное поле не является a static (класс) поле или интерфейсное поле, putstatic бросают IncompatibleClassChangeError.

Иначе, если поле final, это должно быть объявлено в текущем классе. Иначе, IllegalAccessError бросается.

Исключение на этапе выполнения

Иначе, если выполнение этой putstatic инструкции вызывает инициализацию класса, на который ссылаются, или интерфейс, putstatic может бросить Error как детализировано в Разделе 2.17.5.

Примечания

putstatic инструкция может использоваться только, чтобы установить значение интерфейсного поля на инициализации того поля. Интерфейсные поля могут быть присвоены только однажды на выполнении интерфейсного выражения инициализации переменной, когда интерфейс инициализируется (§2.17.4).


Содержание | Предыдущий | Следующий | Индекс

Спецификация Виртуальной машины JavaTM
Авторское право © Sun Microsystems, Inc 1999 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к jvm@java.sun.com

free hit counter