# HG changeset patch # User Lukas Stadler # Date 1302513906 -7200 # Node ID 6190d20bd6d6d09b2de409e5da879e84251fddf2 # Parent 8c426c2891c86efc016c8153d1f53edf8203cee3# Parent f21664b3dd1ccaa46469e7e6711c92b79514cac8 merge diff -r 8c426c2891c8 -r 6190d20bd6d6 c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotField.java --- a/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotField.java Mon Apr 11 10:37:24 2011 +0200 +++ b/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotField.java Mon Apr 11 11:25:06 2011 +0200 @@ -57,8 +57,8 @@ } @Override - public CiConstant constantValue(Object object) { - if (object == null) { + public CiConstant constantValue(CiConstant receiver) { + if (receiver == null) { if (constant == null && holder.isResolved() && holder.javaClass() == C1XOptions.class) { Field f; try { diff -r 8c426c2891c8 -r 6190d20bd6d6 c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotRuntime.java --- a/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotRuntime.java Mon Apr 11 10:37:24 2011 +0200 +++ b/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotRuntime.java Mon Apr 11 11:25:06 2011 +0200 @@ -147,6 +147,23 @@ } @Override + public RiType getRiType(CiKind kind) { + return getRiType(kind.toJavaClass()); + } + + @Override + public RiType getRiType(CiConstant constant) { + Object o = constant.asObject(); + if (o == null) return null; + return getRiType(o.getClass()); + } + + @Override + public boolean isExceptionType(RiType type) { + return type.isSubtypeOf(getRiType(Throwable.class)); + } + + @Override public RiSnippets getSnippets() { throw new UnsupportedOperationException("getSnippets"); } @@ -208,8 +225,8 @@ } @Override - public boolean compareConstantObjects(Object x, Object y) { - return x == y; + public boolean compareConstantObjects(CiConstant x, CiConstant y) { + return x.asObject() == y.asObject(); } @Override @@ -229,4 +246,9 @@ public boolean supportsArrayIntrinsics() { return true; } + + @Override + public int getArrayLength(CiConstant array) { + return Array.getLength(array.asObject()); + } } diff -r 8c426c2891c8 -r 6190d20bd6d6 c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypePrimitive.java --- a/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypePrimitive.java Mon Apr 11 10:37:24 2011 +0200 +++ b/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypePrimitive.java Mon Apr 11 11:25:06 2011 +0200 @@ -96,7 +96,7 @@ } @Override - public boolean isInstance(Object obj) { + public boolean isInstance(CiConstant obj) { return false; } diff -r 8c426c2891c8 -r 6190d20bd6d6 c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypeResolved.java diff -r 8c426c2891c8 -r 6190d20bd6d6 c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypeResolvedImpl.java --- a/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypeResolvedImpl.java Mon Apr 11 10:37:24 2011 +0200 +++ b/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypeResolvedImpl.java Mon Apr 11 11:25:06 2011 +0200 @@ -127,7 +127,7 @@ } @Override - public boolean isInstance(Object obj) { + public boolean isInstance(CiConstant obj) { return javaMirror.isInstance(obj); } @@ -148,7 +148,7 @@ @Override public boolean isSubtypeOf(RiType other) { - if (other.isResolved()) { + if (other instanceof HotSpotTypeResolved) { return compiler.getVMEntries().RiType_isSubtypeOf(this, other); } // No resolved type is a subtype of an unresolved type. diff -r 8c426c2891c8 -r 6190d20bd6d6 c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypeUnresolved.java --- a/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypeUnresolved.java Mon Apr 11 10:37:24 2011 +0200 +++ b/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypeUnresolved.java Mon Apr 11 11:25:06 2011 +0200 @@ -137,7 +137,7 @@ } @Override - public boolean isInstance(Object obj) { + public boolean isInstance(CiConstant obj) { throw unresolved("isInstance()"); } diff -r 8c426c2891c8 -r 6190d20bd6d6 c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/InvocationSocket.java --- a/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/InvocationSocket.java Mon Apr 11 10:37:24 2011 +0200 +++ b/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/InvocationSocket.java Mon Apr 11 11:25:06 2011 +0200 @@ -79,7 +79,7 @@ return method.invoke(receiver, args); } try { - //Logger.startScope("invoking remote " + method.getName()); + Logger.startScope("invoking remote " + method.getName()); output.writeObject(new Invocation(receiver, method.getName(), args)); output.flush(); return waitForResult(); @@ -87,7 +87,7 @@ t.printStackTrace(); throw t; } finally { - //Logger.endScope(""); + Logger.endScope(""); } } } @@ -122,18 +122,19 @@ Object result; try { if (invoke.args == null) { - //Logger.startScope("invoking local " + invoke.methodName); + Logger.startScope("invoking local " + invoke.methodName); result = method.invoke(invoke.receiver); } else { - /* - StringBuilder str = new StringBuilder(); - str.append("invoking local " + invoke.methodName + "("); - for (int i = 0; i < invoke.args.length; i++) { - str.append(i == 0 ? "" : ", "); - str.append(Logger.pretty(invoke.args[i])); + if (Logger.ENABLED) { + StringBuilder str = new StringBuilder(); + str.append("invoking local " + invoke.methodName + "("); + for (int i = 0; i < invoke.args.length; i++) { + str.append(i == 0 ? "" : ", "); + str.append(Logger.pretty(invoke.args[i])); + } + str.append(")"); + Logger.startScope(str.toString()); } - str.append(")"); - Logger.startScope(str.toString());*/ result = method.invoke(invoke.receiver, invoke.args); } result = new Result(result); @@ -150,7 +151,7 @@ e.getCause().printStackTrace(); result = e.getCause(); } finally { - //Logger.endScope(""); + Logger.endScope(""); } output.writeObject(result); output.flush(); diff -r 8c426c2891c8 -r 6190d20bd6d6 src/share/vm/c1x/c1x_VMEntries.cpp --- a/src/share/vm/c1x/c1x_VMEntries.cpp Mon Apr 11 10:37:24 2011 +0200 +++ b/src/share/vm/c1x/c1x_VMEntries.cpp Mon Apr 11 11:25:06 2011 +0200 @@ -352,8 +352,6 @@ JNIEXPORT jobject JNICALL Java_com_sun_hotspot_c1x_VMEntries_RiType_1constantPool(JNIEnv *, jobject, jobject klass) { VM_ENTRY_MARK; - instanceOop(JNIHandles::resolve(klass))->print_value(); - assert(JNIHandles::resolve(klass) != NULL, ""); constantPoolOop constantPool = ((instanceKlass*)java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(klass))->klass_part())->constants(); return JNIHandles::make_local(VMExits::createRiConstantPool(VmIds::add(constantPool), THREAD)); diff -r 8c426c2891c8 -r 6190d20bd6d6 src/share/vm/c1x/c1x_VMExits.cpp --- a/src/share/vm/c1x/c1x_VMExits.cpp Mon Apr 11 10:37:24 2011 +0200 +++ b/src/share/vm/c1x/c1x_VMExits.cpp Mon Apr 11 11:25:06 2011 +0200 @@ -232,7 +232,7 @@ KlassHandle klass = SystemDictionary::resolve_or_null(vmSymbols::com_sun_cri_ci_CiConstant(), SystemDictionary::java_system_loader(), NULL, Thread::current()); - JavaCalls::call_static(&result, klass(), vmSymbols::forObject_name(), vmSymbols::forObject_signature(), object, THREAD); + JavaCalls::call_static(&result, klass(), vmSymbols::forObject_name(), vmSymbols::createCiConstantObject_signature(), object, THREAD); check_pending_exception("Error while calling CiConstant.forObject"); return (oop) result.get_jobject(); } diff -r 8c426c2891c8 -r 6190d20bd6d6 src/share/vm/classfile/vmSymbols.hpp --- a/src/share/vm/classfile/vmSymbols.hpp Mon Apr 11 10:37:24 2011 +0200 +++ b/src/share/vm/classfile/vmSymbols.hpp Mon Apr 11 11:25:06 2011 +0200 @@ -330,7 +330,6 @@ template(getInstance_name, "getInstance") \ template(getInstance_signature, "()Lcom/sun/hotspot/c1x/Compiler;") \ template(forObject_name, "forObject") \ - template(forObject_signature, "(Ljava/lang/Object;)Lcom/sun/cri/ci/CiConstant;") \ \ /* common method and field names */ \ template(object_initializer_name, "") \