comparison src/share/vm/jvmci/jvmciCompilerToVM.cpp @ 23992:1b8892b4ce9c

lazily cache the name of a HotSpotResolvedJavaMethodImpl
author Doug Simon <doug.simon@oracle.com>
date Tue, 31 Jan 2017 16:44:20 +0100
parents 115d4e0d7b87
children ebce30b702eb
comparison
equal deleted inserted replaced
23991:4913d70f630b 23992:1b8892b4ce9c
1120 } 1120 }
1121 Handle name = java_lang_String::create_from_symbol(klass->field_name(index), CHECK_NULL); 1121 Handle name = java_lang_String::create_from_symbol(klass->field_name(index), CHECK_NULL);
1122 return JNIHandles::make_local(THREAD, name()); 1122 return JNIHandles::make_local(THREAD, name());
1123 C2V_END 1123 C2V_END
1124 1124
1125 C2V_VMENTRY(jobject, getMethodName, (JNIEnv*, jobject, jobject jvmci_method))
1126 Method* method = CompilerToVM::asMethod(jvmci_method);
1127 Handle name = java_lang_String::create_from_symbol(method->name(), CHECK_NULL);
1128 return JNIHandles::make_local(THREAD, name());
1129 C2V_END
1130
1125 bool matches(jobjectArray methods, Method* method) { 1131 bool matches(jobjectArray methods, Method* method) {
1126 objArrayOop methods_oop = (objArrayOop) JNIHandles::resolve(methods); 1132 objArrayOop methods_oop = (objArrayOop) JNIHandles::resolve(methods);
1127 1133
1128 for (int i = 0; i < methods_oop->length(); i++) { 1134 for (int i = 0; i < methods_oop->length(); i++) {
1129 oop resolved = methods_oop->obj_at(i); 1135 oop resolved = methods_oop->obj_at(i);
1527 {CC"findUniqueConcreteMethod", CC"("HS_RESOLVED_KLASS HS_RESOLVED_METHOD")"HS_RESOLVED_METHOD, FN_PTR(findUniqueConcreteMethod)}, 1533 {CC"findUniqueConcreteMethod", CC"("HS_RESOLVED_KLASS HS_RESOLVED_METHOD")"HS_RESOLVED_METHOD, FN_PTR(findUniqueConcreteMethod)},
1528 {CC"getImplementor", CC"("HS_RESOLVED_KLASS")"HS_RESOLVED_KLASS, FN_PTR(getImplementor)}, 1534 {CC"getImplementor", CC"("HS_RESOLVED_KLASS")"HS_RESOLVED_KLASS, FN_PTR(getImplementor)},
1529 {CC"getStackTraceElement", CC"("HS_RESOLVED_METHOD"I)"STACK_TRACE_ELEMENT, FN_PTR(getStackTraceElement)}, 1535 {CC"getStackTraceElement", CC"("HS_RESOLVED_METHOD"I)"STACK_TRACE_ELEMENT, FN_PTR(getStackTraceElement)},
1530 {CC"methodIsIgnoredBySecurityStackWalk", CC"("HS_RESOLVED_METHOD")Z", FN_PTR(methodIsIgnoredBySecurityStackWalk)}, 1536 {CC"methodIsIgnoredBySecurityStackWalk", CC"("HS_RESOLVED_METHOD")Z", FN_PTR(methodIsIgnoredBySecurityStackWalk)},
1531 {CC"doNotInlineOrCompile", CC"("HS_RESOLVED_METHOD")V", FN_PTR(doNotInlineOrCompile)}, 1537 {CC"doNotInlineOrCompile", CC"("HS_RESOLVED_METHOD")V", FN_PTR(doNotInlineOrCompile)},
1532 {CC"isCompilable", CC"(" HS_RESOLVED_METHOD ")Z", FN_PTR(isCompilable)}, 1538 {CC"isCompilable", CC"("HS_RESOLVED_METHOD")Z", FN_PTR(isCompilable)},
1533 {CC"hasNeverInlineDirective", CC"(" HS_RESOLVED_METHOD ")Z", FN_PTR(hasNeverInlineDirective)}, 1539 {CC"hasNeverInlineDirective", CC"("HS_RESOLVED_METHOD")Z", FN_PTR(hasNeverInlineDirective)},
1534 {CC"shouldInlineMethod", CC"("HS_RESOLVED_METHOD")Z", FN_PTR(shouldInlineMethod)}, 1540 {CC"shouldInlineMethod", CC"("HS_RESOLVED_METHOD")Z", FN_PTR(shouldInlineMethod)},
1535 {CC"lookupType", CC"("STRING CLASS"Z)"HS_RESOLVED_KLASS, FN_PTR(lookupType)}, 1541 {CC"lookupType", CC"("STRING CLASS"Z)"HS_RESOLVED_KLASS, FN_PTR(lookupType)},
1536 {CC"lookupNameInPool", CC"("HS_CONSTANT_POOL"I)"STRING, FN_PTR(lookupNameInPool)}, 1542 {CC"lookupNameInPool", CC"("HS_CONSTANT_POOL"I)"STRING, FN_PTR(lookupNameInPool)},
1537 {CC"lookupNameAndTypeRefIndexInPool", CC"("HS_CONSTANT_POOL"I)I", FN_PTR(lookupNameAndTypeRefIndexInPool)}, 1543 {CC"lookupNameAndTypeRefIndexInPool", CC"("HS_CONSTANT_POOL"I)I", FN_PTR(lookupNameAndTypeRefIndexInPool)},
1538 {CC"lookupSignatureInPool", CC"("HS_CONSTANT_POOL"I)"STRING, FN_PTR(lookupSignatureInPool)}, 1544 {CC"lookupSignatureInPool", CC"("HS_CONSTANT_POOL"I)"STRING, FN_PTR(lookupSignatureInPool)},
1546 {CC"resolveTypeInPool", CC"("HS_CONSTANT_POOL"I)"HS_RESOLVED_KLASS, FN_PTR(resolveTypeInPool)}, 1552 {CC"resolveTypeInPool", CC"("HS_CONSTANT_POOL"I)"HS_RESOLVED_KLASS, FN_PTR(resolveTypeInPool)},
1547 {CC"resolveFieldInPool", CC"("HS_CONSTANT_POOL"IB[I)"HS_RESOLVED_KLASS, FN_PTR(resolveFieldInPool)}, 1553 {CC"resolveFieldInPool", CC"("HS_CONSTANT_POOL"IB[I)"HS_RESOLVED_KLASS, FN_PTR(resolveFieldInPool)},
1548 {CC"resolveInvokeDynamicInPool", CC"("HS_CONSTANT_POOL"I)V", FN_PTR(resolveInvokeDynamicInPool)}, 1554 {CC"resolveInvokeDynamicInPool", CC"("HS_CONSTANT_POOL"I)V", FN_PTR(resolveInvokeDynamicInPool)},
1549 {CC"resolveInvokeHandleInPool", CC"("HS_CONSTANT_POOL"I)V", FN_PTR(resolveInvokeHandleInPool)}, 1555 {CC"resolveInvokeHandleInPool", CC"("HS_CONSTANT_POOL"I)V", FN_PTR(resolveInvokeHandleInPool)},
1550 {CC"resolveMethod", CC"("HS_RESOLVED_KLASS HS_RESOLVED_METHOD HS_RESOLVED_KLASS")"HS_RESOLVED_METHOD, FN_PTR(resolveMethod)}, 1556 {CC"resolveMethod", CC"("HS_RESOLVED_KLASS HS_RESOLVED_METHOD HS_RESOLVED_KLASS")"HS_RESOLVED_METHOD, FN_PTR(resolveMethod)},
1551 {CC "getSignaturePolymorphicHolders", CC "()[" STRING, FN_PTR(getSignaturePolymorphicHolders)}, 1557 {CC"getSignaturePolymorphicHolders", CC"()[" STRING, FN_PTR(getSignaturePolymorphicHolders)},
1552 {CC"getVtableIndexForInterfaceMethod", CC"("HS_RESOLVED_KLASS HS_RESOLVED_METHOD")I", FN_PTR(getVtableIndexForInterfaceMethod)}, 1558 {CC"getVtableIndexForInterfaceMethod", CC"("HS_RESOLVED_KLASS HS_RESOLVED_METHOD")I", FN_PTR(getVtableIndexForInterfaceMethod)},
1553 {CC"getClassInitializer", CC"("HS_RESOLVED_KLASS")"HS_RESOLVED_METHOD, FN_PTR(getClassInitializer)}, 1559 {CC"getClassInitializer", CC"("HS_RESOLVED_KLASS")"HS_RESOLVED_METHOD, FN_PTR(getClassInitializer)},
1554 {CC"hasFinalizableSubclass", CC"("HS_RESOLVED_KLASS")Z", FN_PTR(hasFinalizableSubclass)}, 1560 {CC"hasFinalizableSubclass", CC"("HS_RESOLVED_KLASS")Z", FN_PTR(hasFinalizableSubclass)},
1555 {CC"getMaxCallTargetOffset", CC"(J)J", FN_PTR(getMaxCallTargetOffset)}, 1561 {CC"getMaxCallTargetOffset", CC"(J)J", FN_PTR(getMaxCallTargetOffset)},
1556 {CC"asResolvedJavaMethod", CC "(" EXECUTABLE ")" HS_RESOLVED_METHOD, FN_PTR(asResolvedJavaMethod)}, 1562 {CC"asResolvedJavaMethod", CC"(" EXECUTABLE ")" HS_RESOLVED_METHOD, FN_PTR(asResolvedJavaMethod)},
1557 {CC"getResolvedJavaMethod", CC"(Ljava/lang/Object;J)"HS_RESOLVED_METHOD, FN_PTR(getResolvedJavaMethod)}, 1563 {CC"getResolvedJavaMethod", CC"(Ljava/lang/Object;J)"HS_RESOLVED_METHOD, FN_PTR(getResolvedJavaMethod)},
1558 {CC"getConstantPool", CC"(Ljava/lang/Object;)"HS_CONSTANT_POOL, FN_PTR(getConstantPool)}, 1564 {CC"getConstantPool", CC"(Ljava/lang/Object;)"HS_CONSTANT_POOL, FN_PTR(getConstantPool)},
1559 {CC"getResolvedJavaType", CC"(Ljava/lang/Object;JZ)"HS_RESOLVED_KLASS, FN_PTR(getResolvedJavaType)}, 1565 {CC"getResolvedJavaType", CC"(Ljava/lang/Object;JZ)"HS_RESOLVED_KLASS, FN_PTR(getResolvedJavaType)},
1560 {CC"readConfiguration", CC"()[Ljava/lang/Object;", FN_PTR(readConfiguration)}, 1566 {CC"readConfiguration", CC"()[Ljava/lang/Object;", FN_PTR(readConfiguration)},
1561 {CC"installCode", CC"("TARGET_DESCRIPTION HS_COMPILED_CODE INSTALLED_CODE HS_SPECULATION_LOG")I", FN_PTR(installCode)}, 1567 {CC"installCode", CC"("TARGET_DESCRIPTION HS_COMPILED_CODE INSTALLED_CODE HS_SPECULATION_LOG")I", FN_PTR(installCode)},
1572 {CC"allocateCompileId", CC"("HS_RESOLVED_METHOD"I)I", FN_PTR(allocateCompileId)}, 1578 {CC"allocateCompileId", CC"("HS_RESOLVED_METHOD"I)I", FN_PTR(allocateCompileId)},
1573 {CC"isMature", CC"("METASPACE_METHOD_DATA")Z", FN_PTR(isMature)}, 1579 {CC"isMature", CC"("METASPACE_METHOD_DATA")Z", FN_PTR(isMature)},
1574 {CC"hasCompiledCodeForOSR", CC"("HS_RESOLVED_METHOD"II)Z", FN_PTR(hasCompiledCodeForOSR)}, 1580 {CC"hasCompiledCodeForOSR", CC"("HS_RESOLVED_METHOD"II)Z", FN_PTR(hasCompiledCodeForOSR)},
1575 {CC"getSymbol", CC"(J)"STRING, FN_PTR(getSymbol)}, 1581 {CC"getSymbol", CC"(J)"STRING, FN_PTR(getSymbol)},
1576 {CC"getFieldName", CC"("HS_RESOLVED_KLASS"I)"STRING, FN_PTR(getFieldName)}, 1582 {CC"getFieldName", CC"("HS_RESOLVED_KLASS"I)"STRING, FN_PTR(getFieldName)},
1583 {CC"getMethodName", CC"("HS_RESOLVED_METHOD")"STRING, FN_PTR(getMethodName)},
1577 {CC"getNextStackFrame", CC"("HS_STACK_FRAME_REF "["RESOLVED_METHOD"I)"HS_STACK_FRAME_REF, FN_PTR(getNextStackFrame)}, 1584 {CC"getNextStackFrame", CC"("HS_STACK_FRAME_REF "["RESOLVED_METHOD"I)"HS_STACK_FRAME_REF, FN_PTR(getNextStackFrame)},
1578 {CC"materializeVirtualObjects", CC"("HS_STACK_FRAME_REF"Z)V", FN_PTR(materializeVirtualObjects)}, 1585 {CC"materializeVirtualObjects", CC"("HS_STACK_FRAME_REF"Z)V", FN_PTR(materializeVirtualObjects)},
1579 {CC"shouldDebugNonSafepoints", CC"()Z", FN_PTR(shouldDebugNonSafepoints)}, 1586 {CC"shouldDebugNonSafepoints", CC"()Z", FN_PTR(shouldDebugNonSafepoints)},
1580 {CC"writeDebugOutput", CC"([BII)V", FN_PTR(writeDebugOutput)}, 1587 {CC"writeDebugOutput", CC"([BII)V", FN_PTR(writeDebugOutput)},
1581 {CC"flushDebugOutput", CC"()V", FN_PTR(flushDebugOutput)}, 1588 {CC"flushDebugOutput", CC"()V", FN_PTR(flushDebugOutput)},
1582 {CC"methodDataProfileDataSize", CC"(JI)I", FN_PTR(methodDataProfileDataSize)}, 1589 {CC"methodDataProfileDataSize", CC"(JI)I", FN_PTR(methodDataProfileDataSize)},
1583 {CC"interpreterFrameSize", CC"("BYTECODE_FRAME")I", FN_PTR(interpreterFrameSize)}, 1590 {CC"interpreterFrameSize", CC"("BYTECODE_FRAME")I", FN_PTR(interpreterFrameSize)},
1584 {CC"compileToBytecode", CC "(" OBJECT ")V", FN_PTR(compileToBytecode)}, 1591 {CC"compileToBytecode", CC"(" OBJECT ")V", FN_PTR(compileToBytecode)},
1585 }; 1592 };
1586 1593
1587 int CompilerToVM::methods_count() { 1594 int CompilerToVM::methods_count() {
1588 return sizeof(methods) / sizeof(JNINativeMethod); 1595 return sizeof(methods) / sizeof(JNINativeMethod);
1589 } 1596 }