456 }
457
458 return (jbyteArray) JNIHandles::make_local(THREAD, reconstituted_code);
459 C2V_END
460
461 C2V_VMENTRY(jint, getExceptionTableLength, (JNIEnv *, jobject, jobject jvmci_method))
462 ResourceMark rm;
463 methodHandle method = CompilerToVM::asMethod(jvmci_method);
464 return method->exception_table_length();
465 C2V_END
466
467 C2V_VMENTRY(jlong, getExceptionTableStart, (JNIEnv *, jobject, jobject jvmci_method))
468 ResourceMark rm;
469 methodHandle method = CompilerToVM::asMethod(jvmci_method);
470 if (method->exception_table_length() == 0) {
471 return 0L;
472 }
473 return (jlong) (address) method->exception_table_start();
474 C2V_END
475
476 C2V_VMENTRY(jobject, getResolvedJavaMethodAtSlot, (JNIEnv *, jobject, jclass holder_handle, jint slot))
477 oop java_class = JNIHandles::resolve(holder_handle);
478 Klass* holder = java_lang_Class::as_Klass(java_class);
479 methodHandle method = InstanceKlass::cast(holder)->method_with_idnum(slot);
480 oop result = CompilerToVM::get_jvmci_method(method, CHECK_NULL);
481 return JNIHandles::make_local(THREAD, result);
482 }
483
484 C2V_VMENTRY(jobject, getResolvedJavaMethod, (JNIEnv *, jobject, jobject base, jlong offset))
485 methodHandle method;
486 oop base_object = JNIHandles::resolve(base);
487 if (base_object == NULL) {
488 method = *((Method**)(offset));
489 } else if (base_object->is_a(SystemDictionary::MemberName_klass())) {
490 method = (Method*) (intptr_t) base_object->long_field(offset);
491 } else if (base_object->is_a(SystemDictionary::HotSpotResolvedJavaMethodImpl_klass())) {
492 method = *((Method**)(HotSpotResolvedJavaMethodImpl::metaspaceMethod(base_object) + offset));
493 } else {
494 THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
495 err_msg("Unexpected type: %s", base_object->klass()->external_name()));
496 }
497 assert (method.is_null() || method->is_method(), "invalid read");
498 oop result = CompilerToVM::get_jvmci_method(method, CHECK_NULL);
1501 bool is_top_frame = (bytecode_frame == top_bytecode_frame);
1502 Method* method = getMethodFromHotSpotMethod(BytecodePosition::method(bytecode_frame));
1503
1504 int frame_size = BytesPerWord * Interpreter::size_activation(method->max_stack(),
1505 temps + callee_parameters,
1506 extra_args,
1507 locks,
1508 callee_parameters,
1509 callee_locals,
1510 is_top_frame);
1511 size += frame_size;
1512
1513 callee_parameters = method->size_of_parameters();
1514 callee_locals = method->max_locals();
1515 extra_args = 0;
1516 bytecode_frame = BytecodePosition::caller(bytecode_frame);
1517 }
1518 return size + Deoptimization::last_frame_adjust(0, callee_locals) * BytesPerWord;
1519 C2V_END
1520
1521
1522 #define CC (char*) /*cast a literal from (const char*)*/
1523 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &(c2v_ ## f))
1524
1525 #define STRING "Ljava/lang/String;"
1526 #define OBJECT "Ljava/lang/Object;"
1527 #define CLASS "Ljava/lang/Class;"
1528 #define STACK_TRACE_ELEMENT "Ljava/lang/StackTraceElement;"
1529 #define INSTALLED_CODE "Ljdk/vm/ci/code/InstalledCode;"
1530 #define TARGET_DESCRIPTION "Ljdk/vm/ci/code/TargetDescription;"
1531 #define BYTECODE_FRAME "Ljdk/vm/ci/code/BytecodeFrame;"
1532 #define RESOLVED_METHOD "Ljdk/vm/ci/meta/ResolvedJavaMethod;"
1533 #define HS_RESOLVED_METHOD "Ljdk/vm/ci/hotspot/HotSpotResolvedJavaMethodImpl;"
1534 #define HS_RESOLVED_KLASS "Ljdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl;"
1535 #define HS_CONSTANT_POOL "Ljdk/vm/ci/hotspot/HotSpotConstantPool;"
1536 #define HS_COMPILED_CODE "Ljdk/vm/ci/hotspot/HotSpotCompiledCode;"
1537 #define HS_CONFIG "Ljdk/vm/ci/hotspot/HotSpotVMConfig;"
1538 #define HS_METADATA "Ljdk/vm/ci/hotspot/HotSpotMetaData;"
1539 #define HS_STACK_FRAME_REF "Ljdk/vm/ci/hotspot/HotSpotStackFrameReference;"
1540 #define HS_SPECULATION_LOG "Ljdk/vm/ci/hotspot/HotSpotSpeculationLog;"
1541 #define METASPACE_METHOD_DATA "J"
1542
1543 JNINativeMethod CompilerToVM::methods[] = {
1544 {CC "getBytecode", CC "(" HS_RESOLVED_METHOD ")[B", FN_PTR(getBytecode)},
1545 {CC "getExceptionTableStart", CC "(" HS_RESOLVED_METHOD ")J", FN_PTR(getExceptionTableStart)},
1546 {CC "getExceptionTableLength", CC "(" HS_RESOLVED_METHOD ")I", FN_PTR(getExceptionTableLength)},
1547 {CC "findUniqueConcreteMethod", CC "(" HS_RESOLVED_KLASS HS_RESOLVED_METHOD ")" HS_RESOLVED_METHOD, FN_PTR(findUniqueConcreteMethod)},
1555 {CC "lookupNameInPool", CC "(" HS_CONSTANT_POOL "I)" STRING, FN_PTR(lookupNameInPool)},
1556 {CC "lookupNameAndTypeRefIndexInPool", CC "(" HS_CONSTANT_POOL "I)I", FN_PTR(lookupNameAndTypeRefIndexInPool)},
1557 {CC "lookupSignatureInPool", CC "(" HS_CONSTANT_POOL "I)" STRING, FN_PTR(lookupSignatureInPool)},
1558 {CC "lookupKlassRefIndexInPool", CC "(" HS_CONSTANT_POOL "I)I", FN_PTR(lookupKlassRefIndexInPool)},
1559 {CC "lookupKlassInPool", CC "(" HS_CONSTANT_POOL "I)Ljava/lang/Object;", FN_PTR(lookupKlassInPool)},
1560 {CC "lookupAppendixInPool", CC "(" HS_CONSTANT_POOL "I)" OBJECT, FN_PTR(lookupAppendixInPool)},
1561 {CC "lookupMethodInPool", CC "(" HS_CONSTANT_POOL "IB)" HS_RESOLVED_METHOD, FN_PTR(lookupMethodInPool)},
1562 {CC "constantPoolRemapInstructionOperandFromCache", CC "(" HS_CONSTANT_POOL "I)I", FN_PTR(constantPoolRemapInstructionOperandFromCache)},
1563 {CC "resolveConstantInPool", CC "(" HS_CONSTANT_POOL "I)" OBJECT, FN_PTR(resolveConstantInPool)},
1564 {CC "resolvePossiblyCachedConstantInPool", CC "(" HS_CONSTANT_POOL "I)" OBJECT, FN_PTR(resolvePossiblyCachedConstantInPool)},
1565 {CC "resolveTypeInPool", CC "(" HS_CONSTANT_POOL "I)" HS_RESOLVED_KLASS, FN_PTR(resolveTypeInPool)},
1566 {CC "resolveFieldInPool", CC "(" HS_CONSTANT_POOL "I" HS_RESOLVED_METHOD "B[J)" HS_RESOLVED_KLASS, FN_PTR(resolveFieldInPool)},
1567 {CC "resolveInvokeDynamicInPool", CC "(" HS_CONSTANT_POOL "I)V", FN_PTR(resolveInvokeDynamicInPool)},
1568 {CC "resolveInvokeHandleInPool", CC "(" HS_CONSTANT_POOL "I)V", FN_PTR(resolveInvokeHandleInPool)},
1569 {CC "resolveMethod", CC "(" HS_RESOLVED_KLASS HS_RESOLVED_METHOD HS_RESOLVED_KLASS ")" HS_RESOLVED_METHOD, FN_PTR(resolveMethod)},
1570 {CC "getSignaturePolymorphicHolders", CC "()[" STRING, FN_PTR(getSignaturePolymorphicHolders)},
1571 {CC "getVtableIndexForInterfaceMethod", CC "(" HS_RESOLVED_KLASS HS_RESOLVED_METHOD ")I", FN_PTR(getVtableIndexForInterfaceMethod)},
1572 {CC "getClassInitializer", CC "(" HS_RESOLVED_KLASS ")" HS_RESOLVED_METHOD, FN_PTR(getClassInitializer)},
1573 {CC "hasFinalizableSubclass", CC "(" HS_RESOLVED_KLASS ")Z", FN_PTR(hasFinalizableSubclass)},
1574 {CC "getMaxCallTargetOffset", CC "(J)J", FN_PTR(getMaxCallTargetOffset)},
1575 {CC "getResolvedJavaMethodAtSlot", CC "(" CLASS "I)" HS_RESOLVED_METHOD, FN_PTR(getResolvedJavaMethodAtSlot)},
1576 {CC "getResolvedJavaMethod", CC "(Ljava/lang/Object;J)" HS_RESOLVED_METHOD, FN_PTR(getResolvedJavaMethod)},
1577 {CC "getConstantPool", CC "(Ljava/lang/Object;)" HS_CONSTANT_POOL, FN_PTR(getConstantPool)},
1578 {CC "getResolvedJavaType", CC "(Ljava/lang/Object;JZ)" HS_RESOLVED_KLASS, FN_PTR(getResolvedJavaType)},
1579 {CC "readConfiguration", CC "()[" OBJECT, FN_PTR(readConfiguration)},
1580 {CC "installCode", CC "(" TARGET_DESCRIPTION HS_COMPILED_CODE INSTALLED_CODE HS_SPECULATION_LOG ")I", FN_PTR(installCode)},
1581 {CC "getMetadata", CC "(" TARGET_DESCRIPTION HS_COMPILED_CODE HS_METADATA ")I", FN_PTR(getMetadata)},
1582 {CC "resetCompilationStatistics", CC "()V", FN_PTR(resetCompilationStatistics)},
1583 {CC "disassembleCodeBlob", CC "(" INSTALLED_CODE ")" STRING, FN_PTR(disassembleCodeBlob)},
1584 {CC "executeInstalledCode", CC "([" OBJECT INSTALLED_CODE ")" OBJECT, FN_PTR(executeInstalledCode)},
1585 {CC "getLineNumberTable", CC "(" HS_RESOLVED_METHOD ")[J", FN_PTR(getLineNumberTable)},
1586 {CC "getLocalVariableTableStart", CC "(" HS_RESOLVED_METHOD ")J", FN_PTR(getLocalVariableTableStart)},
1587 {CC "getLocalVariableTableLength", CC "(" HS_RESOLVED_METHOD ")I", FN_PTR(getLocalVariableTableLength)},
1588 {CC "reprofile", CC "(" HS_RESOLVED_METHOD ")V", FN_PTR(reprofile)},
1589 {CC "invalidateInstalledCode", CC "(" INSTALLED_CODE ")V", FN_PTR(invalidateInstalledCode)},
1590 {CC "collectCounters", CC "()[J", FN_PTR(collectCounters)},
1591 {CC "allocateCompileId", CC "(" HS_RESOLVED_METHOD "I)I", FN_PTR(allocateCompileId)},
1592 {CC "isMature", CC "(" METASPACE_METHOD_DATA ")Z", FN_PTR(isMature)},
1593 {CC "hasCompiledCodeForOSR", CC "(" HS_RESOLVED_METHOD "II)Z", FN_PTR(hasCompiledCodeForOSR)},
1594 {CC "getSymbol", CC "(J)" STRING, FN_PTR(getSymbol)},
1595 {CC "getNextStackFrame", CC "(" HS_STACK_FRAME_REF "[" RESOLVED_METHOD "I)" HS_STACK_FRAME_REF, FN_PTR(getNextStackFrame)},
1596 {CC "materializeVirtualObjects", CC "(" HS_STACK_FRAME_REF "Z)V", FN_PTR(materializeVirtualObjects)},
1597 {CC "shouldDebugNonSafepoints", CC "()Z", FN_PTR(shouldDebugNonSafepoints)},
1598 {CC "writeDebugOutput", CC "([BII)V", FN_PTR(writeDebugOutput)},
1599 {CC "flushDebugOutput", CC "()V", FN_PTR(flushDebugOutput)},
1600 {CC "methodDataProfileDataSize", CC "(JI)I", FN_PTR(methodDataProfileDataSize)},
1601 {CC "interpreterFrameSize", CC "(" BYTECODE_FRAME ")I", FN_PTR(interpreterFrameSize)},
1602 };
1603
1604 int CompilerToVM::methods_count() {
1605 return sizeof(methods) / sizeof(JNINativeMethod);
1606 }
1607
|
456 }
457
458 return (jbyteArray) JNIHandles::make_local(THREAD, reconstituted_code);
459 C2V_END
460
461 C2V_VMENTRY(jint, getExceptionTableLength, (JNIEnv *, jobject, jobject jvmci_method))
462 ResourceMark rm;
463 methodHandle method = CompilerToVM::asMethod(jvmci_method);
464 return method->exception_table_length();
465 C2V_END
466
467 C2V_VMENTRY(jlong, getExceptionTableStart, (JNIEnv *, jobject, jobject jvmci_method))
468 ResourceMark rm;
469 methodHandle method = CompilerToVM::asMethod(jvmci_method);
470 if (method->exception_table_length() == 0) {
471 return 0L;
472 }
473 return (jlong) (address) method->exception_table_start();
474 C2V_END
475
476 C2V_VMENTRY(jobject, asResolvedJavaMethod, (JNIEnv *, jobject, jobject executable_handle))
477 oop executable = JNIHandles::resolve(executable_handle);
478 oop mirror = NULL;
479 int slot = 0;
480
481 if (executable->klass() == SystemDictionary::reflect_Constructor_klass()) {
482 mirror = java_lang_reflect_Constructor::clazz(executable);
483 slot = java_lang_reflect_Constructor::slot(executable);
484 } else {
485 assert(executable->klass() == SystemDictionary::reflect_Method_klass(), "wrong type");
486 mirror = java_lang_reflect_Method::clazz(executable);
487 slot = java_lang_reflect_Method::slot(executable);
488 }
489 Klass* holder = java_lang_Class::as_Klass(mirror);
490 methodHandle method = InstanceKlass::cast(holder)->method_with_idnum(slot);
491 oop result = CompilerToVM::get_jvmci_method(method, CHECK_NULL);
492 return JNIHandles::make_local(THREAD, result);
493 }
494
495 C2V_VMENTRY(jobject, getResolvedJavaMethod, (JNIEnv *, jobject, jobject base, jlong offset))
496 methodHandle method;
497 oop base_object = JNIHandles::resolve(base);
498 if (base_object == NULL) {
499 method = *((Method**)(offset));
500 } else if (base_object->is_a(SystemDictionary::MemberName_klass())) {
501 method = (Method*) (intptr_t) base_object->long_field(offset);
502 } else if (base_object->is_a(SystemDictionary::HotSpotResolvedJavaMethodImpl_klass())) {
503 method = *((Method**)(HotSpotResolvedJavaMethodImpl::metaspaceMethod(base_object) + offset));
504 } else {
505 THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
506 err_msg("Unexpected type: %s", base_object->klass()->external_name()));
507 }
508 assert (method.is_null() || method->is_method(), "invalid read");
509 oop result = CompilerToVM::get_jvmci_method(method, CHECK_NULL);
1512 bool is_top_frame = (bytecode_frame == top_bytecode_frame);
1513 Method* method = getMethodFromHotSpotMethod(BytecodePosition::method(bytecode_frame));
1514
1515 int frame_size = BytesPerWord * Interpreter::size_activation(method->max_stack(),
1516 temps + callee_parameters,
1517 extra_args,
1518 locks,
1519 callee_parameters,
1520 callee_locals,
1521 is_top_frame);
1522 size += frame_size;
1523
1524 callee_parameters = method->size_of_parameters();
1525 callee_locals = method->max_locals();
1526 extra_args = 0;
1527 bytecode_frame = BytecodePosition::caller(bytecode_frame);
1528 }
1529 return size + Deoptimization::last_frame_adjust(0, callee_locals) * BytesPerWord;
1530 C2V_END
1531
1532 C2V_VMENTRY(void, compileToBytecode, (JNIEnv*, jobject, jobject lambda_form_handle))
1533 Handle lambda_form = JNIHandles::resolve_non_null(lambda_form_handle);
1534 if (lambda_form->is_a(SystemDictionary::LambdaForm_klass())) {
1535 TempNewSymbol compileToBytecode = SymbolTable::new_symbol("compileToBytecode", CHECK);
1536 JavaValue result(T_VOID);
1537 JavaCalls::call_special(&result, lambda_form, SystemDictionary::LambdaForm_klass(), compileToBytecode, vmSymbols::void_method_signature(), CHECK);
1538 } else {
1539 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
1540 err_msg("Unexpected type: %s", lambda_form->klass()->external_name()));
1541 }
1542 C2V_END
1543
1544 #define CC (char*) /*cast a literal from (const char*)*/
1545 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &(c2v_ ## f))
1546
1547 #define STRING "Ljava/lang/String;"
1548 #define OBJECT "Ljava/lang/Object;"
1549 #define CLASS "Ljava/lang/Class;"
1550 #define EXECUTABLE "Ljava/lang/reflect/Executable;"
1551 #define STACK_TRACE_ELEMENT "Ljava/lang/StackTraceElement;"
1552 #define INSTALLED_CODE "Ljdk/vm/ci/code/InstalledCode;"
1553 #define TARGET_DESCRIPTION "Ljdk/vm/ci/code/TargetDescription;"
1554 #define BYTECODE_FRAME "Ljdk/vm/ci/code/BytecodeFrame;"
1555 #define RESOLVED_METHOD "Ljdk/vm/ci/meta/ResolvedJavaMethod;"
1556 #define HS_RESOLVED_METHOD "Ljdk/vm/ci/hotspot/HotSpotResolvedJavaMethodImpl;"
1557 #define HS_RESOLVED_KLASS "Ljdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl;"
1558 #define HS_CONSTANT_POOL "Ljdk/vm/ci/hotspot/HotSpotConstantPool;"
1559 #define HS_COMPILED_CODE "Ljdk/vm/ci/hotspot/HotSpotCompiledCode;"
1560 #define HS_CONFIG "Ljdk/vm/ci/hotspot/HotSpotVMConfig;"
1561 #define HS_METADATA "Ljdk/vm/ci/hotspot/HotSpotMetaData;"
1562 #define HS_STACK_FRAME_REF "Ljdk/vm/ci/hotspot/HotSpotStackFrameReference;"
1563 #define HS_SPECULATION_LOG "Ljdk/vm/ci/hotspot/HotSpotSpeculationLog;"
1564 #define METASPACE_METHOD_DATA "J"
1565
1566 JNINativeMethod CompilerToVM::methods[] = {
1567 {CC "getBytecode", CC "(" HS_RESOLVED_METHOD ")[B", FN_PTR(getBytecode)},
1568 {CC "getExceptionTableStart", CC "(" HS_RESOLVED_METHOD ")J", FN_PTR(getExceptionTableStart)},
1569 {CC "getExceptionTableLength", CC "(" HS_RESOLVED_METHOD ")I", FN_PTR(getExceptionTableLength)},
1570 {CC "findUniqueConcreteMethod", CC "(" HS_RESOLVED_KLASS HS_RESOLVED_METHOD ")" HS_RESOLVED_METHOD, FN_PTR(findUniqueConcreteMethod)},
1578 {CC "lookupNameInPool", CC "(" HS_CONSTANT_POOL "I)" STRING, FN_PTR(lookupNameInPool)},
1579 {CC "lookupNameAndTypeRefIndexInPool", CC "(" HS_CONSTANT_POOL "I)I", FN_PTR(lookupNameAndTypeRefIndexInPool)},
1580 {CC "lookupSignatureInPool", CC "(" HS_CONSTANT_POOL "I)" STRING, FN_PTR(lookupSignatureInPool)},
1581 {CC "lookupKlassRefIndexInPool", CC "(" HS_CONSTANT_POOL "I)I", FN_PTR(lookupKlassRefIndexInPool)},
1582 {CC "lookupKlassInPool", CC "(" HS_CONSTANT_POOL "I)Ljava/lang/Object;", FN_PTR(lookupKlassInPool)},
1583 {CC "lookupAppendixInPool", CC "(" HS_CONSTANT_POOL "I)" OBJECT, FN_PTR(lookupAppendixInPool)},
1584 {CC "lookupMethodInPool", CC "(" HS_CONSTANT_POOL "IB)" HS_RESOLVED_METHOD, FN_PTR(lookupMethodInPool)},
1585 {CC "constantPoolRemapInstructionOperandFromCache", CC "(" HS_CONSTANT_POOL "I)I", FN_PTR(constantPoolRemapInstructionOperandFromCache)},
1586 {CC "resolveConstantInPool", CC "(" HS_CONSTANT_POOL "I)" OBJECT, FN_PTR(resolveConstantInPool)},
1587 {CC "resolvePossiblyCachedConstantInPool", CC "(" HS_CONSTANT_POOL "I)" OBJECT, FN_PTR(resolvePossiblyCachedConstantInPool)},
1588 {CC "resolveTypeInPool", CC "(" HS_CONSTANT_POOL "I)" HS_RESOLVED_KLASS, FN_PTR(resolveTypeInPool)},
1589 {CC "resolveFieldInPool", CC "(" HS_CONSTANT_POOL "I" HS_RESOLVED_METHOD "B[J)" HS_RESOLVED_KLASS, FN_PTR(resolveFieldInPool)},
1590 {CC "resolveInvokeDynamicInPool", CC "(" HS_CONSTANT_POOL "I)V", FN_PTR(resolveInvokeDynamicInPool)},
1591 {CC "resolveInvokeHandleInPool", CC "(" HS_CONSTANT_POOL "I)V", FN_PTR(resolveInvokeHandleInPool)},
1592 {CC "resolveMethod", CC "(" HS_RESOLVED_KLASS HS_RESOLVED_METHOD HS_RESOLVED_KLASS ")" HS_RESOLVED_METHOD, FN_PTR(resolveMethod)},
1593 {CC "getSignaturePolymorphicHolders", CC "()[" STRING, FN_PTR(getSignaturePolymorphicHolders)},
1594 {CC "getVtableIndexForInterfaceMethod", CC "(" HS_RESOLVED_KLASS HS_RESOLVED_METHOD ")I", FN_PTR(getVtableIndexForInterfaceMethod)},
1595 {CC "getClassInitializer", CC "(" HS_RESOLVED_KLASS ")" HS_RESOLVED_METHOD, FN_PTR(getClassInitializer)},
1596 {CC "hasFinalizableSubclass", CC "(" HS_RESOLVED_KLASS ")Z", FN_PTR(hasFinalizableSubclass)},
1597 {CC "getMaxCallTargetOffset", CC "(J)J", FN_PTR(getMaxCallTargetOffset)},
1598 {CC "asResolvedJavaMethod", CC "(" EXECUTABLE ")" HS_RESOLVED_METHOD, FN_PTR(asResolvedJavaMethod)},
1599 {CC "getResolvedJavaMethod", CC "(Ljava/lang/Object;J)" HS_RESOLVED_METHOD, FN_PTR(getResolvedJavaMethod)},
1600 {CC "getConstantPool", CC "(Ljava/lang/Object;)" HS_CONSTANT_POOL, FN_PTR(getConstantPool)},
1601 {CC "getResolvedJavaType", CC "(Ljava/lang/Object;JZ)" HS_RESOLVED_KLASS, FN_PTR(getResolvedJavaType)},
1602 {CC "readConfiguration", CC "()[" OBJECT, FN_PTR(readConfiguration)},
1603 {CC "installCode", CC "(" TARGET_DESCRIPTION HS_COMPILED_CODE INSTALLED_CODE HS_SPECULATION_LOG ")I", FN_PTR(installCode)},
1604 {CC "getMetadata", CC "(" TARGET_DESCRIPTION HS_COMPILED_CODE HS_METADATA ")I", FN_PTR(getMetadata)},
1605 {CC "resetCompilationStatistics", CC "()V", FN_PTR(resetCompilationStatistics)},
1606 {CC "disassembleCodeBlob", CC "(" INSTALLED_CODE ")" STRING, FN_PTR(disassembleCodeBlob)},
1607 {CC "executeInstalledCode", CC "([" OBJECT INSTALLED_CODE ")" OBJECT, FN_PTR(executeInstalledCode)},
1608 {CC "getLineNumberTable", CC "(" HS_RESOLVED_METHOD ")[J", FN_PTR(getLineNumberTable)},
1609 {CC "getLocalVariableTableStart", CC "(" HS_RESOLVED_METHOD ")J", FN_PTR(getLocalVariableTableStart)},
1610 {CC "getLocalVariableTableLength", CC "(" HS_RESOLVED_METHOD ")I", FN_PTR(getLocalVariableTableLength)},
1611 {CC "reprofile", CC "(" HS_RESOLVED_METHOD ")V", FN_PTR(reprofile)},
1612 {CC "invalidateInstalledCode", CC "(" INSTALLED_CODE ")V", FN_PTR(invalidateInstalledCode)},
1613 {CC "collectCounters", CC "()[J", FN_PTR(collectCounters)},
1614 {CC "allocateCompileId", CC "(" HS_RESOLVED_METHOD "I)I", FN_PTR(allocateCompileId)},
1615 {CC "isMature", CC "(" METASPACE_METHOD_DATA ")Z", FN_PTR(isMature)},
1616 {CC "hasCompiledCodeForOSR", CC "(" HS_RESOLVED_METHOD "II)Z", FN_PTR(hasCompiledCodeForOSR)},
1617 {CC "getSymbol", CC "(J)" STRING, FN_PTR(getSymbol)},
1618 {CC "getNextStackFrame", CC "(" HS_STACK_FRAME_REF "[" RESOLVED_METHOD "I)" HS_STACK_FRAME_REF, FN_PTR(getNextStackFrame)},
1619 {CC "materializeVirtualObjects", CC "(" HS_STACK_FRAME_REF "Z)V", FN_PTR(materializeVirtualObjects)},
1620 {CC "shouldDebugNonSafepoints", CC "()Z", FN_PTR(shouldDebugNonSafepoints)},
1621 {CC "writeDebugOutput", CC "([BII)V", FN_PTR(writeDebugOutput)},
1622 {CC "flushDebugOutput", CC "()V", FN_PTR(flushDebugOutput)},
1623 {CC "methodDataProfileDataSize", CC "(JI)I", FN_PTR(methodDataProfileDataSize)},
1624 {CC "interpreterFrameSize", CC "(" BYTECODE_FRAME ")I", FN_PTR(interpreterFrameSize)},
1625 {CC "compileToBytecode", CC "(" OBJECT ")V", FN_PTR(compileToBytecode)},
1626 };
1627
1628 int CompilerToVM::methods_count() {
1629 return sizeof(methods) / sizeof(JNINativeMethod);
1630 }
1631
|