44 friend class PrintingClosure; // for method and bcp
45
46 private:
47
48 static void set_bcp_and_mdp(address bcp, JavaThread* current);
49 static void note_trap_inner(JavaThread* current, int reason,
50 const methodHandle& trap_method, int trap_bci);
51 static void note_trap(JavaThread* current, int reason);
52
53 // Inner work method for Interpreter's frequency counter overflow.
54 static nmethod* frequency_counter_overflow_inner(JavaThread* current, address branch_bcp);
55
56 public:
57 // Constants
58 static void ldc (JavaThread* current, bool wide);
59 static void resolve_ldc (JavaThread* current, Bytecodes::Code bytecode);
60
61 // Allocation
62 static void _new (JavaThread* current, ConstantPool* pool, int index);
63 static void newarray (JavaThread* current, BasicType type, jint size);
64 static void anewarray (JavaThread* current, ConstantPool* pool, int index, jint size);
65 static void multianewarray(JavaThread* current, jint* first_size_address);
66 static void register_finalizer(JavaThread* current, oopDesc* obj);
67
68 // Quicken instance-of and check-cast bytecodes
69 static void quicken_io_cc(JavaThread* current);
70
71 // Exceptions thrown by the interpreter
72 static void throw_AbstractMethodError(JavaThread* current);
73 static void throw_AbstractMethodErrorWithMethod(JavaThread* current, Method* oop);
74 static void throw_AbstractMethodErrorVerbose(JavaThread* current,
75 Klass* recvKlass,
76 Method* missingMethod);
77
78 static void throw_IncompatibleClassChangeError(JavaThread* current);
79 static void throw_IncompatibleClassChangeErrorVerbose(JavaThread* current,
80 Klass* resc,
81 Klass* interfaceKlass);
82 static void throw_StackOverflowError(JavaThread* current);
83 static void throw_delayed_StackOverflowError(JavaThread* current);
84 static void throw_ArrayIndexOutOfBoundsException(JavaThread* current, arrayOopDesc* a, jint index);
85 static void throw_ClassCastException(JavaThread* current, oopDesc* obj);
86 static void throw_NullPointerException(JavaThread* current);
87
88 static void create_exception(JavaThread* current, char* name, char* message);
89 static void create_klass_exception(JavaThread* current, char* name, oopDesc* obj);
90 static address exception_handler_for_exception(JavaThread* current, oopDesc* exception);
91 #if INCLUDE_JVMTI
92 static void member_name_arg_or_null(JavaThread* current, address dmh, Method* m, address bcp);
93 #endif
94 static void throw_pending_exception(JavaThread* current);
95
96 static void resolve_from_cache(JavaThread* current, Bytecodes::Code bytecode);
97 private:
|
44 friend class PrintingClosure; // for method and bcp
45
46 private:
47
48 static void set_bcp_and_mdp(address bcp, JavaThread* current);
49 static void note_trap_inner(JavaThread* current, int reason,
50 const methodHandle& trap_method, int trap_bci);
51 static void note_trap(JavaThread* current, int reason);
52
53 // Inner work method for Interpreter's frequency counter overflow.
54 static nmethod* frequency_counter_overflow_inner(JavaThread* current, address branch_bcp);
55
56 public:
57 // Constants
58 static void ldc (JavaThread* current, bool wide);
59 static void resolve_ldc (JavaThread* current, Bytecodes::Code bytecode);
60
61 // Allocation
62 static void _new (JavaThread* current, ConstantPool* pool, int index);
63 static void newarray (JavaThread* current, BasicType type, jint size);
64 static void anewarray (JavaThread* threcurrentad, ConstantPool* pool, int index, jint size);
65 static void multianewarray(JavaThread* current, jint* first_size_address);
66 static void register_finalizer(JavaThread* current, oopDesc* obj);
67 static void aconst_init (JavaThread* current, ConstantPool* pool, int index);
68 static int withfield (JavaThread* current, ConstantPoolCacheEntry* cpe, uintptr_t ptr);
69 static void uninitialized_static_inline_type_field(JavaThread* current, oopDesc* mirror, int offset);
70 static void write_heap_copy (JavaThread* current, oopDesc* value, int offset, oopDesc* rcv);
71 static void read_inlined_field(JavaThread* current, oopDesc* value, int index, Klass* field_holder);
72
73 static void value_array_load(JavaThread* current, arrayOopDesc* array, int index);
74 static void value_array_store(JavaThread* current, void* val, arrayOopDesc* array, int index);
75
76 static jboolean is_substitutable(JavaThread* current, oopDesc* aobj, oopDesc* bobj);
77
78 // Quicken instance-of and check-cast bytecodes
79 static void quicken_io_cc(JavaThread* current);
80
81 // Exceptions thrown by the interpreter
82 static void throw_AbstractMethodError(JavaThread* current);
83 static void throw_AbstractMethodErrorWithMethod(JavaThread* current, Method* oop);
84 static void throw_AbstractMethodErrorVerbose(JavaThread* current,
85 Klass* recvKlass,
86 Method* missingMethod);
87
88 static void throw_InstantiationError(JavaThread* current);
89 static void throw_IncompatibleClassChangeError(JavaThread* current);
90 static void throw_IncompatibleClassChangeErrorVerbose(JavaThread* current,
91 Klass* resc,
92 Klass* interfaceKlass);
93 static void throw_StackOverflowError(JavaThread* current);
94 static void throw_delayed_StackOverflowError(JavaThread* current);
95 static void throw_ArrayIndexOutOfBoundsException(JavaThread* current, arrayOopDesc* a, jint index);
96 static void throw_ClassCastException(JavaThread* current, oopDesc* obj);
97 static void throw_NullPointerException(JavaThread* current);
98
99 static void create_exception(JavaThread* current, char* name, char* message);
100 static void create_klass_exception(JavaThread* current, char* name, oopDesc* obj);
101 static address exception_handler_for_exception(JavaThread* current, oopDesc* exception);
102 #if INCLUDE_JVMTI
103 static void member_name_arg_or_null(JavaThread* current, address dmh, Method* m, address bcp);
104 #endif
105 static void throw_pending_exception(JavaThread* current);
106
107 static void resolve_from_cache(JavaThread* current, Bytecodes::Code bytecode);
108 private:
|