# HG changeset patch # User rschatz # Date 1463050775 -7200 # Thu May 12 12:59:35 2016 +0200 # Node ID 0ea97e497675b910c12874c08736b57f87391c3d # Parent 6e0056d7769d45470a85eb5480d0bbf00d5f5de6 8156768: [JVMCI] remove support for patching Symbol pointers diff --git a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java --- a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java +++ b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java @@ -480,11 +480,6 @@ native String getSymbol(long metaspaceSymbol); /** - * Lookup a VMSymbol from a String. - */ - native long lookupSymbol(String symbol); - - /** * Looks for the next Java stack frame matching an entry in {@code methods}. * * @param frame the starting point of the search, where {@code null} refers to the topmost frame diff --git a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMemoryAccessProvider.java b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMemoryAccessProvider.java --- a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMemoryAccessProvider.java +++ b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMemoryAccessProvider.java @@ -39,6 +39,4 @@ Constant readNarrowKlassPointerConstant(Constant base, long displacement, CompressEncoding encoding); Constant readMethodPointerConstant(Constant base, long displacement); - - Constant readSymbolConstant(Constant base, long displacement); } diff --git a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl.java b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl.java --- a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl.java +++ b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl.java @@ -232,16 +232,4 @@ HotSpotResolvedJavaMethodImpl method = runtime.getCompilerToVM().getResolvedJavaMethod(baseObject, displacement); return HotSpotMetaspaceConstantImpl.forMetaspaceObject(method, false); } - - @Override - public Constant readSymbolConstant(Constant base, long displacement) { - int bits = runtime.getConfig().symbolPointerSize * Byte.SIZE; - long pointer = readRawValue(base, displacement, bits); - if (pointer == 0) { - return JavaConstant.NULL_POINTER; - } else { - String symbol = runtime.getCompilerToVM().getSymbol(pointer); - return new HotSpotSymbol(symbol, pointer).asConstant(); - } - } } diff --git a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaAccessProvider.java b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaAccessProvider.java --- a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaAccessProvider.java +++ b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaAccessProvider.java @@ -78,15 +78,6 @@ return new HotSpotSignature(runtime, signature); } - public HotSpotSymbol lookupSymbol(String symbol) { - long pointer = runtime.getCompilerToVM().lookupSymbol(symbol); - if (pointer == 0) { - return null; - } else { - return new HotSpotSymbol(symbol, pointer); - } - } - /** * {@link Field} object of {@link Method#slot}. */ diff --git a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaspaceConstant.java b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaspaceConstant.java --- a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaspaceConstant.java +++ b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaspaceConstant.java @@ -29,6 +29,4 @@ HotSpotResolvedObjectType asResolvedJavaType(); HotSpotResolvedJavaMethod asResolvedJavaMethod(); - - HotSpotSymbol asSymbol(); } diff --git a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaspaceConstantImpl.java b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaspaceConstantImpl.java --- a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaspaceConstantImpl.java +++ b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaspaceConstantImpl.java @@ -108,11 +108,4 @@ } return null; } - - public HotSpotSymbol asSymbol() { - if (metaspaceObject instanceof HotSpotSymbol) { - return (HotSpotSymbol) metaspaceObject; - } - return null; - } } diff --git a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotSymbol.java b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotSymbol.java deleted file mode 100644 --- a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotSymbol.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package jdk.vm.ci.hotspot; - -import jdk.vm.ci.meta.Constant; - -/** - * Class to access the C++ {@code vmSymbols} table. - */ -public final class HotSpotSymbol implements MetaspaceWrapperObject { - - private final String symbol; - private final long pointer; - - HotSpotSymbol(String symbol, long pointer) { - this.symbol = symbol; - this.pointer = pointer; - } - - public String getSymbol() { - return symbol; - } - - public Constant asConstant() { - return HotSpotMetaspaceConstantImpl.forMetaspaceObject(this, false); - } - - @Override - public long getMetaspacePointer() { - return pointer; - } - - @Override - public String toString() { - return "Symbol<" + symbol + ">"; - } -} diff --git a/src/share/vm/jvmci/jvmciCodeInstaller.cpp b/src/share/vm/jvmci/jvmciCodeInstaller.cpp --- a/src/share/vm/jvmci/jvmciCodeInstaller.cpp +++ b/src/share/vm/jvmci/jvmciCodeInstaller.cpp @@ -181,8 +181,8 @@ /* * This method needs to return a raw (untyped) pointer, since the value of a pointer to the base * class is in general not equal to the pointer of the subclass. When patching metaspace pointers, - * the compiler expects a direct pointer to the subclass (Klass*, Method* or Symbol*), not a - * pointer to the base class (Metadata* or MetaspaceObj*). + * the compiler expects a direct pointer to the subclass (Klass* or Method*), not a pointer to the + * base class (Metadata* or MetaspaceObj*). */ oop obj = HotSpotMetaspaceConstantImpl::metaspaceObject(constant); if (obj->is_a(HotSpotResolvedObjectTypeImpl::klass())) { @@ -197,11 +197,6 @@ int index = _oop_recorder->find_index(method); TRACE_jvmci_3("metadata[%d of %d] = %s", index, _oop_recorder->metadata_count(), method->name()->as_C_string()); return method; - } else if (obj->is_a(HotSpotSymbol::klass())) { - Symbol* symbol = (Symbol*) (address) HotSpotSymbol::pointer(obj); - assert(!HotSpotMetaspaceConstantImpl::compressed(constant), "unexpected compressed symbol pointer %s @ " INTPTR_FORMAT, symbol->as_C_string(), p2i(symbol)); - TRACE_jvmci_3("symbol = %s", symbol->as_C_string()); - return symbol; } else { JVMCI_ERROR_NULL("unexpected metadata reference for constant of type %s", obj->klass()->signature_name()); } diff --git a/src/share/vm/jvmci/jvmciCompilerToVM.cpp b/src/share/vm/jvmci/jvmciCompilerToVM.cpp --- a/src/share/vm/jvmci/jvmciCompilerToVM.cpp +++ b/src/share/vm/jvmci/jvmciCompilerToVM.cpp @@ -1048,11 +1048,6 @@ return JNIHandles::make_local(THREAD, sym()); C2V_END -C2V_VMENTRY(jlong, lookupSymbol, (JNIEnv*, jobject, jobject string)) - Symbol* symbol = java_lang_String::as_symbol_or_null(JNIHandles::resolve(string)); - return (jlong) symbol; -C2V_END - bool matches(jobjectArray methods, Method* method) { objArrayOop methods_oop = (objArrayOop) JNIHandles::resolve(methods); @@ -1480,7 +1475,6 @@ {CC "isMature", CC "(" METASPACE_METHOD_DATA ")Z", FN_PTR(isMature)}, {CC "hasCompiledCodeForOSR", CC "(" HS_RESOLVED_METHOD "II)Z", FN_PTR(hasCompiledCodeForOSR)}, {CC "getSymbol", CC "(J)" STRING, FN_PTR(getSymbol)}, - {CC "lookupSymbol", CC "(" STRING ")J", FN_PTR(lookupSymbol)}, {CC "getNextStackFrame", CC "(" HS_STACK_FRAME_REF "[" RESOLVED_METHOD "I)" HS_STACK_FRAME_REF, FN_PTR(getNextStackFrame)}, {CC "materializeVirtualObjects", CC "(" HS_STACK_FRAME_REF "Z)V", FN_PTR(materializeVirtualObjects)}, {CC "shouldDebugNonSafepoints", CC "()Z", FN_PTR(shouldDebugNonSafepoints)}, diff --git a/src/share/vm/jvmci/jvmciJavaClasses.hpp b/src/share/vm/jvmci/jvmciJavaClasses.hpp --- a/src/share/vm/jvmci/jvmciJavaClasses.hpp +++ b/src/share/vm/jvmci/jvmciJavaClasses.hpp @@ -64,9 +64,6 @@ start_class(HotSpotResolvedJavaMethodImpl) \ long_field(HotSpotResolvedJavaMethodImpl, metaspaceMethod) \ end_class \ - start_class(HotSpotSymbol) \ - long_field(HotSpotSymbol, pointer) \ - end_class \ start_class(InstalledCode) \ long_field(InstalledCode, address) \ long_field(InstalledCode, entryPoint) \ diff --git a/src/share/vm/jvmci/systemDictionary_jvmci.hpp b/src/share/vm/jvmci/systemDictionary_jvmci.hpp --- a/src/share/vm/jvmci/systemDictionary_jvmci.hpp +++ b/src/share/vm/jvmci/systemDictionary_jvmci.hpp @@ -49,7 +49,6 @@ do_klass(HotSpotJVMCIMetaAccessContext_klass, jdk_vm_ci_hotspot_HotSpotJVMCIMetaAccessContext, Jvmci) \ do_klass(HotSpotJVMCIRuntime_klass, jdk_vm_ci_hotspot_HotSpotJVMCIRuntime, Jvmci) \ do_klass(HotSpotSpeculationLog_klass, jdk_vm_ci_hotspot_HotSpotSpeculationLog, Jvmci) \ - do_klass(HotSpotSymbol_klass, jdk_vm_ci_hotspot_HotSpotSymbol, Jvmci) \ do_klass(Assumptions_ConcreteMethod_klass, jdk_vm_ci_meta_Assumptions_ConcreteMethod, Jvmci) \ do_klass(Assumptions_NoFinalizableSubclass_klass, jdk_vm_ci_meta_Assumptions_NoFinalizableSubclass, Jvmci) \ do_klass(Assumptions_ConcreteSubtype_klass, jdk_vm_ci_meta_Assumptions_ConcreteSubtype, Jvmci) \ diff --git a/src/share/vm/jvmci/vmSymbols_jvmci.hpp b/src/share/vm/jvmci/vmSymbols_jvmci.hpp --- a/src/share/vm/jvmci/vmSymbols_jvmci.hpp +++ b/src/share/vm/jvmci/vmSymbols_jvmci.hpp @@ -50,7 +50,6 @@ template(jdk_vm_ci_hotspot_HotSpotJVMCIMetaAccessContext, "jdk/vm/ci/hotspot/HotSpotJVMCIMetaAccessContext") \ template(jdk_vm_ci_hotspot_HotSpotJVMCIRuntime, "jdk/vm/ci/hotspot/HotSpotJVMCIRuntime") \ template(jdk_vm_ci_hotspot_HotSpotSpeculationLog, "jdk/vm/ci/hotspot/HotSpotSpeculationLog") \ - template(jdk_vm_ci_hotspot_HotSpotSymbol, "jdk/vm/ci/hotspot/HotSpotSymbol") \ template(jdk_vm_ci_meta_JavaConstant, "jdk/vm/ci/meta/JavaConstant") \ template(jdk_vm_ci_meta_PrimitiveConstant, "jdk/vm/ci/meta/PrimitiveConstant") \ template(jdk_vm_ci_meta_RawConstant, "jdk/vm/ci/meta/RawConstant") \ diff --git a/test/compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/DataPatchTest.java b/test/compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/DataPatchTest.java --- a/test/compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/DataPatchTest.java +++ b/test/compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/DataPatchTest.java @@ -42,7 +42,6 @@ import jdk.vm.ci.code.site.DataSectionReference; import jdk.vm.ci.hotspot.HotSpotConstant; import jdk.vm.ci.hotspot.HotSpotMetaAccessProvider; -import jdk.vm.ci.hotspot.HotSpotSymbol; import jdk.vm.ci.hotspot.HotSpotVMConfig; import jdk.vm.ci.meta.ResolvedJavaType; @@ -158,32 +157,4 @@ asm.emitPointerRet(ret); }); } - - public static long getConstSymbol(HotSpotMetaAccessProvider meta) { - HotSpotSymbol symbol = meta.lookupSymbol("java/lang/Object"); - return symbol.getMetaspacePointer(); - } - - private void testSymbol(TestCompiler compiler) { - test(compiler, getMethod("getConstSymbol", HotSpotMetaAccessProvider.class), (HotSpotMetaAccessProvider) metaAccess); - } - - @Test - public void testInlineSymbol() { - testSymbol(asm -> { - HotSpotSymbol symbol = ((HotSpotMetaAccessProvider) metaAccess).lookupSymbol("java/lang/Object"); - Register ret = asm.emitLoadPointer((HotSpotConstant) symbol.asConstant()); - asm.emitPointerRet(ret); - }); - } - - @Test - public void testSymbolInDataSection() { - testSymbol(asm -> { - HotSpotSymbol symbol = ((HotSpotMetaAccessProvider) metaAccess).lookupSymbol("java/lang/Object"); - DataSectionReference ref = asm.emitDataItem((HotSpotConstant) symbol.asConstant()); - Register ret = asm.emitLoadPointer(ref); - asm.emitPointerRet(ret); - }); - } }