changeset 2289:6190d20bd6d6

merge
author Lukas Stadler <lukas.stadler@jku.at>
date Mon, 11 Apr 2011 11:25:06 +0200
parents 8c426c2891c8 (current diff) f21664b3dd1c (diff)
children 1cfdec4e7f07
files c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotField.java c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotRuntime.java c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypePrimitive.java c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypeResolved.java c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypeResolvedImpl.java c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypeUnresolved.java c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/InvocationSocket.java src/share/vm/c1x/c1x_VMEntries.cpp src/share/vm/c1x/c1x_VMExits.cpp src/share/vm/classfile/vmSymbols.hpp
diffstat 9 files changed, 44 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- 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 {
--- 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());
+    }
 }
--- 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;
     }
 
--- 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.
--- 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()");
     }
 
--- 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();
--- 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<constantPoolOop>(constantPool), THREAD));
--- 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();
 }
--- 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,                   "<init>")                                   \