Mercurial > hg > graal-jvmci-8
comparison src/share/vm/graal/graalCompilerToVM.cpp @ 5554:70f715dfbb41
Bring Java renamings and restructurings to the C++ part.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Sun, 10 Jun 2012 01:17:48 +0200 |
parents | 8872bc0eebdf |
children | faa9628bb37d |
comparison
equal
deleted
inserted
replaced
5553:511612d1b5c1 | 5554:70f715dfbb41 |
---|---|
39 methodOop getMethodFromHotSpotMethod(jobject hotspot_method) { | 39 methodOop getMethodFromHotSpotMethod(jobject hotspot_method) { |
40 return getMethodFromHotSpotMethod(JNIHandles::resolve(hotspot_method)); | 40 return getMethodFromHotSpotMethod(JNIHandles::resolve(hotspot_method)); |
41 } | 41 } |
42 | 42 |
43 methodOop getMethodFromHotSpotMethod(oop hotspot_method) { | 43 methodOop getMethodFromHotSpotMethod(oop hotspot_method) { |
44 return (methodOop)HotSpotMethodResolved::javaMirror(hotspot_method); | 44 return (methodOop)HotSpotResolvedJavaMethod::javaMirror(hotspot_method); |
45 } | 45 } |
46 | 46 |
47 methodDataOop getMethodDataFromHotSpotMethodData(jobject hotspot_method_data) { | 47 methodDataOop getMethodDataFromHotSpotMethodData(jobject hotspot_method_data) { |
48 return (methodDataOop)HotSpotMethodData::hotspotMirror(JNIHandles::resolve(hotspot_method_data)); | 48 return (methodDataOop)HotSpotMethodData::hotspotMirror(JNIHandles::resolve(hotspot_method_data)); |
49 } | 49 } |
50 | 50 |
51 // public byte[] RiMethod_code(HotSpotResolvedMethod method); | 51 // public byte[] JavaMethod_code(HotSpotResolvedMethod method); |
52 JNIEXPORT jbyteArray JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiMethod_1code(JNIEnv *env, jobject, jobject hotspot_method) { | 52 JNIEXPORT jbyteArray JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaMethod_1code(JNIEnv *env, jobject, jobject hotspot_method) { |
53 TRACE_graal_3("CompilerToVM::RiMethod_code"); | 53 TRACE_graal_3("CompilerToVM::JavaMethod_code"); |
54 methodHandle method = getMethodFromHotSpotMethod(hotspot_method); | 54 methodHandle method = getMethodFromHotSpotMethod(hotspot_method); |
55 | 55 |
56 // copy all bytecodes | 56 // copy all bytecodes |
57 int code_size = method->code_size(); | 57 int code_size = method->code_size(); |
58 jbyteArray result = env->NewByteArray(code_size); | 58 jbyteArray result = env->NewByteArray(code_size); |
83 } | 83 } |
84 | 84 |
85 return result; | 85 return result; |
86 } | 86 } |
87 | 87 |
88 // public String RiMethod_signature(HotSpotResolvedMethod method); | 88 // public String JavaMethod_signature(HotSpotResolvedMethod method); |
89 JNIEXPORT jstring JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiMethod_1signature(JNIEnv *env, jobject, jobject hotspot_method) { | 89 JNIEXPORT jstring JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaMethod_1signature(JNIEnv *env, jobject, jobject hotspot_method) { |
90 TRACE_graal_3("CompilerToVM::RiMethod_signature"); | 90 TRACE_graal_3("CompilerToVM::JavaMethod_signature"); |
91 VM_ENTRY_MARK | 91 VM_ENTRY_MARK |
92 methodOop method = getMethodFromHotSpotMethod(hotspot_method); | 92 methodOop method = getMethodFromHotSpotMethod(hotspot_method); |
93 assert(method != NULL && method->signature() != NULL, "signature required"); | 93 assert(method != NULL && method->signature() != NULL, "signature required"); |
94 return VmIds::toString<jstring>(method->signature(), THREAD); | 94 return VmIds::toString<jstring>(method->signature(), THREAD); |
95 } | 95 } |
96 | 96 |
97 // public RiExceptionHandler[] RiMethod_exceptionHandlers(long vmId); | 97 // public ExceptionHandler[] JavaMethod_exceptionHandlers(long vmId); |
98 JNIEXPORT jobjectArray JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiMethod_1exceptionHandlers(JNIEnv *, jobject, jobject hotspot_method) { | 98 JNIEXPORT jobjectArray JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaMethod_1exceptionHandlers(JNIEnv *, jobject, jobject hotspot_method) { |
99 TRACE_graal_3("CompilerToVM::RiMethod_exceptionHandlers"); | 99 TRACE_graal_3("CompilerToVM::JavaMethod_exceptionHandlers"); |
100 VM_ENTRY_MARK | 100 VM_ENTRY_MARK |
101 ResourceMark rm; | 101 ResourceMark rm; |
102 methodHandle method = getMethodFromHotSpotMethod(hotspot_method); | 102 methodHandle method = getMethodFromHotSpotMethod(hotspot_method); |
103 typeArrayHandle handlers = method->exception_table(); | 103 typeArrayHandle handlers = method->exception_table(); |
104 int handler_count = handlers.is_null() ? 0 : handlers->length() / 4; | 104 int handler_count = handlers.is_null() ? 0 : handlers->length() / 4; |
105 | 105 |
106 instanceKlass::cast(RiExceptionHandler::klass())->initialize(CHECK_NULL); | 106 instanceKlass::cast(ExceptionHandler::klass())->initialize(CHECK_NULL); |
107 objArrayHandle array = oopFactory::new_objArray(SystemDictionary::RiExceptionHandler_klass(), handler_count, CHECK_NULL); | 107 objArrayHandle array = oopFactory::new_objArray(SystemDictionary::ExceptionHandler_klass(), handler_count, CHECK_NULL); |
108 | 108 |
109 for (int i = 0; i < handler_count; i++) { | 109 for (int i = 0; i < handler_count; i++) { |
110 // exception handlers are stored as four integers: start bci, end bci, handler bci, catch class constant pool index | 110 // exception handlers are stored as four integers: start bci, end bci, handler bci, catch class constant pool index |
111 int base = i * 4; | 111 int base = i * 4; |
112 Handle entry = instanceKlass::cast(RiExceptionHandler::klass())->allocate_instance(CHECK_NULL); | 112 Handle entry = instanceKlass::cast(ExceptionHandler::klass())->allocate_instance(CHECK_NULL); |
113 RiExceptionHandler::set_startBCI(entry, handlers->int_at(base + 0)); | 113 ExceptionHandler::set_startBCI(entry, handlers->int_at(base + 0)); |
114 RiExceptionHandler::set_endBCI(entry, handlers->int_at(base + 1)); | 114 ExceptionHandler::set_endBCI(entry, handlers->int_at(base + 1)); |
115 RiExceptionHandler::set_handlerBCI(entry, handlers->int_at(base + 2)); | 115 ExceptionHandler::set_handlerBCI(entry, handlers->int_at(base + 2)); |
116 int catch_class_index = handlers->int_at(base + 3); | 116 int catch_class_index = handlers->int_at(base + 3); |
117 RiExceptionHandler::set_catchTypeCPI(entry, catch_class_index); | 117 ExceptionHandler::set_catchTypeCPI(entry, catch_class_index); |
118 | 118 |
119 if (catch_class_index == 0) { | 119 if (catch_class_index == 0) { |
120 RiExceptionHandler::set_catchType(entry, NULL); | 120 ExceptionHandler::set_catchType(entry, NULL); |
121 } else { | 121 } else { |
122 constantPoolOop cp = instanceKlass::cast(method->method_holder())->constants(); | 122 constantPoolOop cp = instanceKlass::cast(method->method_holder())->constants(); |
123 KlassHandle loading_klass = method->method_holder(); | 123 KlassHandle loading_klass = method->method_holder(); |
124 Handle catch_class = GraalCompiler::get_RiType(cp, catch_class_index, loading_klass, CHECK_NULL); | 124 Handle catch_class = GraalCompiler::get_JavaType(cp, catch_class_index, loading_klass, CHECK_NULL); |
125 if (catch_class->klass() == HotSpotTypeResolved::klass() && java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(catch_class)) == SystemDictionary::Throwable_klass()) { | 125 if (catch_class->klass() == HotSpotResolvedJavaType::klass() && java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(catch_class)) == SystemDictionary::Throwable_klass()) { |
126 RiExceptionHandler::set_catchType(entry, NULL); | 126 ExceptionHandler::set_catchType(entry, NULL); |
127 RiExceptionHandler::set_catchTypeCPI(entry, 0); | 127 ExceptionHandler::set_catchTypeCPI(entry, 0); |
128 } else { | 128 } else { |
129 RiExceptionHandler::set_catchType(entry, catch_class()); | 129 ExceptionHandler::set_catchType(entry, catch_class()); |
130 } | 130 } |
131 } | 131 } |
132 array->obj_at_put(i, entry()); | 132 array->obj_at_put(i, entry()); |
133 } | 133 } |
134 | 134 |
135 return (jobjectArray) JNIHandles::make_local(array()); | 135 return (jobjectArray) JNIHandles::make_local(array()); |
136 } | 136 } |
137 | 137 |
138 // public boolean RiMethod_hasBalancedMonitors(long vmId); | 138 // public boolean JavaMethod_hasBalancedMonitors(long vmId); |
139 JNIEXPORT jint JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiMethod_1hasBalancedMonitors(JNIEnv *, jobject, jobject hotspot_method) { | 139 JNIEXPORT jint JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaMethod_1hasBalancedMonitors(JNIEnv *, jobject, jobject hotspot_method) { |
140 TRACE_graal_3("CompilerToVM::RiMethod_hasBalancedMonitors"); | 140 TRACE_graal_3("CompilerToVM::JavaMethod_hasBalancedMonitors"); |
141 | 141 |
142 VM_ENTRY_MARK; | 142 VM_ENTRY_MARK; |
143 | 143 |
144 // Analyze the method to see if monitors are used properly. | 144 // Analyze the method to see if monitors are used properly. |
145 methodHandle method(THREAD, getMethodFromHotSpotMethod(hotspot_method)); | 145 methodHandle method(THREAD, getMethodFromHotSpotMethod(hotspot_method)); |
161 method->set_guaranteed_monitor_matching(); | 161 method->set_guaranteed_monitor_matching(); |
162 } | 162 } |
163 return true; | 163 return true; |
164 } | 164 } |
165 | 165 |
166 // public RiMethod getRiMethod(java.lang.reflect.Method reflectionMethod); | 166 // public JavaMethod getJavaMethod(java.lang.reflect.Method reflectionMethod); |
167 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_getRiMethod(JNIEnv *, jobject, jobject reflection_method_handle) { | 167 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_getJavaMethod(JNIEnv *, jobject, jobject reflection_method_handle) { |
168 TRACE_graal_3("CompilerToVM::getRiMethod"); | 168 TRACE_graal_3("CompilerToVM::getJavaMethod"); |
169 VM_ENTRY_MARK; | 169 VM_ENTRY_MARK; |
170 oop reflection_method = JNIHandles::resolve(reflection_method_handle); | 170 oop reflection_method = JNIHandles::resolve(reflection_method_handle); |
171 oop reflection_holder = java_lang_reflect_Method::clazz(reflection_method); | 171 oop reflection_holder = java_lang_reflect_Method::clazz(reflection_method); |
172 int slot = java_lang_reflect_Method::slot(reflection_method); | 172 int slot = java_lang_reflect_Method::slot(reflection_method); |
173 klassOop holder = java_lang_Class::as_klassOop(reflection_holder); | 173 klassOop holder = java_lang_Class::as_klassOop(reflection_holder); |
174 methodOop method = instanceKlass::cast(holder)->method_with_idnum(slot); | 174 methodOop method = instanceKlass::cast(holder)->method_with_idnum(slot); |
175 Handle ret = GraalCompiler::createHotSpotMethodResolved(method, CHECK_NULL); | 175 Handle ret = GraalCompiler::createHotSpotResolvedJavaMethod(method, CHECK_NULL); |
176 return JNIHandles::make_local(THREAD, ret()); | 176 return JNIHandles::make_local(THREAD, ret()); |
177 } | 177 } |
178 | 178 |
179 // public boolean RiMethod_uniqueConcreteMethod(long vmId); | 179 // public boolean JavaMethod_uniqueConcreteMethod(long vmId); |
180 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiMethod_1uniqueConcreteMethod(JNIEnv *, jobject, jobject hotspot_method) { | 180 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaMethod_1uniqueConcreteMethod(JNIEnv *, jobject, jobject hotspot_method) { |
181 TRACE_graal_3("CompilerToVM::RiMethod_uniqueConcreteMethod"); | 181 TRACE_graal_3("CompilerToVM::JavaMethod_uniqueConcreteMethod"); |
182 | 182 |
183 VM_ENTRY_MARK; | 183 VM_ENTRY_MARK; |
184 methodHandle method = getMethodFromHotSpotMethod(hotspot_method); | 184 methodHandle method = getMethodFromHotSpotMethod(hotspot_method); |
185 KlassHandle holder = method->method_holder(); | 185 KlassHandle holder = method->method_holder(); |
186 if (holder->is_interface()) { | 186 if (holder->is_interface()) { |
200 unique_concrete = Dependencies::find_unique_concrete_method(holder(), method()); | 200 unique_concrete = Dependencies::find_unique_concrete_method(holder(), method()); |
201 } | 201 } |
202 if (unique_concrete.is_null()) { | 202 if (unique_concrete.is_null()) { |
203 return NULL; | 203 return NULL; |
204 } else { | 204 } else { |
205 Handle method_resolved = GraalCompiler::createHotSpotMethodResolved(unique_concrete, CHECK_NULL); | 205 Handle method_resolved = GraalCompiler::createHotSpotResolvedJavaMethod(unique_concrete, CHECK_NULL); |
206 return JNIHandles::make_local(THREAD, method_resolved()); | 206 return JNIHandles::make_local(THREAD, method_resolved()); |
207 } | 207 } |
208 } | 208 } |
209 | 209 |
210 // public native int RiMethod_invocationCount(long vmId); | 210 // public native int JavaMethod_invocationCount(long vmId); |
211 JNIEXPORT jint JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiMethod_1invocationCount(JNIEnv *, jobject, jobject hotspot_method) { | 211 JNIEXPORT jint JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaMethod_1invocationCount(JNIEnv *, jobject, jobject hotspot_method) { |
212 TRACE_graal_3("CompilerToVM::RiMethod_invocationCount"); | 212 TRACE_graal_3("CompilerToVM::JavaMethod_invocationCount"); |
213 return getMethodFromHotSpotMethod(hotspot_method)->invocation_count(); | 213 return getMethodFromHotSpotMethod(hotspot_method)->invocation_count(); |
214 } | 214 } |
215 | 215 |
216 // public native HotSpotMethodData RiMethod_methodData(HotSpotMethodResolved method); | 216 // public native HotSpotMethodData JavaMethod_methodData(HotSpotResolvedJavaMethod method); |
217 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiMethod_1methodData(JNIEnv *, jobject, jobject hotspot_method) { | 217 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaMethod_1methodData(JNIEnv *, jobject, jobject hotspot_method) { |
218 TRACE_graal_3("CompilerToVM::RiMethod_methodData"); | 218 TRACE_graal_3("CompilerToVM::JavaMethod_methodData"); |
219 VM_ENTRY_MARK; | 219 VM_ENTRY_MARK; |
220 | 220 |
221 methodDataHandle method_data = getMethodFromHotSpotMethod(hotspot_method)->method_data(); | 221 methodDataHandle method_data = getMethodFromHotSpotMethod(hotspot_method)->method_data(); |
222 if(method_data.is_null()) { | 222 if(method_data.is_null()) { |
223 return NULL; | 223 return NULL; |
251 } | 251 } |
252 } | 252 } |
253 return count; | 253 return count; |
254 } | 254 } |
255 | 255 |
256 // public native boolean RiMethod_hasCompiledCode(HotSpotMethodResolved method); | 256 // public native boolean JavaMethod_hasCompiledCode(HotSpotResolvedJavaMethod method); |
257 JNIEXPORT jboolean JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiMethod_1hasCompiledCode(JNIEnv *, jobject, jobject hotspot_method) { | 257 JNIEXPORT jboolean JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaMethod_1hasCompiledCode(JNIEnv *, jobject, jobject hotspot_method) { |
258 TRACE_graal_3("CompilerToVM::RiMethod_hasCompiledCode"); | 258 TRACE_graal_3("CompilerToVM::JavaMethod_hasCompiledCode"); |
259 return getMethodFromHotSpotMethod(hotspot_method)->has_compiled_code(); | 259 return getMethodFromHotSpotMethod(hotspot_method)->has_compiled_code(); |
260 } | 260 } |
261 | 261 |
262 // public native int RiMethod_getCompiledCodeSize(HotSpotMethodResolved method); | 262 // public native int JavaMethod_getCompiledCodeSize(HotSpotResolvedJavaMethod method); |
263 JNIEXPORT jint JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiMethod_1getCompiledCodeSize(JNIEnv *env, jobject, jobject hotspot_method) { | 263 JNIEXPORT jint JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaMethod_1getCompiledCodeSize(JNIEnv *env, jobject, jobject hotspot_method) { |
264 TRACE_graal_3("CompilerToVM::RiMethod_getCompiledCodeSize"); | 264 TRACE_graal_3("CompilerToVM::JavaMethod_getCompiledCodeSize"); |
265 nmethod* code = getMethodFromHotSpotMethod(hotspot_method)->code(); | 265 nmethod* code = getMethodFromHotSpotMethod(hotspot_method)->code(); |
266 return code == NULL ? 0 : code->insts_size(); | 266 return code == NULL ? 0 : code->insts_size(); |
267 } | 267 } |
268 | 268 |
269 // public RiType RiSignature_lookupType(String returnType, HotSpotTypeResolved accessingClass); | 269 // public JavaType Signature_lookupType(String returnType, HotSpotResolvedJavaType accessingClass); |
270 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiSignature_1lookupType(JNIEnv *env, jobject, jstring jname, jobject accessingClass, jboolean eagerResolve) { | 270 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_Signature_1lookupType(JNIEnv *env, jobject, jstring jname, jobject accessingClass, jboolean eagerResolve) { |
271 TRACE_graal_3("CompilerToVM::RiSignature_lookupType"); | 271 TRACE_graal_3("CompilerToVM::Signature_lookupType"); |
272 VM_ENTRY_MARK; | 272 VM_ENTRY_MARK; |
273 ResourceMark rm; | 273 ResourceMark rm; |
274 | 274 |
275 Symbol* nameSymbol = VmIds::toSymbol(jname); | 275 Symbol* nameSymbol = VmIds::toSymbol(jname); |
276 Handle name = JNIHandles::resolve(jname); | 276 Handle name = JNIHandles::resolve(jname); |
277 | 277 |
278 oop result; | 278 oop result; |
279 if (nameSymbol == vmSymbols::int_signature()) { | 279 if (nameSymbol == vmSymbols::int_signature()) { |
280 result = VMToCompiler::createRiTypePrimitive((int) T_INT, THREAD); | 280 result = VMToCompiler::createPrimitiveJavaType((int) T_INT, THREAD); |
281 } else if (nameSymbol == vmSymbols::long_signature()) { | 281 } else if (nameSymbol == vmSymbols::long_signature()) { |
282 result = VMToCompiler::createRiTypePrimitive((int) T_LONG, THREAD); | 282 result = VMToCompiler::createPrimitiveJavaType((int) T_LONG, THREAD); |
283 } else if (nameSymbol == vmSymbols::bool_signature()) { | 283 } else if (nameSymbol == vmSymbols::bool_signature()) { |
284 result = VMToCompiler::createRiTypePrimitive((int) T_BOOLEAN, THREAD); | 284 result = VMToCompiler::createPrimitiveJavaType((int) T_BOOLEAN, THREAD); |
285 } else if (nameSymbol == vmSymbols::char_signature()) { | 285 } else if (nameSymbol == vmSymbols::char_signature()) { |
286 result = VMToCompiler::createRiTypePrimitive((int) T_CHAR, THREAD); | 286 result = VMToCompiler::createPrimitiveJavaType((int) T_CHAR, THREAD); |
287 } else if (nameSymbol == vmSymbols::short_signature()) { | 287 } else if (nameSymbol == vmSymbols::short_signature()) { |
288 result = VMToCompiler::createRiTypePrimitive((int) T_SHORT, THREAD); | 288 result = VMToCompiler::createPrimitiveJavaType((int) T_SHORT, THREAD); |
289 } else if (nameSymbol == vmSymbols::byte_signature()) { | 289 } else if (nameSymbol == vmSymbols::byte_signature()) { |
290 result = VMToCompiler::createRiTypePrimitive((int) T_BYTE, THREAD); | 290 result = VMToCompiler::createPrimitiveJavaType((int) T_BYTE, THREAD); |
291 } else if (nameSymbol == vmSymbols::double_signature()) { | 291 } else if (nameSymbol == vmSymbols::double_signature()) { |
292 result = VMToCompiler::createRiTypePrimitive((int) T_DOUBLE, THREAD); | 292 result = VMToCompiler::createPrimitiveJavaType((int) T_DOUBLE, THREAD); |
293 } else if (nameSymbol == vmSymbols::float_signature()) { | 293 } else if (nameSymbol == vmSymbols::float_signature()) { |
294 result = VMToCompiler::createRiTypePrimitive((int) T_FLOAT, THREAD); | 294 result = VMToCompiler::createPrimitiveJavaType((int) T_FLOAT, THREAD); |
295 } else { | 295 } else { |
296 klassOop resolved_type = NULL; | 296 klassOop resolved_type = NULL; |
297 // if the name isn't in the symbol table then the class isn't loaded anyway... | 297 // if the name isn't in the symbol table then the class isn't loaded anyway... |
298 if (nameSymbol != NULL) { | 298 if (nameSymbol != NULL) { |
299 Handle classloader; | 299 Handle classloader; |
300 Handle protectionDomain; | 300 Handle protectionDomain; |
301 if (JNIHandles::resolve(accessingClass) != NULL) { | 301 if (JNIHandles::resolve(accessingClass) != NULL) { |
302 classloader = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(accessingClass))->klass_part()->class_loader(); | 302 classloader = java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(accessingClass))->klass_part()->class_loader(); |
303 protectionDomain = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(accessingClass))->klass_part()->protection_domain(); | 303 protectionDomain = java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(accessingClass))->klass_part()->protection_domain(); |
304 } | 304 } |
305 if (eagerResolve) { | 305 if (eagerResolve) { |
306 resolved_type = SystemDictionary::resolve_or_null(nameSymbol, classloader, protectionDomain, THREAD); | 306 resolved_type = SystemDictionary::resolve_or_null(nameSymbol, classloader, protectionDomain, THREAD); |
307 } else { | 307 } else { |
308 if (FieldType::is_obj(nameSymbol)) { | 308 if (FieldType::is_obj(nameSymbol)) { |
319 CLEAR_PENDING_EXCEPTION; | 319 CLEAR_PENDING_EXCEPTION; |
320 resolved_type = NULL; | 320 resolved_type = NULL; |
321 } | 321 } |
322 } | 322 } |
323 if (resolved_type != NULL) { | 323 if (resolved_type != NULL) { |
324 Handle type = GraalCompiler::createHotSpotTypeResolved(resolved_type, name, CHECK_NULL); | 324 Handle type = GraalCompiler::createHotSpotResolvedJavaType(resolved_type, name, CHECK_NULL); |
325 result = type(); | 325 result = type(); |
326 } else { | 326 } else { |
327 Handle type = VMToCompiler::createRiTypeUnresolved(name, THREAD); | 327 Handle type = VMToCompiler::createJavaType(name, THREAD); |
328 result = type(); | 328 result = type(); |
329 } | 329 } |
330 } | 330 } |
331 | 331 |
332 return JNIHandles::make_local(THREAD, result); | 332 return JNIHandles::make_local(THREAD, result); |
333 } | 333 } |
334 | 334 |
335 // public Object RiConstantPool_lookupConstant(HotSpotTypeResolved type, int cpi); | 335 // public Object ConstantPool_lookupConstant(HotSpotResolvedJavaType type, int cpi); |
336 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiConstantPool_1lookupConstant(JNIEnv *env, jobject, jobject type, jint index) { | 336 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_ConstantPool_1lookupConstant(JNIEnv *env, jobject, jobject type, jint index) { |
337 TRACE_graal_3("CompilerToVM::RiConstantPool_lookupConstant"); | 337 TRACE_graal_3("CompilerToVM::ConstantPool_lookupConstant"); |
338 VM_ENTRY_MARK; | 338 VM_ENTRY_MARK; |
339 | 339 |
340 constantPoolOop cp = instanceKlass::cast(java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(type)))->constants(); | 340 constantPoolOop cp = instanceKlass::cast(java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(type)))->constants(); |
341 | 341 |
342 oop result = NULL; | 342 oop result = NULL; |
343 constantTag tag = cp->tag_at(index); | 343 constantTag tag = cp->tag_at(index); |
344 if (tag.is_int()) { | 344 if (tag.is_int()) { |
345 result = VMToCompiler::createCiConstant(CiKind::Int(), cp->int_at(index), CHECK_0); | 345 result = VMToCompiler::createConstant(Kind::Int(), cp->int_at(index), CHECK_0); |
346 } else if (tag.is_long()) { | 346 } else if (tag.is_long()) { |
347 result = VMToCompiler::createCiConstant(CiKind::Long(), cp->long_at(index), CHECK_0); | 347 result = VMToCompiler::createConstant(Kind::Long(), cp->long_at(index), CHECK_0); |
348 } else if (tag.is_float()) { | 348 } else if (tag.is_float()) { |
349 result = VMToCompiler::createCiConstantFloat(cp->float_at(index), CHECK_0); | 349 result = VMToCompiler::createConstantFloat(cp->float_at(index), CHECK_0); |
350 } else if (tag.is_double()) { | 350 } else if (tag.is_double()) { |
351 result = VMToCompiler::createCiConstantDouble(cp->double_at(index), CHECK_0); | 351 result = VMToCompiler::createConstantDouble(cp->double_at(index), CHECK_0); |
352 } else if (tag.is_string() || tag.is_unresolved_string()) { | 352 } else if (tag.is_string() || tag.is_unresolved_string()) { |
353 oop string = NULL; | 353 oop string = NULL; |
354 if (cp->is_pseudo_string_at(index)) { | 354 if (cp->is_pseudo_string_at(index)) { |
355 string = cp->pseudo_string_at(index); | 355 string = cp->pseudo_string_at(index); |
356 } else { | 356 } else { |
360 // TODO: Gracefully exit compilation. | 360 // TODO: Gracefully exit compilation. |
361 fatal("out of memory during compilation!"); | 361 fatal("out of memory during compilation!"); |
362 return NULL; | 362 return NULL; |
363 } | 363 } |
364 } | 364 } |
365 result = VMToCompiler::createCiConstantObject(string, CHECK_0); | 365 result = VMToCompiler::createConstantObject(string, CHECK_0); |
366 } else if (tag.is_klass() || tag.is_unresolved_klass()) { | 366 } else if (tag.is_klass() || tag.is_unresolved_klass()) { |
367 Handle type = GraalCompiler::get_RiType(cp, index, cp->pool_holder(), CHECK_NULL); | 367 Handle type = GraalCompiler::get_JavaType(cp, index, cp->pool_holder(), CHECK_NULL); |
368 result = type(); | 368 result = type(); |
369 } else if (tag.is_object()) { | 369 } else if (tag.is_object()) { |
370 oop obj = cp->object_at(index); | 370 oop obj = cp->object_at(index); |
371 assert(obj->is_instance(), "must be an instance"); | 371 assert(obj->is_instance(), "must be an instance"); |
372 result = VMToCompiler::createCiConstantObject(obj, CHECK_NULL); | 372 result = VMToCompiler::createConstantObject(obj, CHECK_NULL); |
373 } else { | 373 } else { |
374 ShouldNotReachHere(); | 374 ShouldNotReachHere(); |
375 } | 375 } |
376 | 376 |
377 return JNIHandles::make_local(THREAD, result); | 377 return JNIHandles::make_local(THREAD, result); |
378 } | 378 } |
379 | 379 |
380 // public RiMethod RiConstantPool_lookupMethod(long vmId, int cpi, byte byteCode); | 380 // public JavaMethod ConstantPool_lookupMethod(long vmId, int cpi, byte byteCode); |
381 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiConstantPool_1lookupMethod(JNIEnv *env, jobject, jobject type, jint index, jbyte byteCode) { | 381 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_ConstantPool_1lookupMethod(JNIEnv *env, jobject, jobject type, jint index, jbyte byteCode) { |
382 TRACE_graal_3("CompilerToVM::RiConstantPool_lookupMethod"); | 382 TRACE_graal_3("CompilerToVM::ConstantPool_lookupMethod"); |
383 VM_ENTRY_MARK; | 383 VM_ENTRY_MARK; |
384 index = GraalCompiler::to_cp_index_u2(index); | 384 index = GraalCompiler::to_cp_index_u2(index); |
385 constantPoolHandle cp = instanceKlass::cast(java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(type)))->constants(); | 385 constantPoolHandle cp = instanceKlass::cast(java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(type)))->constants(); |
386 instanceKlassHandle pool_holder(cp->pool_holder()); | 386 instanceKlassHandle pool_holder(cp->pool_holder()); |
387 | 387 |
388 Bytecodes::Code bc = (Bytecodes::Code) (((int) byteCode) & 0xFF); | 388 Bytecodes::Code bc = (Bytecodes::Code) (((int) byteCode) & 0xFF); |
389 methodHandle method = GraalEnv::get_method_by_index(cp, index, bc, pool_holder); | 389 methodHandle method = GraalEnv::get_method_by_index(cp, index, bc, pool_holder); |
390 if (!method.is_null()) { | 390 if (!method.is_null()) { |
391 Handle ret = GraalCompiler::createHotSpotMethodResolved(method, CHECK_NULL); | 391 Handle ret = GraalCompiler::createHotSpotResolvedJavaMethod(method, CHECK_NULL); |
392 return JNIHandles::make_local(THREAD, ret()); | 392 return JNIHandles::make_local(THREAD, ret()); |
393 } else { | 393 } else { |
394 // Get the method's name and signature. | 394 // Get the method's name and signature. |
395 Handle name = VmIds::toString<Handle>(cp->name_ref_at(index), CHECK_NULL); | 395 Handle name = VmIds::toString<Handle>(cp->name_ref_at(index), CHECK_NULL); |
396 Handle signature = VmIds::toString<Handle>(cp->signature_ref_at(index), CHECK_NULL); | 396 Handle signature = VmIds::toString<Handle>(cp->signature_ref_at(index), CHECK_NULL); |
397 int holder_index = cp->klass_ref_index_at(index); | 397 int holder_index = cp->klass_ref_index_at(index); |
398 Handle type = GraalCompiler::get_RiType(cp, holder_index, cp->pool_holder(), CHECK_NULL); | 398 Handle type = GraalCompiler::get_JavaType(cp, holder_index, cp->pool_holder(), CHECK_NULL); |
399 return JNIHandles::make_local(THREAD, VMToCompiler::createRiMethodUnresolved(name, signature, type, THREAD)); | 399 return JNIHandles::make_local(THREAD, VMToCompiler::createJavaMethod(name, signature, type, THREAD)); |
400 } | 400 } |
401 } | 401 } |
402 | 402 |
403 // public RiType RiConstantPool_lookupType(long vmId, int cpi); | 403 // public JavaType ConstantPool_lookupType(long vmId, int cpi); |
404 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiConstantPool_1lookupType(JNIEnv *env, jobject, jobject type, jint index) { | 404 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_ConstantPool_1lookupType(JNIEnv *env, jobject, jobject type, jint index) { |
405 TRACE_graal_3("CompilerToVM::RiConstantPool_lookupType"); | 405 TRACE_graal_3("CompilerToVM::ConstantPool_lookupType"); |
406 VM_ENTRY_MARK; | 406 VM_ENTRY_MARK; |
407 | 407 |
408 constantPoolOop cp = instanceKlass::cast(java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(type)))->constants(); | 408 constantPoolOop cp = instanceKlass::cast(java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(type)))->constants(); |
409 Handle result = GraalCompiler::get_RiType(cp, index, cp->pool_holder(), CHECK_NULL); | 409 Handle result = GraalCompiler::get_JavaType(cp, index, cp->pool_holder(), CHECK_NULL); |
410 return JNIHandles::make_local(THREAD, result()); | 410 return JNIHandles::make_local(THREAD, result()); |
411 } | 411 } |
412 | 412 |
413 // public void RiConstantPool_loadReferencedType(long vmId, int cpi); | 413 // public void ConstantPool_loadReferencedType(long vmId, int cpi); |
414 JNIEXPORT void JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiConstantPool_1loadReferencedType(JNIEnv *env, jobject, jobject type, jint index, jbyte op) { | 414 JNIEXPORT void JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_ConstantPool_1loadReferencedType(JNIEnv *env, jobject, jobject type, jint index, jbyte op) { |
415 TRACE_graal_3("CompilerToVM::RiConstantPool_loadReferencedType"); | 415 TRACE_graal_3("CompilerToVM::ConstantPool_loadReferencedType"); |
416 VM_ENTRY_MARK; | 416 VM_ENTRY_MARK; |
417 | 417 |
418 constantPoolOop cp = instanceKlass::cast(java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(type)))->constants(); | 418 constantPoolOop cp = instanceKlass::cast(java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(type)))->constants(); |
419 int byteCode = (op & 0xFF); | 419 int byteCode = (op & 0xFF); |
420 if (byteCode != Bytecodes::_checkcast && byteCode != Bytecodes::_instanceof && byteCode != Bytecodes::_new && byteCode != Bytecodes::_anewarray | 420 if (byteCode != Bytecodes::_checkcast && byteCode != Bytecodes::_instanceof && byteCode != Bytecodes::_new && byteCode != Bytecodes::_anewarray |
421 && byteCode != Bytecodes::_multianewarray && byteCode != Bytecodes::_ldc && byteCode != Bytecodes::_ldc_w && byteCode != Bytecodes::_ldc2_w) | 421 && byteCode != Bytecodes::_multianewarray && byteCode != Bytecodes::_ldc && byteCode != Bytecodes::_ldc_w && byteCode != Bytecodes::_ldc2_w) |
422 { | 422 { |
423 index = cp->remap_instruction_operand_from_cache(GraalCompiler::to_cp_index_u2(index)); | 423 index = cp->remap_instruction_operand_from_cache(GraalCompiler::to_cp_index_u2(index)); |
434 instanceKlass::cast(klass)->initialize(CHECK); | 434 instanceKlass::cast(klass)->initialize(CHECK); |
435 } | 435 } |
436 } | 436 } |
437 } | 437 } |
438 | 438 |
439 // public RiField RiConstantPool_lookupField(long vmId, int cpi); | 439 // public JavaField ConstantPool_lookupField(long vmId, int cpi); |
440 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiConstantPool_1lookupField(JNIEnv *env, jobject, jobject constantPoolHolder, jint index, jbyte byteCode) { | 440 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_ConstantPool_1lookupField(JNIEnv *env, jobject, jobject constantPoolHolder, jint index, jbyte byteCode) { |
441 TRACE_graal_3("CompilerToVM::RiConstantPool_lookupField"); | 441 TRACE_graal_3("CompilerToVM::ConstantPool_lookupField"); |
442 VM_ENTRY_MARK; | 442 VM_ENTRY_MARK; |
443 ResourceMark rm; | 443 ResourceMark rm; |
444 | 444 |
445 index = GraalCompiler::to_cp_index_u2(index); | 445 index = GraalCompiler::to_cp_index_u2(index); |
446 constantPoolHandle cp = instanceKlass::cast(java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(constantPoolHolder)))->constants(); | 446 constantPoolHandle cp = instanceKlass::cast(java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(constantPoolHolder)))->constants(); |
447 | 447 |
448 int nt_index = cp->name_and_type_ref_index_at(index); | 448 int nt_index = cp->name_and_type_ref_index_at(index); |
449 int sig_index = cp->signature_ref_index_at(nt_index); | 449 int sig_index = cp->signature_ref_index_at(nt_index); |
450 Symbol* signature = cp->symbol_at(sig_index); | 450 Symbol* signature = cp->symbol_at(sig_index); |
451 int name_index = cp->name_ref_index_at(nt_index); | 451 int name_index = cp->name_ref_index_at(nt_index); |
452 Symbol* name = cp->symbol_at(name_index); | 452 Symbol* name = cp->symbol_at(name_index); |
453 int holder_index = cp->klass_ref_index_at(index); | 453 int holder_index = cp->klass_ref_index_at(index); |
454 Handle holder = GraalCompiler::get_RiType(cp, holder_index, cp->pool_holder(), CHECK_NULL); | 454 Handle holder = GraalCompiler::get_JavaType(cp, holder_index, cp->pool_holder(), CHECK_NULL); |
455 instanceKlassHandle holder_klass; | 455 instanceKlassHandle holder_klass; |
456 | 456 |
457 Bytecodes::Code code = (Bytecodes::Code)(((int) byteCode) & 0xFF); | 457 Bytecodes::Code code = (Bytecodes::Code)(((int) byteCode) & 0xFF); |
458 int offset = -1; | 458 int offset = -1; |
459 AccessFlags flags; | 459 AccessFlags flags; |
460 BasicType basic_type; | 460 BasicType basic_type; |
461 if (holder->klass() == SystemDictionary::HotSpotTypeResolved_klass()) { | 461 if (holder->klass() == SystemDictionary::HotSpotResolvedJavaType_klass()) { |
462 FieldAccessInfo result; | 462 FieldAccessInfo result; |
463 LinkResolver::resolve_field(result, cp, index, | 463 LinkResolver::resolve_field(result, cp, index, |
464 Bytecodes::java_code(code), | 464 Bytecodes::java_code(code), |
465 true, false, Thread::current()); | 465 true, false, Thread::current()); |
466 if (HAS_PENDING_EXCEPTION) { | 466 if (HAS_PENDING_EXCEPTION) { |
468 } else { | 468 } else { |
469 offset = result.field_offset(); | 469 offset = result.field_offset(); |
470 flags = result.access_flags(); | 470 flags = result.access_flags(); |
471 holder_klass = result.klass()->as_klassOop(); | 471 holder_klass = result.klass()->as_klassOop(); |
472 basic_type = result.field_type(); | 472 basic_type = result.field_type(); |
473 holder = GraalCompiler::get_RiType(holder_klass, CHECK_NULL); | 473 holder = GraalCompiler::get_JavaType(holder_klass, CHECK_NULL); |
474 } | 474 } |
475 } | 475 } |
476 | 476 |
477 Handle type = GraalCompiler::get_RiTypeFromSignature(cp, sig_index, cp->pool_holder(), CHECK_NULL); | 477 Handle type = GraalCompiler::get_JavaTypeFromSignature(cp, sig_index, cp->pool_holder(), CHECK_NULL); |
478 Handle field_handle = GraalCompiler::get_RiField(offset, flags.as_int(), name, holder, type, code, THREAD); | 478 Handle field_handle = GraalCompiler::get_JavaField(offset, flags.as_int(), name, holder, type, code, THREAD); |
479 | 479 |
480 oop constant_object = NULL; | 480 oop constant_object = NULL; |
481 // Check to see if the field is constant. | 481 // Check to see if the field is constant. |
482 if (!holder_klass.is_null() && holder_klass->is_initialized() && flags.is_final() && flags.is_static()) { | 482 if (!holder_klass.is_null() && holder_klass->is_initialized() && flags.is_final() && flags.is_static()) { |
483 // This field just may be constant. The only cases where it will | 483 // This field just may be constant. The only cases where it will |
505 if (ok) { | 505 if (ok) { |
506 Handle mirror = holder_klass->java_mirror(); | 506 Handle mirror = holder_klass->java_mirror(); |
507 switch(basic_type) { | 507 switch(basic_type) { |
508 case T_OBJECT: | 508 case T_OBJECT: |
509 case T_ARRAY: | 509 case T_ARRAY: |
510 constant_object = VMToCompiler::createCiConstantObject(mirror->obj_field(offset), CHECK_0); | 510 constant_object = VMToCompiler::createConstantObject(mirror->obj_field(offset), CHECK_0); |
511 break; | 511 break; |
512 case T_DOUBLE: | 512 case T_DOUBLE: |
513 constant_object = VMToCompiler::createCiConstantDouble(mirror->double_field(offset), CHECK_0); | 513 constant_object = VMToCompiler::createConstantDouble(mirror->double_field(offset), CHECK_0); |
514 break; | 514 break; |
515 case T_FLOAT: | 515 case T_FLOAT: |
516 constant_object = VMToCompiler::createCiConstantFloat(mirror->float_field(offset), CHECK_0); | 516 constant_object = VMToCompiler::createConstantFloat(mirror->float_field(offset), CHECK_0); |
517 break; | 517 break; |
518 case T_LONG: | 518 case T_LONG: |
519 constant_object = VMToCompiler::createCiConstant(CiKind::Long(), mirror->long_field(offset), CHECK_0); | 519 constant_object = VMToCompiler::createConstant(Kind::Long(), mirror->long_field(offset), CHECK_0); |
520 break; | 520 break; |
521 case T_INT: | 521 case T_INT: |
522 constant_object = VMToCompiler::createCiConstant(CiKind::Int(), mirror->int_field(offset), CHECK_0); | 522 constant_object = VMToCompiler::createConstant(Kind::Int(), mirror->int_field(offset), CHECK_0); |
523 break; | 523 break; |
524 case T_SHORT: | 524 case T_SHORT: |
525 constant_object = VMToCompiler::createCiConstant(CiKind::Short(), mirror->short_field(offset), CHECK_0); | 525 constant_object = VMToCompiler::createConstant(Kind::Short(), mirror->short_field(offset), CHECK_0); |
526 break; | 526 break; |
527 case T_CHAR: | 527 case T_CHAR: |
528 constant_object = VMToCompiler::createCiConstant(CiKind::Char(), mirror->char_field(offset), CHECK_0); | 528 constant_object = VMToCompiler::createConstant(Kind::Char(), mirror->char_field(offset), CHECK_0); |
529 break; | 529 break; |
530 case T_BYTE: | 530 case T_BYTE: |
531 constant_object = VMToCompiler::createCiConstant(CiKind::Byte(), mirror->byte_field(offset), CHECK_0); | 531 constant_object = VMToCompiler::createConstant(Kind::Byte(), mirror->byte_field(offset), CHECK_0); |
532 break; | 532 break; |
533 case T_BOOLEAN: | 533 case T_BOOLEAN: |
534 constant_object = VMToCompiler::createCiConstant(CiKind::Boolean(), mirror->bool_field(offset), CHECK_0); | 534 constant_object = VMToCompiler::createConstant(Kind::Boolean(), mirror->bool_field(offset), CHECK_0); |
535 break; | 535 break; |
536 default: | 536 default: |
537 fatal("Unhandled constant"); | 537 fatal("Unhandled constant"); |
538 break; | 538 break; |
539 } | 539 } |
540 } | 540 } |
541 } | 541 } |
542 if (constant_object != NULL) { | 542 if (constant_object != NULL) { |
543 HotSpotField::set_constant(field_handle, constant_object); | 543 HotSpotResolvedJavaField::set_constant(field_handle, constant_object); |
544 } | 544 } |
545 return JNIHandles::make_local(THREAD, field_handle()); | 545 return JNIHandles::make_local(THREAD, field_handle()); |
546 } | 546 } |
547 | 547 |
548 // public RiMethod RiType_resolveMethodImpl(HotSpotTypeResolved klass, String name, String signature); | 548 // public JavaMethod JavaType_resolveMethodImpl(HotSpotResolvedJavaType klass, String name, String signature); |
549 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiType_3resolveMethodImpl(JNIEnv *, jobject, jobject resolved_type, jstring name, jstring signature) { | 549 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaType_3resolveMethodImpl(JNIEnv *, jobject, jobject resolved_type, jstring name, jstring signature) { |
550 TRACE_graal_3("CompilerToVM::RiType_resolveMethodImpl"); | 550 TRACE_graal_3("CompilerToVM::JavaType_resolveMethodImpl"); |
551 VM_ENTRY_MARK; | 551 VM_ENTRY_MARK; |
552 | 552 |
553 assert(JNIHandles::resolve(resolved_type) != NULL, ""); | 553 assert(JNIHandles::resolve(resolved_type) != NULL, ""); |
554 klassOop klass = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(resolved_type)); | 554 klassOop klass = java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(resolved_type)); |
555 Symbol* name_symbol = VmIds::toSymbol(name); | 555 Symbol* name_symbol = VmIds::toSymbol(name); |
556 Symbol* signature_symbol = VmIds::toSymbol(signature); | 556 Symbol* signature_symbol = VmIds::toSymbol(signature); |
557 methodHandle method = klass->klass_part()->lookup_method(name_symbol, signature_symbol); | 557 methodHandle method = klass->klass_part()->lookup_method(name_symbol, signature_symbol); |
558 if (method == NULL) { | 558 if (method == NULL) { |
559 if (TraceGraal >= 3) { | 559 if (TraceGraal >= 3) { |
560 ResourceMark rm; | 560 ResourceMark rm; |
561 tty->print_cr("Could not resolve method %s %s on klass %s", name_symbol->as_C_string(), signature_symbol->as_C_string(), klass->klass_part()->name()->as_C_string()); | 561 tty->print_cr("Could not resolve method %s %s on klass %s", name_symbol->as_C_string(), signature_symbol->as_C_string(), klass->klass_part()->name()->as_C_string()); |
562 } | 562 } |
563 return NULL; | 563 return NULL; |
564 } | 564 } |
565 Handle ret = GraalCompiler::createHotSpotMethodResolved(method, CHECK_NULL); | 565 Handle ret = GraalCompiler::createHotSpotResolvedJavaMethod(method, CHECK_NULL); |
566 return JNIHandles::make_local(THREAD, ret()); | 566 return JNIHandles::make_local(THREAD, ret()); |
567 } | 567 } |
568 | 568 |
569 // public boolean RiType_isSubtypeOf(HotSpotTypeResolved klass, RiType other); | 569 // public boolean JavaType_isSubtypeOf(HotSpotResolvedJavaType klass, JavaType other); |
570 JNIEXPORT jboolean JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiType_2isSubtypeOf(JNIEnv *, jobject, jobject klass, jobject jother) { | 570 JNIEXPORT jboolean JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaType_2isSubtypeOf(JNIEnv *, jobject, jobject klass, jobject jother) { |
571 TRACE_graal_3("CompilerToVM::RiType_isSubtypeOf"); | 571 TRACE_graal_3("CompilerToVM::JavaType_isSubtypeOf"); |
572 VM_ENTRY_MARK; | 572 VM_ENTRY_MARK; |
573 | 573 |
574 oop other = JNIHandles::resolve(jother); | 574 oop other = JNIHandles::resolve(jother); |
575 assert(other->is_a(HotSpotTypeResolved::klass()), "resolved hotspot type expected"); | 575 assert(other->is_a(HotSpotResolvedJavaType::klass()), "resolved hotspot type expected"); |
576 assert(JNIHandles::resolve(klass) != NULL, ""); | 576 assert(JNIHandles::resolve(klass) != NULL, ""); |
577 klassOop thisKlass = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(klass)); | 577 klassOop thisKlass = java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(klass)); |
578 klassOop otherKlass = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(other)); | 578 klassOop otherKlass = java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(other)); |
579 if (thisKlass->klass_part()->oop_is_instance_slow()) { | 579 if (thisKlass->klass_part()->oop_is_instance_slow()) { |
580 return instanceKlass::cast(thisKlass)->is_subtype_of(otherKlass); | 580 return instanceKlass::cast(thisKlass)->is_subtype_of(otherKlass); |
581 } else if (thisKlass->klass_part()->oop_is_array()) { | 581 } else if (thisKlass->klass_part()->oop_is_array()) { |
582 return arrayKlass::cast(thisKlass)->is_subtype_of(otherKlass); | 582 return arrayKlass::cast(thisKlass)->is_subtype_of(otherKlass); |
583 } else { | 583 } else { |
584 fatal("unexpected class type"); | 584 fatal("unexpected class type"); |
585 return false; | 585 return false; |
586 } | 586 } |
587 } | 587 } |
588 | 588 |
589 // public RiType RiType_leastCommonAncestor(HotSpotTypeResolved thisType, HotSpotTypeResolved otherType); | 589 // public JavaType JavaType_leastCommonAncestor(HotSpotResolvedJavaType thisType, HotSpotResolvedJavaType otherType); |
590 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiType_2leastCommonAncestor(JNIEnv *, jobject, jobject this_type, jobject other_type) { | 590 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaType_2leastCommonAncestor(JNIEnv *, jobject, jobject this_type, jobject other_type) { |
591 TRACE_graal_3("CompilerToVM::RiType_leastCommonAncestor"); | 591 TRACE_graal_3("CompilerToVM::JavaType_leastCommonAncestor"); |
592 VM_ENTRY_MARK; | 592 VM_ENTRY_MARK; |
593 | 593 |
594 Klass* this_klass = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(this_type))->klass_part(); | 594 Klass* this_klass = java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(this_type))->klass_part(); |
595 Klass* other_klass = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(other_type))->klass_part(); | 595 Klass* other_klass = java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(other_type))->klass_part(); |
596 Klass* lca = this_klass->LCA(other_klass); | 596 Klass* lca = this_klass->LCA(other_klass); |
597 | 597 |
598 return JNIHandles::make_local(GraalCompiler::get_RiType(lca, THREAD)()); | 598 return JNIHandles::make_local(GraalCompiler::get_JavaType(lca, THREAD)()); |
599 } | 599 } |
600 | 600 |
601 // public RiType RiType_componentType(HotSpotResolvedType klass); | 601 // public JavaType JavaType_componentType(HotSpotResolvedType klass); |
602 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiType_1componentType(JNIEnv *, jobject, jobject klass) { | 602 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaType_1componentType(JNIEnv *, jobject, jobject klass) { |
603 TRACE_graal_3("CompilerToVM::RiType_componentType"); | 603 TRACE_graal_3("CompilerToVM::JavaType_componentType"); |
604 VM_ENTRY_MARK; | 604 VM_ENTRY_MARK; |
605 KlassHandle array_klass = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(klass)); | 605 KlassHandle array_klass = java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(klass)); |
606 if(array_klass->oop_is_typeArray()) { | 606 if(array_klass->oop_is_typeArray()) { |
607 BasicType t = typeArrayKlass::cast(array_klass())->element_type(); | 607 BasicType t = typeArrayKlass::cast(array_klass())->element_type(); |
608 oop primitive_type = VMToCompiler::createRiTypePrimitive((int) t, CHECK_NULL); | 608 oop primitive_type = VMToCompiler::createPrimitiveJavaType((int) t, CHECK_NULL); |
609 return JNIHandles::make_local(primitive_type); | 609 return JNIHandles::make_local(primitive_type); |
610 } | 610 } |
611 assert(array_klass->oop_is_objArray(), "just checking"); | 611 assert(array_klass->oop_is_objArray(), "just checking"); |
612 klassOop element_type = objArrayKlass::cast(array_klass())->element_klass(); | 612 klassOop element_type = objArrayKlass::cast(array_klass())->element_klass(); |
613 assert(JNIHandles::resolve(klass) != NULL, ""); | 613 assert(JNIHandles::resolve(klass) != NULL, ""); |
614 return JNIHandles::make_local(GraalCompiler::get_RiType(element_type, THREAD)()); | 614 return JNIHandles::make_local(GraalCompiler::get_JavaType(element_type, THREAD)()); |
615 } | 615 } |
616 | 616 |
617 // public RiType RiType_superType(HotSpotResolvedType klass); | 617 // public JavaType JavaType_superType(HotSpotResolvedType klass); |
618 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiType_1superType(JNIEnv *, jobject, jobject klass) { | 618 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaType_1superType(JNIEnv *, jobject, jobject klass) { |
619 TRACE_graal_3("CompilerToVM::RiType_superType"); | 619 TRACE_graal_3("CompilerToVM::JavaType_superType"); |
620 VM_ENTRY_MARK; | 620 VM_ENTRY_MARK; |
621 KlassHandle klass_handle(java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(klass))); | 621 KlassHandle klass_handle(java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(klass))); |
622 klassOop k; | 622 klassOop k; |
623 | 623 |
624 if (klass_handle->oop_is_array()) { | 624 if (klass_handle->oop_is_array()) { |
625 k = SystemDictionary::Object_klass(); | 625 k = SystemDictionary::Object_klass(); |
626 } else { | 626 } else { |
627 guarantee(klass_handle->oop_is_instance(), "must be instance klass"); | 627 guarantee(klass_handle->oop_is_instance(), "must be instance klass"); |
628 k = klass_handle->super(); | 628 k = klass_handle->super(); |
629 } | 629 } |
630 | 630 |
631 if (k != NULL) { | 631 if (k != NULL) { |
632 return JNIHandles::make_local(GraalCompiler::get_RiType(k, THREAD)()); | 632 return JNIHandles::make_local(GraalCompiler::get_JavaType(k, THREAD)()); |
633 } else { | 633 } else { |
634 return NULL; | 634 return NULL; |
635 } | 635 } |
636 } | 636 } |
637 | 637 |
638 // public RiType RiType_uniqueConcreteSubtype(HotSpotResolvedType klass); | 638 // public JavaType JavaType_uniqueConcreteSubtype(HotSpotResolvedType klass); |
639 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiType_1uniqueConcreteSubtype(JNIEnv *, jobject, jobject klass) { | 639 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaType_1uniqueConcreteSubtype(JNIEnv *, jobject, jobject klass) { |
640 TRACE_graal_3("CompilerToVM::RiType_uniqueConcreteSubtype"); | 640 TRACE_graal_3("CompilerToVM::JavaType_uniqueConcreteSubtype"); |
641 VM_ENTRY_MARK; | 641 VM_ENTRY_MARK; |
642 KlassHandle klass_handle(java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(klass))); | 642 KlassHandle klass_handle(java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(klass))); |
643 Klass *up_cast = klass_handle->up_cast_abstract(); | 643 Klass *up_cast = klass_handle->up_cast_abstract(); |
644 if (up_cast->is_leaf_class()) { | 644 if (up_cast->is_leaf_class()) { |
645 return JNIHandles::make_local(GraalCompiler::get_RiType(up_cast, THREAD)()); | 645 return JNIHandles::make_local(GraalCompiler::get_JavaType(up_cast, THREAD)()); |
646 } | 646 } |
647 return NULL; | 647 return NULL; |
648 } | 648 } |
649 | 649 |
650 // public bool RiType_isInitialized(HotSpotResolvedType klass); | 650 // public bool JavaType_isInitialized(HotSpotResolvedType klass); |
651 JNIEXPORT jboolean JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiType_1isInitialized(JNIEnv *, jobject, jobject hotspot_klass) { | 651 JNIEXPORT jboolean JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaType_1isInitialized(JNIEnv *, jobject, jobject hotspot_klass) { |
652 TRACE_graal_3("CompilerToVM::RiType_isInitialized"); | 652 TRACE_graal_3("CompilerToVM::JavaType_isInitialized"); |
653 klassOop klass = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(hotspot_klass)); | 653 klassOop klass = java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(hotspot_klass)); |
654 assert(klass != NULL, "method must not be called for primitive types"); | 654 assert(klass != NULL, "method must not be called for primitive types"); |
655 return instanceKlass::cast(klass)->is_initialized(); | 655 return instanceKlass::cast(klass)->is_initialized(); |
656 } | 656 } |
657 | 657 |
658 // public RiType RiType_arrayOf(HotSpotTypeResolved klass); | 658 // public JavaType JavaType_arrayOf(HotSpotResolvedJavaType klass); |
659 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiType_1arrayOf(JNIEnv *, jobject, jobject klass) { | 659 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaType_1arrayOf(JNIEnv *, jobject, jobject klass) { |
660 TRACE_graal_3("CompilerToVM::RiType_arrayOf"); | 660 TRACE_graal_3("CompilerToVM::JavaType_arrayOf"); |
661 VM_ENTRY_MARK; | 661 VM_ENTRY_MARK; |
662 | 662 |
663 KlassHandle klass_handle(java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(klass))); | 663 KlassHandle klass_handle(java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(klass))); |
664 KlassHandle arr = klass_handle->array_klass(THREAD); | 664 KlassHandle arr = klass_handle->array_klass(THREAD); |
665 Handle name = VmIds::toString<Handle>(arr->name(), CHECK_NULL); | 665 Handle name = VmIds::toString<Handle>(arr->name(), CHECK_NULL); |
666 assert(arr->oop_is_array(), ""); | 666 assert(arr->oop_is_array(), ""); |
667 return JNIHandles::make_local(THREAD, GraalCompiler::createHotSpotTypeResolved(arr, name, THREAD)()); | 667 return JNIHandles::make_local(THREAD, GraalCompiler::createHotSpotResolvedJavaType(arr, name, THREAD)()); |
668 } | 668 } |
669 | 669 |
670 // public ResolvedJavaField[] RiType_fields(HotSpotTypeResolved klass); | 670 // public ResolvedJavaField[] JavaType_fields(HotSpotResolvedJavaType klass); |
671 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiType_1fields(JNIEnv *, jobject, jobject klass) { | 671 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaType_1fields(JNIEnv *, jobject, jobject klass) { |
672 TRACE_graal_3("CompilerToVM::RiType_fields"); | 672 TRACE_graal_3("CompilerToVM::JavaType_fields"); |
673 VM_ENTRY_MARK; | 673 VM_ENTRY_MARK; |
674 ResourceMark rm; | 674 ResourceMark rm; |
675 | 675 |
676 instanceKlassHandle k = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(klass)); | 676 instanceKlassHandle k = java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(klass)); |
677 class MyFieldClosure : public FieldClosure { | 677 class MyFieldClosure : public FieldClosure { |
678 public: | 678 public: |
679 instanceKlassHandle _holder; | 679 instanceKlassHandle _holder; |
680 Handle _resolved_type_holder; | 680 Handle _resolved_type_holder; |
681 GrowableArray<Handle> _field_array; | 681 GrowableArray<Handle> _field_array; |
683 MyFieldClosure(instanceKlassHandle& holder, Handle resolved_type_holder) : _holder(holder), _resolved_type_holder(resolved_type_holder) { } | 683 MyFieldClosure(instanceKlassHandle& holder, Handle resolved_type_holder) : _holder(holder), _resolved_type_holder(resolved_type_holder) { } |
684 | 684 |
685 virtual void do_field(fieldDescriptor* fd) { | 685 virtual void do_field(fieldDescriptor* fd) { |
686 if (!Thread::current()->has_pending_exception()) { | 686 if (!Thread::current()->has_pending_exception()) { |
687 if (fd->field_holder() == _holder()) { | 687 if (fd->field_holder() == _holder()) { |
688 Handle type = GraalCompiler::get_RiTypeFromSignature(fd->constants(), fd->signature_index(), fd->field_holder(), Thread::current()); | 688 Handle type = GraalCompiler::get_JavaTypeFromSignature(fd->constants(), fd->signature_index(), fd->field_holder(), Thread::current()); |
689 Handle field = VMToCompiler::createRiField(_resolved_type_holder, VmIds::toString<Handle>(fd->name(), Thread::current()), type, fd->offset(), fd->access_flags().as_int(), Thread::current()); | 689 Handle field = VMToCompiler::createJavaField(_resolved_type_holder, VmIds::toString<Handle>(fd->name(), Thread::current()), type, fd->offset(), fd->access_flags().as_int(), Thread::current()); |
690 _field_array.append(field()); | 690 _field_array.append(field()); |
691 } | 691 } |
692 } | 692 } |
693 } | 693 } |
694 }; | 694 }; |
695 MyFieldClosure closure(k, JNIHandles::resolve(klass)); | 695 MyFieldClosure closure(k, JNIHandles::resolve(klass)); |
696 k->do_nonstatic_fields(&closure); | 696 k->do_nonstatic_fields(&closure); |
697 objArrayHandle field_array = oopFactory::new_objArray(SystemDictionary::RiResolvedField_klass(), closure._field_array.length(), CHECK_NULL); | 697 objArrayHandle field_array = oopFactory::new_objArray(SystemDictionary::ResolvedJavaField_klass(), closure._field_array.length(), CHECK_NULL); |
698 for (int i=0; i<closure._field_array.length(); ++i) { | 698 for (int i=0; i<closure._field_array.length(); ++i) { |
699 field_array->obj_at_put(i, closure._field_array.at(i)()); | 699 field_array->obj_at_put(i, closure._field_array.at(i)()); |
700 } | 700 } |
701 return JNIHandles::make_local(field_array()); | 701 return JNIHandles::make_local(field_array()); |
702 } | 702 } |
703 | 703 |
704 // public RiType getPrimitiveArrayType(CiKind kind); | 704 // public JavaType getPrimitiveArrayType(Kind kind); |
705 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_getPrimitiveArrayType(JNIEnv *env, jobject, jobject kind) { | 705 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_getPrimitiveArrayType(JNIEnv *env, jobject, jobject kind) { |
706 TRACE_graal_3("CompilerToVM::getPrimitiveArrayType"); | 706 TRACE_graal_3("CompilerToVM::getPrimitiveArrayType"); |
707 VM_ENTRY_MARK; | 707 VM_ENTRY_MARK; |
708 BasicType type = GraalCompiler::kindToBasicType(CiKind::typeChar(kind)); | 708 BasicType type = GraalCompiler::kindToBasicType(Kind::typeChar(kind)); |
709 assert(type != T_OBJECT, "primitive type expecteds"); | 709 assert(type != T_OBJECT, "primitive type expecteds"); |
710 Handle result = GraalCompiler::get_RiType(Universe::typeArrayKlassObj(type), CHECK_NULL); | 710 Handle result = GraalCompiler::get_JavaType(Universe::typeArrayKlassObj(type), CHECK_NULL); |
711 return JNIHandles::make_local(THREAD, result()); | 711 return JNIHandles::make_local(THREAD, result()); |
712 } | 712 } |
713 | 713 |
714 // public long getMaxCallTargetOffset(CiRuntimeCall rtcall); | 714 // public long getMaxCallTargetOffset(RuntimeCall rtcall); |
715 JNIEXPORT jlong JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_getMaxCallTargetOffset(JNIEnv *env, jobject, jobject rtcall) { | 715 JNIEXPORT jlong JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_getMaxCallTargetOffset(JNIEnv *env, jobject, jobject rtcall) { |
716 TRACE_graal_3("CompilerToVM::getMaxCallTargetOffset"); | 716 TRACE_graal_3("CompilerToVM::getMaxCallTargetOffset"); |
717 VM_ENTRY_MARK; | 717 VM_ENTRY_MARK; |
718 oop call = JNIHandles::resolve(rtcall); | 718 oop call = JNIHandles::resolve(rtcall); |
719 address target_addr = CodeInstaller::runtime_call_target_address(call); | 719 address target_addr = CodeInstaller::runtime_call_target_address(call); |
723 return MAX2(ABS(off_low), ABS(off_high)); | 723 return MAX2(ABS(off_low), ABS(off_high)); |
724 } | 724 } |
725 return -1; | 725 return -1; |
726 } | 726 } |
727 | 727 |
728 // public RiType getType(Class<?> javaClass); | 728 // public JavaType getType(Class<?> javaClass); |
729 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_getType(JNIEnv *env, jobject, jobject javaClass) { | 729 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_getType(JNIEnv *env, jobject, jobject javaClass) { |
730 TRACE_graal_3("CompilerToVM::getType"); | 730 TRACE_graal_3("CompilerToVM::getType"); |
731 VM_ENTRY_MARK; | 731 VM_ENTRY_MARK; |
732 oop javaClassOop = JNIHandles::resolve(javaClass); | 732 oop javaClassOop = JNIHandles::resolve(javaClass); |
733 if (javaClassOop == NULL) { | 733 if (javaClassOop == NULL) { |
734 fatal("argument to CompilerToVM.getType must not be NULL"); | 734 fatal("argument to CompilerToVM.getType must not be NULL"); |
735 return NULL; | 735 return NULL; |
736 } else if (java_lang_Class::is_primitive(javaClassOop)) { | 736 } else if (java_lang_Class::is_primitive(javaClassOop)) { |
737 BasicType basicType = java_lang_Class::primitive_type(javaClassOop); | 737 BasicType basicType = java_lang_Class::primitive_type(javaClassOop); |
738 return JNIHandles::make_local(THREAD, VMToCompiler::createRiTypePrimitive((int) basicType, THREAD)); | 738 return JNIHandles::make_local(THREAD, VMToCompiler::createPrimitiveJavaType((int) basicType, THREAD)); |
739 } else { | 739 } else { |
740 KlassHandle klass = java_lang_Class::as_klassOop(javaClassOop); | 740 KlassHandle klass = java_lang_Class::as_klassOop(javaClassOop); |
741 Handle name = java_lang_String::create_from_symbol(klass->name(), CHECK_NULL); | 741 Handle name = java_lang_String::create_from_symbol(klass->name(), CHECK_NULL); |
742 | 742 |
743 Handle type = GraalCompiler::createHotSpotTypeResolved(klass, name, CHECK_NULL); | 743 Handle type = GraalCompiler::createHotSpotResolvedJavaType(klass, name, CHECK_NULL); |
744 return JNIHandles::make_local(THREAD, type()); | 744 return JNIHandles::make_local(THREAD, type()); |
745 } | 745 } |
746 } | 746 } |
747 | 747 |
748 | 748 |
927 | 927 |
928 Handle result = java_lang_String::create_from_platform_dependent_str(st.as_string(), CHECK_NULL); | 928 Handle result = java_lang_String::create_from_platform_dependent_str(st.as_string(), CHECK_NULL); |
929 return JNIHandles::make_local(result()); | 929 return JNIHandles::make_local(result()); |
930 } | 930 } |
931 | 931 |
932 // public String disassembleJava(HotSpotMethodResolved method); | 932 // public String disassembleJava(HotSpotResolvedJavaMethod method); |
933 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_disassembleJava(JNIEnv *env, jobject, jobject hotspot_method) { | 933 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_disassembleJava(JNIEnv *env, jobject, jobject hotspot_method) { |
934 TRACE_graal_3("CompilerToVM::disassembleJava"); | 934 TRACE_graal_3("CompilerToVM::disassembleJava"); |
935 | 935 |
936 // Important: The bytecode printing functions are all NOT PRODUCT code, so this method returns an empty string for a product VM build. | 936 // Important: The bytecode printing functions are all NOT PRODUCT code, so this method returns an empty string for a product VM build. |
937 | 937 |
946 | 946 |
947 Handle result = java_lang_String::create_from_platform_dependent_str(st.as_string(), CHECK_NULL); | 947 Handle result = java_lang_String::create_from_platform_dependent_str(st.as_string(), CHECK_NULL); |
948 return JNIHandles::make_local(result()); | 948 return JNIHandles::make_local(result()); |
949 } | 949 } |
950 | 950 |
951 // public StackTraceElement RiMethod_toStackTraceElement(HotSpotMethodResolved method, int bci); | 951 // public StackTraceElement JavaMethod_toStackTraceElement(HotSpotResolvedJavaMethod method, int bci); |
952 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiMethod_1toStackTraceElement(JNIEnv *env, jobject, jobject hotspot_method, int bci) { | 952 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaMethod_1toStackTraceElement(JNIEnv *env, jobject, jobject hotspot_method, int bci) { |
953 TRACE_graal_3("CompilerToVM::RiMethod_toStackTraceElement"); | 953 TRACE_graal_3("CompilerToVM::JavaMethod_toStackTraceElement"); |
954 | 954 |
955 VM_ENTRY_MARK; | 955 VM_ENTRY_MARK; |
956 ResourceMark rm; | 956 ResourceMark rm; |
957 HandleMark hm; | 957 HandleMark hm; |
958 | 958 |
1060 JavaCalls::call(&result, actualMethod, nm, &args, CHECK_NULL); | 1060 JavaCalls::call(&result, actualMethod, nm, &args, CHECK_NULL); |
1061 | 1061 |
1062 return JNIHandles::make_local((oop) result.get_jobject()); | 1062 return JNIHandles::make_local((oop) result.get_jobject()); |
1063 } | 1063 } |
1064 | 1064 |
1065 // public native int RiMethod_vtableEntryOffset(HotSpotMethodResolved method); | 1065 // public native int JavaMethod_vtableEntryOffset(HotSpotResolvedJavaMethod method); |
1066 JNIEXPORT jint JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_RiMethod_vtableEntryOffset(JNIEnv *, jobject, jobject hotspot_method) { | 1066 JNIEXPORT jint JNICALL Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_JavaMethod_vtableEntryOffset(JNIEnv *, jobject, jobject hotspot_method) { |
1067 TRACE_graal_3("CompilerToVM::RiMethod_vtableEntryOffset"); | 1067 TRACE_graal_3("CompilerToVM::JavaMethod_vtableEntryOffset"); |
1068 | 1068 |
1069 methodOop method = getMethodFromHotSpotMethod(hotspot_method); | 1069 methodOop method = getMethodFromHotSpotMethod(hotspot_method); |
1070 assert(!instanceKlass::cast(method->method_holder())->is_interface(), "vtableEntryOffset cannot be called for interface methods"); | 1070 assert(!instanceKlass::cast(method->method_holder())->is_interface(), "vtableEntryOffset cannot be called for interface methods"); |
1071 | 1071 |
1072 // get entry offset in words | 1072 // get entry offset in words |
1120 #define CC (char*) /*cast a literal from (const char*)*/ | 1120 #define CC (char*) /*cast a literal from (const char*)*/ |
1121 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &(Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_##f)) | 1121 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &(Java_com_oracle_graal_hotspot_bridge_CompilerToVMImpl_##f)) |
1122 | 1122 |
1123 #define PROXY "J" | 1123 #define PROXY "J" |
1124 #define TYPE "Lcom/oracle/graal/api/meta/JavaType;" | 1124 #define TYPE "Lcom/oracle/graal/api/meta/JavaType;" |
1125 #define RESOLVED_TYPE "Lcom/oracle/graal/hotspot/meta/HotSpotTypeResolved;" | 1125 #define RESOLVED_TYPE "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedJavaType;" |
1126 #define METHOD "Lcom/oracle/graal/api/meta/JavaMethod;" | 1126 #define METHOD "Lcom/oracle/graal/api/meta/JavaMethod;" |
1127 #define RESOLVED_METHOD "Lcom/oracle/graal/hotspot/meta/HotSpotMethodResolved;" | 1127 #define RESOLVED_METHOD "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod;" |
1128 #define REFLECT_METHOD "Ljava/lang/reflect/Method;" | 1128 #define REFLECT_METHOD "Ljava/lang/reflect/Method;" |
1129 #define SIGNATURE "Lcom/oracle/graal/api/meta/Signature;" | 1129 #define SIGNATURE "Lcom/oracle/graal/api/meta/Signature;" |
1130 #define FIELD "Lcom/oracle/graal/api/meta/JavaField;" | 1130 #define FIELD "Lcom/oracle/graal/api/meta/JavaField;" |
1131 #define RESOLVED_FIELD "Lcom/oracle/graal/api/meta/ResolvedJavaField;" | 1131 #define RESOLVED_FIELD "Lcom/oracle/graal/api/meta/ResolvedJavaField;" |
1132 #define CONSTANT_POOL "Lcom/oracle/graal/api/meta/ConstantPool;" | 1132 #define CONSTANT_POOL "Lcom/oracle/graal/api/meta/ConstantPool;" |
1144 #define OBJECT "Ljava/lang/Object;" | 1144 #define OBJECT "Ljava/lang/Object;" |
1145 #define CLASS "Ljava/lang/Class;" | 1145 #define CLASS "Ljava/lang/Class;" |
1146 #define STACK_TRACE_ELEMENT "Ljava/lang/StackTraceElement;" | 1146 #define STACK_TRACE_ELEMENT "Ljava/lang/StackTraceElement;" |
1147 | 1147 |
1148 JNINativeMethod CompilerToVM_methods[] = { | 1148 JNINativeMethod CompilerToVM_methods[] = { |
1149 {CC"RiMethod_code", CC"("RESOLVED_METHOD")[B", FN_PTR(RiMethod_1code)}, | 1149 {CC"JavaMethod_code", CC"("RESOLVED_METHOD")[B", FN_PTR(JavaMethod_1code)}, |
1150 {CC"RiMethod_signature", CC"("RESOLVED_METHOD")"STRING, FN_PTR(RiMethod_1signature)}, | 1150 {CC"JavaMethod_signature", CC"("RESOLVED_METHOD")"STRING, FN_PTR(JavaMethod_1signature)}, |
1151 {CC"RiMethod_exceptionHandlers", CC"("RESOLVED_METHOD")"EXCEPTION_HANDLERS, FN_PTR(RiMethod_1exceptionHandlers)}, | 1151 {CC"JavaMethod_exceptionHandlers", CC"("RESOLVED_METHOD")"EXCEPTION_HANDLERS, FN_PTR(JavaMethod_1exceptionHandlers)}, |
1152 {CC"RiMethod_hasBalancedMonitors", CC"("RESOLVED_METHOD")Z", FN_PTR(RiMethod_1hasBalancedMonitors)}, | 1152 {CC"JavaMethod_hasBalancedMonitors", CC"("RESOLVED_METHOD")Z", FN_PTR(JavaMethod_1hasBalancedMonitors)}, |
1153 {CC"RiMethod_uniqueConcreteMethod", CC"("RESOLVED_METHOD")"METHOD, FN_PTR(RiMethod_1uniqueConcreteMethod)}, | 1153 {CC"JavaMethod_uniqueConcreteMethod", CC"("RESOLVED_METHOD")"METHOD, FN_PTR(JavaMethod_1uniqueConcreteMethod)}, |
1154 {CC"getRiMethod", CC"("REFLECT_METHOD")"METHOD, FN_PTR(getRiMethod)}, | 1154 {CC"getJavaMethod", CC"("REFLECT_METHOD")"METHOD, FN_PTR(getJavaMethod)}, |
1155 {CC"RiMethod_methodData", CC"("RESOLVED_METHOD")"METHOD_DATA, FN_PTR(RiMethod_1methodData)}, | 1155 {CC"JavaMethod_methodData", CC"("RESOLVED_METHOD")"METHOD_DATA, FN_PTR(JavaMethod_1methodData)}, |
1156 {CC"RiMethod_invocationCount", CC"("RESOLVED_METHOD")I", FN_PTR(RiMethod_1invocationCount)}, | 1156 {CC"JavaMethod_invocationCount", CC"("RESOLVED_METHOD")I", FN_PTR(JavaMethod_1invocationCount)}, |
1157 {CC"RiMethod_hasCompiledCode", CC"("RESOLVED_METHOD")Z", FN_PTR(RiMethod_1hasCompiledCode)}, | 1157 {CC"JavaMethod_hasCompiledCode", CC"("RESOLVED_METHOD")Z", FN_PTR(JavaMethod_1hasCompiledCode)}, |
1158 {CC"RiMethod_getCompiledCodeSize", CC"("RESOLVED_METHOD")I", FN_PTR(RiMethod_1getCompiledCodeSize)}, | 1158 {CC"JavaMethod_getCompiledCodeSize", CC"("RESOLVED_METHOD")I", FN_PTR(JavaMethod_1getCompiledCodeSize)}, |
1159 {CC"RiSignature_lookupType", CC"("STRING RESOLVED_TYPE"Z)"TYPE, FN_PTR(RiSignature_1lookupType)}, | 1159 {CC"Signature_lookupType", CC"("STRING RESOLVED_TYPE"Z)"TYPE, FN_PTR(Signature_1lookupType)}, |
1160 {CC"RiConstantPool_lookupConstant", CC"("RESOLVED_TYPE"I)"OBJECT, FN_PTR(RiConstantPool_1lookupConstant)}, | 1160 {CC"ConstantPool_lookupConstant", CC"("RESOLVED_TYPE"I)"OBJECT, FN_PTR(ConstantPool_1lookupConstant)}, |
1161 {CC"RiConstantPool_lookupMethod", CC"("RESOLVED_TYPE"IB)"METHOD, FN_PTR(RiConstantPool_1lookupMethod)}, | 1161 {CC"ConstantPool_lookupMethod", CC"("RESOLVED_TYPE"IB)"METHOD, FN_PTR(ConstantPool_1lookupMethod)}, |
1162 {CC"RiConstantPool_lookupType", CC"("RESOLVED_TYPE"I)"TYPE, FN_PTR(RiConstantPool_1lookupType)}, | 1162 {CC"ConstantPool_lookupType", CC"("RESOLVED_TYPE"I)"TYPE, FN_PTR(ConstantPool_1lookupType)}, |
1163 {CC"RiConstantPool_loadReferencedType", CC"("RESOLVED_TYPE"IB)V", FN_PTR(RiConstantPool_1loadReferencedType)}, | 1163 {CC"ConstantPool_loadReferencedType", CC"("RESOLVED_TYPE"IB)V", FN_PTR(ConstantPool_1loadReferencedType)}, |
1164 {CC"RiConstantPool_lookupField", CC"("RESOLVED_TYPE"IB)"FIELD, FN_PTR(RiConstantPool_1lookupField)}, | 1164 {CC"ConstantPool_lookupField", CC"("RESOLVED_TYPE"IB)"FIELD, FN_PTR(ConstantPool_1lookupField)}, |
1165 {CC"RiType_resolveMethodImpl", CC"("RESOLVED_TYPE STRING STRING")"METHOD, FN_PTR(RiType_3resolveMethodImpl)}, | 1165 {CC"JavaType_resolveMethodImpl", CC"("RESOLVED_TYPE STRING STRING")"METHOD, FN_PTR(JavaType_3resolveMethodImpl)}, |
1166 {CC"RiType_isSubtypeOf", CC"("RESOLVED_TYPE TYPE")Z", FN_PTR(RiType_2isSubtypeOf)}, | 1166 {CC"JavaType_isSubtypeOf", CC"("RESOLVED_TYPE TYPE")Z", FN_PTR(JavaType_2isSubtypeOf)}, |
1167 {CC"RiType_leastCommonAncestor", CC"("RESOLVED_TYPE RESOLVED_TYPE")"TYPE, FN_PTR(RiType_2leastCommonAncestor)}, | 1167 {CC"JavaType_leastCommonAncestor", CC"("RESOLVED_TYPE RESOLVED_TYPE")"TYPE, FN_PTR(JavaType_2leastCommonAncestor)}, |
1168 {CC"RiType_componentType", CC"("RESOLVED_TYPE")"TYPE, FN_PTR(RiType_1componentType)}, | 1168 {CC"JavaType_componentType", CC"("RESOLVED_TYPE")"TYPE, FN_PTR(JavaType_1componentType)}, |
1169 {CC"RiType_uniqueConcreteSubtype", CC"("RESOLVED_TYPE")"TYPE, FN_PTR(RiType_1uniqueConcreteSubtype)}, | 1169 {CC"JavaType_uniqueConcreteSubtype", CC"("RESOLVED_TYPE")"TYPE, FN_PTR(JavaType_1uniqueConcreteSubtype)}, |
1170 {CC"RiType_superType", CC"("RESOLVED_TYPE")"TYPE, FN_PTR(RiType_1superType)}, | 1170 {CC"JavaType_superType", CC"("RESOLVED_TYPE")"TYPE, FN_PTR(JavaType_1superType)}, |
1171 {CC"RiType_arrayOf", CC"("RESOLVED_TYPE")"TYPE, FN_PTR(RiType_1arrayOf)}, | 1171 {CC"JavaType_arrayOf", CC"("RESOLVED_TYPE")"TYPE, FN_PTR(JavaType_1arrayOf)}, |
1172 {CC"RiType_fields", CC"("RESOLVED_TYPE")["RESOLVED_FIELD, FN_PTR(RiType_1fields)}, | 1172 {CC"JavaType_fields", CC"("RESOLVED_TYPE")["RESOLVED_FIELD, FN_PTR(JavaType_1fields)}, |
1173 {CC"RiType_isInitialized", CC"("RESOLVED_TYPE")Z", FN_PTR(RiType_1isInitialized)}, | 1173 {CC"JavaType_isInitialized", CC"("RESOLVED_TYPE")Z", FN_PTR(JavaType_1isInitialized)}, |
1174 {CC"getPrimitiveArrayType", CC"("CI_KIND")"TYPE, FN_PTR(getPrimitiveArrayType)}, | 1174 {CC"getPrimitiveArrayType", CC"("CI_KIND")"TYPE, FN_PTR(getPrimitiveArrayType)}, |
1175 {CC"getMaxCallTargetOffset", CC"("CI_RUNTIME_CALL")J", FN_PTR(getMaxCallTargetOffset)}, | 1175 {CC"getMaxCallTargetOffset", CC"("CI_RUNTIME_CALL")J", FN_PTR(getMaxCallTargetOffset)}, |
1176 {CC"getType", CC"("CLASS")"TYPE, FN_PTR(getType)}, | 1176 {CC"getType", CC"("CLASS")"TYPE, FN_PTR(getType)}, |
1177 {CC"getConfiguration", CC"()"CONFIG, FN_PTR(getConfiguration)}, | 1177 {CC"getConfiguration", CC"()"CONFIG, FN_PTR(getConfiguration)}, |
1178 {CC"installMethod", CC"("TARGET_METHOD"Z"HS_CODE_INFO")"HS_COMP_METHOD, FN_PTR(installMethod)}, | 1178 {CC"installMethod", CC"("TARGET_METHOD"Z"HS_CODE_INFO")"HS_COMP_METHOD, FN_PTR(installMethod)}, |
1179 {CC"disassembleNative", CC"([BJ)"STRING, FN_PTR(disassembleNative)}, | 1179 {CC"disassembleNative", CC"([BJ)"STRING, FN_PTR(disassembleNative)}, |
1180 {CC"disassembleJava", CC"("RESOLVED_METHOD")"STRING, FN_PTR(disassembleJava)}, | 1180 {CC"disassembleJava", CC"("RESOLVED_METHOD")"STRING, FN_PTR(disassembleJava)}, |
1181 {CC"RiMethod_toStackTraceElement", CC"("RESOLVED_METHOD"I)"STACK_TRACE_ELEMENT, FN_PTR(RiMethod_1toStackTraceElement)}, | 1181 {CC"JavaMethod_toStackTraceElement", CC"("RESOLVED_METHOD"I)"STACK_TRACE_ELEMENT, FN_PTR(JavaMethod_1toStackTraceElement)}, |
1182 {CC"executeCompiledMethod", CC"("HS_COMP_METHOD OBJECT OBJECT OBJECT")"OBJECT, FN_PTR(executeCompiledMethod)}, | 1182 {CC"executeCompiledMethod", CC"("HS_COMP_METHOD OBJECT OBJECT OBJECT")"OBJECT, FN_PTR(executeCompiledMethod)}, |
1183 {CC"executeCompiledMethodVarargs", CC"("HS_COMP_METHOD "["OBJECT")"OBJECT, FN_PTR(executeCompiledMethodVarargs)}, | 1183 {CC"executeCompiledMethodVarargs", CC"("HS_COMP_METHOD "["OBJECT")"OBJECT, FN_PTR(executeCompiledMethodVarargs)}, |
1184 {CC"RiMethod_vtableEntryOffset", CC"("RESOLVED_METHOD")I", FN_PTR(RiMethod_vtableEntryOffset)}, | 1184 {CC"JavaMethod_vtableEntryOffset", CC"("RESOLVED_METHOD")I", FN_PTR(JavaMethod_vtableEntryOffset)}, |
1185 {CC"getDeoptedLeafGraphIds", CC"()[J", FN_PTR(getDeoptedLeafGraphIds)}, | 1185 {CC"getDeoptedLeafGraphIds", CC"()[J", FN_PTR(getDeoptedLeafGraphIds)}, |
1186 {CC"decodePC", CC"(J)"STRING, FN_PTR(decodePC)}, | 1186 {CC"decodePC", CC"(J)"STRING, FN_PTR(decodePC)}, |
1187 }; | 1187 }; |
1188 | 1188 |
1189 int CompilerToVM_methods_count() { | 1189 int CompilerToVM_methods_count() { |