Contents | Prev | Next | Index | The JavaTM Virtual Machine Specification |
Operation
Create new object
Format
new indexbyte1 indexbyte2
Forms
new = 187 (0xbb)
Operand Stack
... ..., objectref
Description
The unsigned indexbyte1 and indexbyte2 are used to construct an index into the runtime constant pool of the current class (§3.6), where the value of the index is (indexbyte1 << 8) | indexbyte2. The runtime constant pool item at the index must be a symbolic reference to a class, array, or interface type. The named class, array, or interface type is resolved (§5.4.3.1) and should result in a class type (it should not result in an array or interface type). Memory for a new instance of that class is allocated from the garbage-collected heap, and the instance variables of the new object are initialized to their default initial values (§2.5.1). The objectref, a reference
to the instance, is pushed onto the operand stack.
On successful resolution of the class, it is initialized (§5.5) if it has not already been initialized.
Linking Exceptions
During resolution of the symbolic reference to the class, array, or interface type, any of the exceptions documented in Section 5.4.3.1 can be thrown.
Otherwise, if the symbolic reference to the class, array, or interface type resolves to an interface or is anabstract
class, new throws anInstantiationError
.
Runtime Exception
Otherwise, if execution of this new instruction causes initialization of the referenced class, new may throw an Error
as detailed in Section 2.17.5.
Note
The new instruction does not completely create a new instance; instance creation is not completed until an instance initialization method has been invoked on the uninitialized instance.
Operation
Create new array
Format
newarray atype
Forms
newarray = 188 (0xbc)
Operand Stack
..., count ..., arrayref
Description
The count must be of type int
. It is popped off the operand stack. The count represents the number of elements in the array to be created.
The atype is a code that indicates the type of array to create. It must take one of the following values:
Array Type atype T_BOOLEAN
4
T_CHAR
5
T_FLOAT
6
T_DOUBLE
7
T_BYTE
8
T_SHORT
9
T_INT
10
T_LONG
11
A new array whose components are of type atype and of length count is allocated from the garbage-collected heap. A reference
arrayref to this new array object is pushed into the operand stack. Each of the elements of the new array is initialized to the default initial value for the type of the array (§2.5.1).
Runtime Exception
If count is less than zero, newarray throws aNegativeArray
SizeException
.
Notes
In Sun's implementation of the Java virtual machine, arrays of typeboolean
(atype isT_BOOLEAN
) are stored as arrays of 8-bit values and are manipulated using the baload and bastore instructions, instructions that also access arrays of typebyte
. Other implementations may implement packedboolean
arrays; the baload and bastore instructions must still be used to access those arrays.
Operation
Do nothing
Format
nop
Forms
nop = 0 (0x0)
Operand Stack
No change
Description
Do nothing.
Contents | Prev | Next | Index
The JavaTM Virtual Machine Specification
Copyright © 1999 Sun Microsystems, Inc.
All rights reserved
Please send any comments or corrections to jvm@java.sun.com