Mercurial > hg > graal-jvmci-8
changeset 23315:21fe118a18e6
Backed out changeset 2d1ca131b8be
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 08 Mar 2016 09:17:23 +0100 |
parents | 2d1ca131b8be |
children | c0df579bf9db |
files | jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaAccessProvider.java src/share/vm/jvmci/jvmciCompilerToVM.cpp |
diffstat | 3 files changed, 14 insertions(+), 36 deletions(-) [+] |
line wrap: on
line diff
--- a/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java Mon Mar 07 10:54:56 2016 +0100 +++ b/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java Tue Mar 08 09:17:23 2016 +0100 @@ -27,7 +27,6 @@ import static jdk.vm.ci.inittimer.InitTimer.timer; import java.lang.reflect.Constructor; -import java.lang.reflect.Field; import java.lang.reflect.Method; import jdk.vm.ci.code.BytecodeFrame; @@ -357,12 +356,6 @@ native HotSpotResolvedJavaMethodImpl getResolvedJavaMethodAtSlot(Class<?> holder, int slot); /** - * Gets the flags (including VM internal flags) for the field identified by {@code holder} and - * slot number {@code slot} (i.e. {@link Field#slot}). - */ - native int getResolvedJavaFieldFlagsAtSlot(Class<?> holder, int slot); - - /** * Gets the maximum absolute offset of a PC relative call to {@code address} from any position * in the code cache. *
--- a/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaAccessProvider.java Mon Mar 07 10:54:56 2016 +0100 +++ b/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaAccessProvider.java Tue Mar 08 09:17:23 2016 +0100 @@ -85,11 +85,6 @@ private Field reflectionMethodSlot = getReflectionSlotField(Method.class); /** - * {@link Field} object of {@link Field#slot}. - */ - private Field reflectionFieldSlot = getReflectionSlotField(Field.class); - - /** * {@link Field} object of {@link Constructor#slot}. */ private Field reflectionConstructorSlot = getReflectionSlotField(Constructor.class); @@ -116,25 +111,22 @@ } public ResolvedJavaField lookupJavaField(Field reflectionField) { - try { - String name = reflectionField.getName(); - Class<?> fieldHolder = reflectionField.getDeclaringClass(); - Class<?> fieldType = reflectionField.getType(); - final int slot = reflectionFieldSlot.getInt(reflectionField); + String name = reflectionField.getName(); + Class<?> fieldHolder = reflectionField.getDeclaringClass(); + Class<?> fieldType = reflectionField.getType(); + // java.lang.reflect.Field's modifiers should be enough here since VM internal modifier bits + // are not used (yet). + final int modifiers = reflectionField.getModifiers(); + final long offset = Modifier.isStatic(modifiers) ? UNSAFE.staticFieldOffset(reflectionField) : UNSAFE.objectFieldOffset(reflectionField); - HotSpotResolvedObjectType holder = fromObjectClass(fieldHolder); - final int flags = runtime.getCompilerToVM().getResolvedJavaFieldFlagsAtSlot(fieldHolder, slot); - final long offset = Modifier.isStatic(flags) ? UNSAFE.staticFieldOffset(reflectionField) : UNSAFE.objectFieldOffset(reflectionField); - JavaType type = runtime.fromClass(fieldType); + HotSpotResolvedObjectType holder = fromObjectClass(fieldHolder); + JavaType type = runtime.fromClass(fieldType); - if (offset != -1) { - HotSpotResolvedObjectType resolved = holder; - return resolved.createField(name, type, offset, flags); - } else { - throw new JVMCIError("unresolved field %s", reflectionField); - } - } catch (IllegalArgumentException | IllegalAccessException e) { - throw new JVMCIError(e); + if (offset != -1) { + HotSpotResolvedObjectType resolved = holder; + return resolved.createField(name, type, offset, modifiers); + } else { + throw new JVMCIError("unresolved field %s", reflectionField); } }
--- a/src/share/vm/jvmci/jvmciCompilerToVM.cpp Mon Mar 07 10:54:56 2016 +0100 +++ b/src/share/vm/jvmci/jvmciCompilerToVM.cpp Tue Mar 08 09:17:23 2016 +0100 @@ -179,12 +179,6 @@ return JNIHandles::make_local(THREAD, result); } -C2V_VMENTRY(jint, getResolvedJavaFieldFlagsAtSlot, (JNIEnv *, jobject, jclass holder_handle, jint slot)) - oop java_class = JNIHandles::resolve(holder_handle); - Klass* holder = java_lang_Class::as_Klass(java_class); - return InstanceKlass::cast(holder)->field_access_flags(slot); -} - C2V_VMENTRY(jobject, getResolvedJavaMethod, (JNIEnv *, jobject, jobject base, jlong offset)) methodHandle method; oop base_object = JNIHandles::resolve(base); @@ -1253,7 +1247,6 @@ {CC"getClassInitializer", CC"("HS_RESOLVED_KLASS")"HS_RESOLVED_METHOD, FN_PTR(getClassInitializer)}, {CC"hasFinalizableSubclass", CC"("HS_RESOLVED_KLASS")Z", FN_PTR(hasFinalizableSubclass)}, {CC"getMaxCallTargetOffset", CC"(J)J", FN_PTR(getMaxCallTargetOffset)}, - {CC"getResolvedJavaFieldFlagsAtSlot", CC"("CLASS"I)I" , FN_PTR(getResolvedJavaFieldFlagsAtSlot)}, {CC"getResolvedJavaMethodAtSlot", CC"("CLASS"I)"HS_RESOLVED_METHOD, FN_PTR(getResolvedJavaMethodAtSlot)}, {CC"getResolvedJavaMethod", CC"(Ljava/lang/Object;J)"HS_RESOLVED_METHOD, FN_PTR(getResolvedJavaMethod)}, {CC"getConstantPool", CC"(Ljava/lang/Object;J)"HS_CONSTANT_POOL, FN_PTR(getConstantPool)},