Up Top

Memory allocation (& GC 処理) : メモリの確保処理 (GC 処理) : slow-path の処理 (1) : Template Interpreter での処理


概要(Summary)

各バイトコードの処理は, InterpreterRuntime クラスの以下のメソッドで行われる.

処理の流れ (概要)(Execution Flows : Summary)

オブジェクトの確保処理(new バイトコード命令の処理)

InterpreterRuntime::_new()
-> instanceKlass::check_valid_for_instantiation() で new 対象のクラスをチェック
   (インターフェースや abstract クラスに対して instantiate しようとしていたら InstantiationError)
-> instanceKlass::allocate_instance() でメモリの確保を行う
   -> (See: here for details)

配列の確保処理(newarray バイトコード命令の処理)

InterpreterRuntime::newarray()
-> oopFactory::new_typeArray()
   -> (See: here for details)

オブジェクト配列の確保処理(anewarray バイトコード命令の処理)

InterpreterRuntime::anewarray()
-> oopFactory::new_objArray()
   -> (See: here for details)

多次元配列の確保処理(multianewarray バイトコード命令の処理)

InterpreterRuntime::multianewarray()
-> objArrayKlass::multi_allocate()  or  typeArrayKlass::multi_allocate()
   -> (See: here for details)

処理の流れ (詳細)(Execution Flows : Details)

InterpreterRuntime::_new()

See: here for details

instanceKlass::check_valid_for_instantiation()

See: here for details

備考(Notes)

java.lang.Class クラスは instantiate されない.

    ((cite: jdk/src/share/classes/java/lang/Class.java))
        /*
         * Constructor. Only the Java Virtual Machine creates Class
         * objects.
         */
        private Class() {}

InterpreterRuntime::newarray()

See: here for details

InterpreterRuntime::anewarray()

See: here for details

InterpreterRuntime::multianewarray()

See: here for details


This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.