comparison src/share/vm/graal/graalRuntime.hpp @ 8506:c3657d00e343

-Merge with tip
author Christos Kotselidis <christos.kotselidis@oracle.com>
date Thu, 21 Mar 2013 14:11:13 +0100
parents 86b4965f0c9a 3d41998c30de
children ef97193256d0
comparison
equal deleted inserted replaced
8505:dee7c8b578c7 8506:c3657d00e343
79 79
80 // Holds all assembly stubs and VM 80 // Holds all assembly stubs and VM
81 // runtime routines needed by code code generated 81 // runtime routines needed by code code generated
82 // by Graal. 82 // by Graal.
83 #define GRAAL_STUBS(stub, last_entry) \ 83 #define GRAAL_STUBS(stub, last_entry) \
84 stub(graal_register_finalizer) \ 84 stub(register_finalizer) \
85 stub(graal_new_instance) \ 85 stub(new_instance) \
86 stub(graal_new_array) \ 86 stub(new_array) \
87 stub(graal_new_multi_array) \ 87 stub(new_multi_array) \
88 stub(graal_handle_exception_nofpu) /* optimized version that does not preserve fpu registers */ \ 88 stub(handle_exception_nofpu) /* optimized version that does not preserve fpu registers */ \
89 stub(graal_slow_subtype_check) \ 89 stub(unwind_exception_call) \
90 stub(graal_unwind_exception_call) \ 90 stub(OSR_migration_end) \
91 stub(graal_OSR_migration_end) \ 91 stub(arithmetic_frem) \
92 stub(graal_arithmetic_frem) \ 92 stub(arithmetic_drem) \
93 stub(graal_arithmetic_drem) \ 93 stub(monitorenter) \
94 stub(graal_monitorenter) \ 94 stub(monitorexit) \
95 stub(graal_monitorexit) \ 95 stub(verify_oop) \
96 stub(graal_verify_oop) \ 96 stub(vm_error) \
97 stub(graal_vm_error) \ 97 stub(create_null_pointer_exception) \
98 stub(graal_set_deopt_info) \ 98 stub(create_out_of_bounds_exception) \
99 stub(graal_create_null_pointer_exception) \ 99 stub(log_object) \
100 stub(graal_create_out_of_bounds_exception) \ 100 stub(log_printf) \
101 stub(graal_log_object) \ 101 stub(log_primitive) \
102 stub(graal_log_printf) \ 102 stub(identity_hash_code) \
103 stub(graal_log_primitive) \ 103 stub(thread_is_interrupted) \
104 stub(graal_identity_hash_code) \ 104 stub(wb_pre_call) \
105 stub(graal_thread_is_interrupted) \ 105 stub(wb_post_call) \
106 stub(graal_wb_pre_call) \ 106 last_entry(number_of_ids)
107 stub(graal_wb_post_call) \
108 last_entry(number_of_ids)
109 107
110 #define DECLARE_STUB_ID(x) x ## _id , 108 #define DECLARE_STUB_ID(x) x ## _id ,
111 #define DECLARE_LAST_STUB_ID(x) x 109 #define DECLARE_LAST_STUB_ID(x) x
112 #define STUB_NAME(x) #x " GraalRuntime stub", 110 #define STUB_NAME(x) #x " GraalRuntime stub",
113 #define LAST_STUB_NAME(x) #x " GraalRuntime stub" 111 #define LAST_STUB_NAME(x) #x " GraalRuntime stub"
140 138
141 static void unimplemented_entry(JavaThread* thread, StubID id); 139 static void unimplemented_entry(JavaThread* thread, StubID id);
142 140
143 static address exception_handler_for_pc(JavaThread* thread); 141 static address exception_handler_for_pc(JavaThread* thread);
144 142
145 static void graal_verify_oop(JavaThread* thread, oopDesc* obj); 143 static void create_null_exception(JavaThread* thread);
146 static void graal_wb_pre_call(JavaThread* thread, oopDesc* obj); 144 static void create_out_of_bounds_exception(JavaThread* thread, jint index);
147 static void graal_wb_post_call(JavaThread* thread, oopDesc* obj,void* obj); 145 static void monitorenter(JavaThread* thread, oopDesc* obj, BasicLock* lock);
148 static void graal_create_null_exception(JavaThread* thread); 146 static void monitorexit (JavaThread* thread, oopDesc* obj, BasicLock* lock);
149 static void graal_create_out_of_bounds_exception(JavaThread* thread, jint index); 147 static void vm_error(JavaThread* thread, oop where, oop format, jlong value);
150 static void graal_monitorenter(JavaThread* thread, oopDesc* obj, BasicLock* lock); 148 static void log_printf(JavaThread* thread, oop format, jlong v1, jlong v2, jlong v3);
151 static void graal_monitorexit (JavaThread* thread, oopDesc* obj, BasicLock* lock); 149 static void log_primitive(JavaThread* thread, jchar typeChar, jlong value, jboolean newline);
152 static void graal_vm_error(JavaThread* thread, oop where, oop format, jlong value); 150 static void wb_pre_call(JavaThread* thread, oopDesc* obj);
153 static void graal_log_printf(JavaThread* thread, oop format, jlong v1, jlong v2, jlong v3); 151 static void wb_post_call(JavaThread* thread, oopDesc* obj,void* obj);
154 static void graal_log_primitive(JavaThread* thread, jchar typeChar, jlong value, jboolean newline); 152
155 153 static jint identity_hash_code(JavaThread* thread, oopDesc* objd);
156 static jint graal_identity_hash_code(JavaThread* thread, oopDesc* objd); 154 static jboolean thread_is_interrupted(JavaThread* thread, oopDesc* obj, jboolean clear_interrupte);
157 static jboolean graal_thread_is_interrupted(JavaThread* thread, oopDesc* obj, jboolean clear_interrupte);
158 155
159 // Note: Must be kept in sync with constants in com.oracle.graal.snippets.Log 156 // Note: Must be kept in sync with constants in com.oracle.graal.snippets.Log
160 enum { 157 enum {
161 LOG_OBJECT_NEWLINE = 0x01, 158 LOG_OBJECT_NEWLINE = 0x01,
162 LOG_OBJECT_STRING = 0x02, 159 LOG_OBJECT_STRING = 0x02,
163 LOG_OBJECT_ADDRESS = 0x04 160 LOG_OBJECT_ADDRESS = 0x04
164 }; 161 };
165 static void graal_log_object(JavaThread* thread, oop msg, jint flags); 162 static void log_object(JavaThread* thread, oop msg, jint flags);
166 163
167 public: 164 public:
168 // initialization 165 // initialization
169 static void initialize(BufferBlob* blob); 166 static void initialize(BufferBlob* blob);
170 167