Spec-Zone .ru
спецификации, руководства, описания, API
|
Содержание | Предыдущий | Следующий | Индекс | Спецификация Виртуальной машины JavaTM |
Работа
Вытолкайте главное значение стека операнда
Формат
появиться
Формы
появитесь = 87 (0x57)
Стек операнда
..., значение...
Описание
Вытолкайте главное значение от стека операнда.
Выталкивать инструкция не должна использоваться, если значение не является значением категории 1 вычислительный тип (§3.11.1).
Работа
Вытолкайте лучший или два значения стека операнда
Формат
pop2
Формы
pop2 = 88 (0x58)
Стек операнда
Форма 1:
..., value2, value1...
где каждый из value1 и value2 является значением категории 1 вычислительный тип (§3.11.1).
Форма 2:
..., значение...
где значение является значением категории 2 вычислительных типа (§3.11.1).
Описание
Вытолкайте лучший или два значения от стека операнда.
Работа
Поле набора в объекте
Формат
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
, тогда значение должно быть afloat
,long
, илиdouble
, соответственно. Если полевой тип дескриптора является ссылочным типом, то значение должно иметь тип, который является присвоением, совместимым (§2.6.7) с полевым типом дескриптора. Если полеfinal
, это должно быть объявлено в текущем классе. Иначе,IllegalAccessError
бросается.
Значение и objectref выталкиваются от стека операнда. objectref должен иметь тип reference
. Значение подвергается преобразованию набора значений (§3.8.3), приводя к значению', и поле, на которое ссылаются, в objectref устанавливается оценить'.
Соединение Исключений
Во время разрешения символьной ссылки на поле может быть выдано любое из исключений, имеющих отношение к полевому разрешению, задокументированному в Раздел 5.4.3.2.
Иначе, если разрешенное поле является astatic
поле, putfield бросаетIncompatibleClassChangeError
.
Иначе, если полеfinal
, это должно быть объявлено в текущем классе. Иначе,IllegalAccessError
бросается.
Исключение на этапе выполнения
Иначе, если objectrefnull
, putfield инструкция бросает aNullPointerException
.
Работа
Набор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
, тогда значение должно быть afloat
,long
, илиdouble
, соответственно. Если полевой тип дескриптора является ссылочным типом, то значение должно иметь тип, который является присвоением, совместимым (§2.6.7) с полевым типом дескриптора. Если полеfinal
, это должно быть объявлено в текущем классе. Иначе,IllegalAccessError
бросается.
Значение выталкивается от стека операнда и подвергается преобразованию набора значений (§3.8.3), приводя к значению'. Поле класса устанавливается оценить'.
Соединение Исключений
Во время разрешения символьной ссылки на класс или интерфейсное поле, может быть выдано любое из исключений, имеющих отношение к полевому разрешению, задокументированному в Раздел 5.4.3.2.
Иначе, если разрешенное поле не является astatic
(класс) поле или интерфейсное поле, putstatic бросаютIncompatibleClassChangeError
.
Иначе, если полеfinal
, это должно быть объявлено в текущем классе. Иначе,IllegalAccessError
бросается.
Исключение на этапе выполнения
Иначе, если выполнение этой putstatic инструкции вызывает инициализацию класса, на который ссылаются, или интерфейс, putstatic может бросить Error
как детализировано в Разделе 2.17.5.
Примечания
putstatic инструкция может использоваться только, чтобы установить значение интерфейсного поля на инициализации того поля. Интерфейсные поля могут быть присвоены только однажды на выполнении интерфейсного выражения инициализации переменной, когда интерфейс инициализируется (§2.17.4).
Содержание | Предыдущий | Следующий | Индекс
Спецификация Виртуальной машины JavaTM
Авторское право © Sun Microsystems, Inc 1999 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к jvm@java.sun.com