Mercurial > hg > graal-jvmci-8
comparison src/share/vm/jvmci/jvmciCompilerToVM.cpp @ 23996:11f0412408cd
8173912: [JVMCI] fix memory overhead of JVMCI
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Fri, 03 Feb 2017 21:08:05 +0100 |
parents | ebce30b702eb |
children | 9a740aa0d87b |
comparison
equal
deleted
inserted
replaced
23995:988dc143e0bf | 23996:11f0412408cd |
---|---|
281 do_intx_flag(MethodProfileWidth) \ | 281 do_intx_flag(MethodProfileWidth) \ |
282 do_intx_flag(ObjectAlignmentInBytes) \ | 282 do_intx_flag(ObjectAlignmentInBytes) \ |
283 do_bool_flag(PrintInlining) \ | 283 do_bool_flag(PrintInlining) \ |
284 do_bool_flag(ReduceInitialCardMarks) \ | 284 do_bool_flag(ReduceInitialCardMarks) \ |
285 do_bool_flag(RestrictContended) \ | 285 do_bool_flag(RestrictContended) \ |
286 /*do_intx_flag(StackReservedPages) - JDK 9*/ \ | 286 /* do_intx_flag(StackReservedPages) JDK 9 */ \ |
287 do_intx_flag(StackShadowPages) \ | 287 do_intx_flag(StackShadowPages) \ |
288 do_bool_flag(TLABStats) \ | 288 do_bool_flag(TLABStats) \ |
289 do_uintx_flag(TLABWasteIncrement) \ | 289 do_uintx_flag(TLABWasteIncrement) \ |
290 do_intx_flag(TypeProfileWidth) \ | 290 do_intx_flag(TypeProfileWidth) \ |
291 do_bool_flag(UseAESIntrinsics) \ | 291 do_bool_flag(UseAESIntrinsics) \ |
292 do_intx_flag(UseAVX) \ | 292 X86_ONLY(do_intx_flag(UseAVX)) \ |
293 do_bool_flag(UseBiasedLocking) \ | 293 do_bool_flag(UseBiasedLocking) \ |
294 do_bool_flag(UseCRC32Intrinsics) \ | 294 do_bool_flag(UseCRC32Intrinsics) \ |
295 do_bool_flag(UseCompressedClassPointers) \ | 295 do_bool_flag(UseCompressedClassPointers) \ |
296 do_bool_flag(UseCompressedOops) \ | 296 do_bool_flag(UseCompressedOops) \ |
297 do_bool_flag(UseConcMarkSweepGC) \ | 297 do_bool_flag(UseConcMarkSweepGC) \ |
298 do_bool_flag(UseCountLeadingZerosInstruction) \ | 298 X86_ONLY(do_bool_flag(UseCountLeadingZerosInstruction)) \ |
299 do_bool_flag(UseCountTrailingZerosInstruction) \ | 299 X86_ONLY(do_bool_flag(UseCountTrailingZerosInstruction)) \ |
300 do_bool_flag(UseG1GC) \ | 300 do_bool_flag(UseG1GC) \ |
301 COMPILER2_PRESENT(do_bool_flag(UseMontgomeryMultiplyIntrinsic)) \ | 301 COMPILER2_PRESENT(do_bool_flag(UseMontgomeryMultiplyIntrinsic)) \ |
302 COMPILER2_PRESENT(do_bool_flag(UseMontgomerySquareIntrinsic)) \ | 302 COMPILER2_PRESENT(do_bool_flag(UseMontgomerySquareIntrinsic)) \ |
303 COMPILER2_PRESENT(do_bool_flag(UseMulAddIntrinsic)) \ | 303 COMPILER2_PRESENT(do_bool_flag(UseMulAddIntrinsic)) \ |
304 COMPILER2_PRESENT(do_bool_flag(UseMultiplyToLenIntrinsic)) \ | 304 COMPILER2_PRESENT(do_bool_flag(UseMultiplyToLenIntrinsic)) \ |
310 COMPILER2_PRESENT(do_bool_flag(UseSquareToLenIntrinsic)) \ | 310 COMPILER2_PRESENT(do_bool_flag(UseSquareToLenIntrinsic)) \ |
311 do_bool_flag(UseStackBanging) \ | 311 do_bool_flag(UseStackBanging) \ |
312 do_bool_flag(UseTLAB) \ | 312 do_bool_flag(UseTLAB) \ |
313 do_bool_flag(VerifyOops) \ | 313 do_bool_flag(VerifyOops) \ |
314 | 314 |
315 #define BOXED_BOOLEAN(name, value) oop name = ((jboolean)(value) ? boxedTrue() : boxedFalse()) | |
315 #define BOXED_DOUBLE(name, value) oop name; do { jvalue p; p.d = (jdouble) (value); name = java_lang_boxing_object::create(T_DOUBLE, &p, CHECK_NULL);} while(0) | 316 #define BOXED_DOUBLE(name, value) oop name; do { jvalue p; p.d = (jdouble) (value); name = java_lang_boxing_object::create(T_DOUBLE, &p, CHECK_NULL);} while(0) |
316 #define BOXED_LONG(name, value) \ | 317 #define BOXED_LONG(name, value) \ |
317 oop name; \ | 318 oop name; \ |
318 do { \ | 319 do { \ |
319 jvalue p; p.j = (jlong) (value); \ | 320 jvalue p; p.j = (jlong) (value); \ |
341 } \ | 342 } \ |
342 } \ | 343 } \ |
343 } while (0) | 344 } while (0) |
344 | 345 |
345 C2V_VMENTRY(jobjectArray, readConfiguration, (JNIEnv *env)) | 346 C2V_VMENTRY(jobjectArray, readConfiguration, (JNIEnv *env)) |
346 | |
347 ResourceMark rm; | 347 ResourceMark rm; |
348 HandleMark hm; | 348 HandleMark hm; |
349 | 349 |
350 // Used to canonicalize Long and String values. | 350 // Used to canonicalize Long and String values. |
351 ResourceHashtable<jlong, Handle> longs; | 351 ResourceHashtable<jlong, Handle> longs; |
352 ResourceHashtable<const char*, Handle, &CompilerToVM::cstring_hash, &CompilerToVM::cstring_equals> strings; | 352 ResourceHashtable<const char*, Handle, &CompilerToVM::cstring_hash, &CompilerToVM::cstring_equals> strings; |
353 | |
354 jvalue prim; | |
355 prim.z = true; Handle boxedTrue = java_lang_boxing_object::create(T_BOOLEAN, &prim, CHECK_NULL); | |
356 prim.z = false; Handle boxedFalse = java_lang_boxing_object::create(T_BOOLEAN, &prim, CHECK_NULL); | |
353 | 357 |
354 CompilerToVM::Data::initialize(CHECK_NULL); | 358 CompilerToVM::Data::initialize(CHECK_NULL); |
355 | 359 |
356 VMField::klass()->initialize(CHECK_NULL); | 360 VMField::klass()->initialize(CHECK_NULL); |
357 VMFlag::klass()->initialize(CHECK_NULL); | 361 VMFlag::klass()->initialize(CHECK_NULL); |
371 VMField::set_type(vmFieldObj, type()); | 375 VMField::set_type(vmFieldObj, type()); |
372 VMField::set_offset(vmFieldObj, vmField.offset); | 376 VMField::set_offset(vmFieldObj, vmField.offset); |
373 VMField::set_address(vmFieldObj, (jlong) vmField.address); | 377 VMField::set_address(vmFieldObj, (jlong) vmField.address); |
374 if (vmField.isStatic && vmField.typeString != NULL) { | 378 if (vmField.isStatic && vmField.typeString != NULL) { |
375 if (strcmp(vmField.typeString, "bool") == 0) { | 379 if (strcmp(vmField.typeString, "bool") == 0) { |
376 BOXED_LONG(value, *(jbyte*) vmField.address); | 380 BOXED_BOOLEAN(box, *(jbyte*) vmField.address); |
377 VMField::set_value(vmFieldObj, value); | 381 VMField::set_value(vmFieldObj, box); |
378 } else if (strcmp(vmField.typeString, "int") == 0 || | 382 } else if (strcmp(vmField.typeString, "int") == 0 || |
379 strcmp(vmField.typeString, "jint") == 0) { | 383 strcmp(vmField.typeString, "jint") == 0) { |
380 BOXED_LONG(value, *(jint*) vmField.address); | 384 BOXED_LONG(box, *(jint*) vmField.address); |
381 VMField::set_value(vmFieldObj, value); | 385 VMField::set_value(vmFieldObj, box); |
382 } else if (strcmp(vmField.typeString, "uint64_t") == 0) { | 386 } else if (strcmp(vmField.typeString, "uint64_t") == 0) { |
383 BOXED_LONG(value, *(uint64_t*) vmField.address); | 387 BOXED_LONG(box, *(uint64_t*) vmField.address); |
384 VMField::set_value(vmFieldObj, value); | 388 VMField::set_value(vmFieldObj, box); |
385 } else if (strcmp(vmField.typeString, "address") == 0 || | 389 } else if (strcmp(vmField.typeString, "address") == 0 || |
386 strcmp(vmField.typeString, "intptr_t") == 0 || | 390 strcmp(vmField.typeString, "intptr_t") == 0 || |
387 strcmp(vmField.typeString, "uintptr_t") == 0 || | 391 strcmp(vmField.typeString, "uintptr_t") == 0 || |
388 strcmp(vmField.typeString, "size_t") == 0 || | 392 strcmp(vmField.typeString, "size_t") == 0 || |
389 // All foo* types are addresses. | 393 // All foo* types are addresses. |
390 vmField.typeString[strlen(vmField.typeString) - 1] == '*') { | 394 vmField.typeString[strlen(vmField.typeString) - 1] == '*') { |
391 BOXED_LONG(value, *((address*) vmField.address)); | 395 BOXED_LONG(box, *((address*) vmField.address)); |
392 VMField::set_value(vmFieldObj, value); | 396 VMField::set_value(vmFieldObj, box); |
393 } | 397 } |
394 } | 398 } |
395 vmFields->obj_at_put(i, vmFieldObj()); | 399 vmFields->obj_at_put(i, vmFieldObj()); |
396 } | 400 } |
397 | 401 |
427 } | 431 } |
428 | 432 |
429 #define COUNT_FLAG(ignore) +1 | 433 #define COUNT_FLAG(ignore) +1 |
430 #ifdef ASSERT | 434 #ifdef ASSERT |
431 #define CHECK_FLAG(type, name) { \ | 435 #define CHECK_FLAG(type, name) { \ |
432 Flag* flag = Flag::find_flag(#name, strlen(#name), /*allow_locked*/ true, /* return_flag */ true); \ | 436 Flag* flag = Flag::find_flag(#name, strlen(#name), /*allow_locked*/ true, /* return_flag */ true); \ |
433 assert(flag != NULL, "No such flag named " #name); \ | 437 assert(flag != NULL, "No such flag named " #name); \ |
434 assert(flag->is_##type(), "Flag " #name " is not of type " #type); \ | 438 assert(flag->is_##type(), "Flag " #name " is not of type " #type); \ |
435 } | 439 } |
436 #else | 440 #else |
437 #define CHECK_FLAG(type, name) | 441 #define CHECK_FLAG(type, name) |
438 #endif | 442 #endif |
439 | 443 |
440 #define ADD_FLAG(type, name, convert) { \ | 444 #define ADD_FLAG(type, name, convert) { \ |
441 CHECK_FLAG(type, name) \ | 445 CHECK_FLAG(type, name) \ |
442 instanceHandle vmFlagObj = InstanceKlass::cast(VMFlag::klass())->allocate_instance_handle(CHECK_NULL); \ | 446 instanceHandle vmFlagObj = InstanceKlass::cast(VMFlag::klass())->allocate_instance_handle(CHECK_NULL); \ |
443 STRING(fname, #name); \ | 447 STRING(fname, #name); \ |
444 STRING(ftype, #type); \ | 448 STRING(ftype, #type); \ |
445 VMFlag::set_name(vmFlagObj, fname()); \ | 449 VMFlag::set_name(vmFlagObj, fname()); \ |
446 VMFlag::set_type(vmFlagObj, ftype()); \ | 450 VMFlag::set_type(vmFlagObj, ftype()); \ |
447 convert(value, name); \ | 451 convert(value, name); \ |
448 VMFlag::set_value(vmFlagObj, value); \ | 452 VMFlag::set_value(vmFlagObj, value); \ |
449 vmFlags->obj_at_put(i++, vmFlagObj()); \ | 453 vmFlags->obj_at_put(i++, vmFlagObj()); \ |
450 } | 454 } |
451 #define ADD_BOOL_FLAG(name) ADD_FLAG(bool, name, BOXED_LONG) | 455 #define ADD_BOOL_FLAG(name) ADD_FLAG(bool, name, BOXED_BOOLEAN) |
452 #define ADD_INTX_FLAG(name) ADD_FLAG(intx, name, BOXED_LONG) | 456 #define ADD_INTX_FLAG(name) ADD_FLAG(intx, name, BOXED_LONG) |
453 #define ADD_UINTX_FLAG(name) ADD_FLAG(uintx, name, BOXED_LONG) | 457 #define ADD_UINTX_FLAG(name) ADD_FLAG(uintx, name, BOXED_LONG) |
454 | 458 |
455 len = 0 + PREDEFINED_CONFIG_FLAGS(COUNT_FLAG, COUNT_FLAG, COUNT_FLAG); | 459 len = 0 + PREDEFINED_CONFIG_FLAGS(COUNT_FLAG, COUNT_FLAG, COUNT_FLAG); |
456 objArrayHandle vmFlags = oopFactory::new_objArray(VMFlag::klass(), len, CHECK_NULL); | 460 objArrayHandle vmFlags = oopFactory::new_objArray(VMFlag::klass(), len, CHECK_NULL); |
457 int i = 0; | 461 int i = 0; |
458 PREDEFINED_CONFIG_FLAGS(ADD_BOOL_FLAG, ADD_INTX_FLAG, ADD_UINTX_FLAG) | 462 PREDEFINED_CONFIG_FLAGS(ADD_BOOL_FLAG, ADD_INTX_FLAG, ADD_UINTX_FLAG) |
459 | 463 |
460 objArrayHandle vmIntrinsics = CompilerToVM::initialize_intrinsics(CHECK_NULL); | 464 objArrayHandle vmIntrinsics = CompilerToVM::initialize_intrinsics(CHECK_NULL); |
461 | 465 |
462 objArrayOop data = oopFactory::new_objArray(SystemDictionary::Object_klass(), 5, CHECK_NULL); | 466 objArrayOop data = oopFactory::new_objArray(SystemDictionary::Object_klass(), 5, CHECK_NULL); |
473 #undef ADD_INTX_FLAG | 477 #undef ADD_INTX_FLAG |
474 #undef ADD_UINTX_FLAG | 478 #undef ADD_UINTX_FLAG |
475 #undef CHECK_FLAG | 479 #undef CHECK_FLAG |
476 C2V_END | 480 C2V_END |
477 | 481 |
478 C2V_VMENTRY(jobject, getFlagValue, (JNIEnv *, jobject, jobject name_handle)) | 482 C2V_VMENTRY(jobject, getFlagValue, (JNIEnv *, jobject c2vm, jobject name_handle)) |
479 #define RETURN_BOXED_LONG(value) oop box; jvalue p; p.j = (jlong) (value); box = java_lang_boxing_object::create(T_LONG, &p, CHECK_NULL); return JNIHandles::make_local(THREAD, box); | 483 #define RETURN_BOXED_LONG(value) oop box; jvalue p; p.j = (jlong) (value); box = java_lang_boxing_object::create(T_LONG, &p, CHECK_NULL); return JNIHandles::make_local(THREAD, box); |
480 #define RETURN_BOXED_DOUBLE(value) oop box; jvalue p; p.d = (jdouble) (value); box = java_lang_boxing_object::create(T_DOUBLE, &p, CHECK_NULL); return JNIHandles::make_local(THREAD, box); | 484 #define RETURN_BOXED_DOUBLE(value) oop box; jvalue p; p.d = (jdouble) (value); box = java_lang_boxing_object::create(T_DOUBLE, &p, CHECK_NULL); return JNIHandles::make_local(THREAD, box); |
481 Handle name = JNIHandles::resolve(name_handle); | 485 Handle name = JNIHandles::resolve(name_handle); |
482 if (name.is_null()) { | 486 if (name.is_null()) { |
483 THROW_0(vmSymbols::java_lang_NullPointerException()); | 487 THROW_0(vmSymbols::java_lang_NullPointerException()); |
484 } | 488 } |
485 const char* cstring = java_lang_String::as_utf8_string(name()); | 489 const char* cstring = java_lang_String::as_utf8_string(name()); |
486 Flag* flag = Flag::find_flag(cstring, strlen(cstring), /* allow_locked */ true, /* return_flag */ true); | 490 Flag* flag = Flag::find_flag(cstring, strlen(cstring), /* allow_locked */ true, /* return_flag */ true); |
487 if (flag == NULL) { | 491 if (flag == NULL) { |
488 return NULL; | 492 return c2vm; |
489 } | 493 } |
490 if (flag->is_bool()) { | 494 if (flag->is_bool()) { |
491 RETURN_BOXED_LONG(flag->get_bool()); | 495 jvalue prim; |
496 prim.z = flag->get_bool(); | |
497 oop box = java_lang_boxing_object::create(T_BOOLEAN, &prim, CHECK_NULL); | |
498 return JNIHandles::make_local(THREAD, box); | |
492 } else if (flag->is_ccstr()) { | 499 } else if (flag->is_ccstr()) { |
493 Handle value = java_lang_String::create_from_str(flag->get_ccstr(), CHECK_NULL); | 500 Handle value = java_lang_String::create_from_str(flag->get_ccstr(), CHECK_NULL); |
494 return JNIHandles::make_local(THREAD, value()); | 501 return JNIHandles::make_local(THREAD, value()); |
495 } else if (flag->is_intx()) { | 502 } else if (flag->is_intx()) { |
496 RETURN_BOXED_LONG(flag->get_intx()); | 503 RETURN_BOXED_LONG(flag->get_intx()); |
504 /*} else if (flag->is_int()) { | |
505 RETURN_BOXED_LONG(flag->get_int()); | |
506 } else if (flag->is_uint()) { | |
507 RETURN_BOXED_LONG(flag->get_uint());*/ | |
497 } else if (flag->is_uint64_t()) { | 508 } else if (flag->is_uint64_t()) { |
498 RETURN_BOXED_LONG(flag->get_uint64_t()); | 509 RETURN_BOXED_LONG(flag->get_uint64_t()); |
510 /*} else if (flag->is_size_t()) { | |
511 RETURN_BOXED_LONG(flag->get_size_t());*/ | |
499 } else if (flag->is_uintx()) { | 512 } else if (flag->is_uintx()) { |
500 RETURN_BOXED_LONG(flag->get_uintx()); | 513 RETURN_BOXED_LONG(flag->get_uintx()); |
501 } else if (flag->is_double()) { | 514 } else if (flag->is_double()) { |
502 RETURN_BOXED_DOUBLE(flag->get_double()); | 515 RETURN_BOXED_DOUBLE(flag->get_double()); |
503 } else { | 516 } else { |
879 | 892 |
880 C2V_VMENTRY(jobject, resolveFieldInPool, (JNIEnv*, jobject, jobject jvmci_constant_pool, jint index, jbyte opcode, jintArray info_handle)) | 893 C2V_VMENTRY(jobject, resolveFieldInPool, (JNIEnv*, jobject, jobject jvmci_constant_pool, jint index, jbyte opcode, jintArray info_handle)) |
881 ResourceMark rm; | 894 ResourceMark rm; |
882 constantPoolHandle cp = CompilerToVM::asConstantPool(jvmci_constant_pool); | 895 constantPoolHandle cp = CompilerToVM::asConstantPool(jvmci_constant_pool); |
883 Bytecodes::Code code = (Bytecodes::Code)(((int) opcode) & 0xFF); | 896 Bytecodes::Code code = (Bytecodes::Code)(((int) opcode) & 0xFF); |
884 fieldDescriptor result; | 897 fieldDescriptor fd; |
885 LinkResolver::resolve_field_access(result, cp, index, Bytecodes::java_code(code), true, false, CHECK_0); | 898 LinkResolver::resolve_field_access(fd, cp, index, Bytecodes::java_code(code), true, false, CHECK_0); |
886 typeArrayOop info = (typeArrayOop) JNIHandles::resolve(info_handle); | 899 typeArrayOop info = (typeArrayOop) JNIHandles::resolve(info_handle); |
887 assert(info != NULL && info->length() == 2, "must be"); | 900 if (info == NULL || info->length() != 3) { |
888 info->int_at_put(0, result.access_flags().as_int()); | 901 JVMCI_ERROR_NULL("info must not be null and have a length of 3"); |
889 info->int_at_put(1, result.offset()); | 902 } |
890 info->int_at_put(2, result.index()); | 903 info->int_at_put(0, fd.access_flags().as_int()); |
891 oop field_holder = CompilerToVM::get_jvmci_type(result.field_holder(), CHECK_NULL); | 904 info->int_at_put(1, fd.offset()); |
905 info->int_at_put(2, fd.index()); | |
906 oop field_holder = CompilerToVM::get_jvmci_type(fd.field_holder(), CHECK_NULL); | |
892 return JNIHandles::make_local(THREAD, field_holder); | 907 return JNIHandles::make_local(THREAD, field_holder); |
893 C2V_END | 908 C2V_END |
894 | 909 |
895 C2V_VMENTRY(jint, getVtableIndexForInterfaceMethod, (JNIEnv *, jobject, jobject jvmci_type, jobject jvmci_method)) | 910 C2V_VMENTRY(jint, getVtableIndexForInterfaceMethod, (JNIEnv *, jobject, jobject jvmci_type, jobject jvmci_method)) |
896 ResourceMark rm; | 911 ResourceMark rm; |
1239 C2V_END | 1254 C2V_END |
1240 | 1255 |
1241 C2V_VMENTRY(jobject, getSymbol, (JNIEnv*, jobject, jlong symbol)) | 1256 C2V_VMENTRY(jobject, getSymbol, (JNIEnv*, jobject, jlong symbol)) |
1242 Handle sym = java_lang_String::create_from_symbol((Symbol*)(address)symbol, CHECK_NULL); | 1257 Handle sym = java_lang_String::create_from_symbol((Symbol*)(address)symbol, CHECK_NULL); |
1243 return JNIHandles::make_local(THREAD, sym()); | 1258 return JNIHandles::make_local(THREAD, sym()); |
1244 C2V_END | |
1245 | |
1246 C2V_VMENTRY(jobject, getFieldName, (JNIEnv*, jobject, jobject jvmci_type, jint index)) | |
1247 InstanceKlass* klass = (InstanceKlass*) CompilerToVM::asKlass(jvmci_type); | |
1248 if (index < 0 || index >= klass->fields()->length()) { | |
1249 THROW_NULL(vmSymbols::java_lang_ArrayIndexOutOfBoundsException()); | |
1250 } | |
1251 Handle name = java_lang_String::create_from_symbol(klass->field_name(index), CHECK_NULL); | |
1252 return JNIHandles::make_local(THREAD, name()); | |
1253 C2V_END | |
1254 | |
1255 C2V_VMENTRY(jobject, getMethodName, (JNIEnv*, jobject, jobject jvmci_method)) | |
1256 Method* method = CompilerToVM::asMethod(jvmci_method); | |
1257 Handle name = java_lang_String::create_from_symbol(method->name(), CHECK_NULL); | |
1258 return JNIHandles::make_local(THREAD, name()); | |
1259 C2V_END | 1259 C2V_END |
1260 | 1260 |
1261 bool matches(jobjectArray methods, Method* method) { | 1261 bool matches(jobjectArray methods, Method* method) { |
1262 objArrayOop methods_oop = (objArrayOop) JNIHandles::resolve(methods); | 1262 objArrayOop methods_oop = (objArrayOop) JNIHandles::resolve(methods); |
1263 | 1263 |
1707 {CC"collectCounters", CC"()[J", FN_PTR(collectCounters)}, | 1707 {CC"collectCounters", CC"()[J", FN_PTR(collectCounters)}, |
1708 {CC"allocateCompileId", CC"("HS_RESOLVED_METHOD"I)I", FN_PTR(allocateCompileId)}, | 1708 {CC"allocateCompileId", CC"("HS_RESOLVED_METHOD"I)I", FN_PTR(allocateCompileId)}, |
1709 {CC"isMature", CC"("METASPACE_METHOD_DATA")Z", FN_PTR(isMature)}, | 1709 {CC"isMature", CC"("METASPACE_METHOD_DATA")Z", FN_PTR(isMature)}, |
1710 {CC"hasCompiledCodeForOSR", CC"("HS_RESOLVED_METHOD"II)Z", FN_PTR(hasCompiledCodeForOSR)}, | 1710 {CC"hasCompiledCodeForOSR", CC"("HS_RESOLVED_METHOD"II)Z", FN_PTR(hasCompiledCodeForOSR)}, |
1711 {CC"getSymbol", CC"(J)"STRING, FN_PTR(getSymbol)}, | 1711 {CC"getSymbol", CC"(J)"STRING, FN_PTR(getSymbol)}, |
1712 {CC"getFieldName", CC"("HS_RESOLVED_KLASS"I)"STRING, FN_PTR(getFieldName)}, | |
1713 {CC"getMethodName", CC"("HS_RESOLVED_METHOD")"STRING, FN_PTR(getMethodName)}, | |
1714 {CC"getNextStackFrame", CC"("HS_STACK_FRAME_REF "["RESOLVED_METHOD"I)"HS_STACK_FRAME_REF, FN_PTR(getNextStackFrame)}, | 1712 {CC"getNextStackFrame", CC"("HS_STACK_FRAME_REF "["RESOLVED_METHOD"I)"HS_STACK_FRAME_REF, FN_PTR(getNextStackFrame)}, |
1715 {CC"materializeVirtualObjects", CC"("HS_STACK_FRAME_REF"Z)V", FN_PTR(materializeVirtualObjects)}, | 1713 {CC"materializeVirtualObjects", CC"("HS_STACK_FRAME_REF"Z)V", FN_PTR(materializeVirtualObjects)}, |
1716 {CC"shouldDebugNonSafepoints", CC"()Z", FN_PTR(shouldDebugNonSafepoints)}, | 1714 {CC"shouldDebugNonSafepoints", CC"()Z", FN_PTR(shouldDebugNonSafepoints)}, |
1717 {CC"writeDebugOutput", CC"([BII)V", FN_PTR(writeDebugOutput)}, | 1715 {CC"writeDebugOutput", CC"([BII)V", FN_PTR(writeDebugOutput)}, |
1718 {CC"flushDebugOutput", CC"()V", FN_PTR(flushDebugOutput)}, | 1716 {CC"flushDebugOutput", CC"()V", FN_PTR(flushDebugOutput)}, |