VM Spec

Contents | Prev | Next | Index | The JavaTM Virtual Machine Specification

A B C D F G I J L M N P R S T W

## new

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 an `abstract` class, new throws an `InstantiationError`.

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.

## newarray

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 a `NegativeArray` `SizeException`.

Notes

> In Sun's implementation of the Java virtual machine, arrays of type `boolean` (atype is `T_BOOLEAN`) are stored as arrays of 8-bit values and are manipulated using the baload and bastore instructions, instructions that also access arrays of type `byte`. Other implementations may implement packed `boolean` arrays; the baload and bastore instructions must still be used to access those arrays.

## nop

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