changeset 18295:17bf458cf86e

reduced use of HotSpotObjectConstantImpl.forObject
author Doug Simon <doug.simon@oracle.com>
date Thu, 06 Nov 2014 23:04:43 +0100
parents 8e10f4877773
children a6e7531d3dd3
files graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ConstantReflectionProvider.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBytecodeLIRBuilder.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java
diffstat 4 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ConstantReflectionProvider.java	Thu Nov 06 22:39:36 2014 +0100
+++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ConstantReflectionProvider.java	Thu Nov 06 23:04:43 2014 +0100
@@ -92,6 +92,11 @@
     JavaConstant unboxPrimitive(JavaConstant source);
 
     /**
+     * Gets a string as a {@link JavaConstant}.
+     */
+    JavaConstant forString(String value);
+
+    /**
      * Returns the {@link ResolvedJavaType} for a {@link Class} object (or any other object regarded
      * as a class by the VM) encapsulated in the given constant. Returns {@code null} if the
      * constant does not encapsulate a class, or if the type is not available at this point.
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBytecodeLIRBuilder.java	Thu Nov 06 22:39:36 2014 +0100
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBytecodeLIRBuilder.java	Thu Nov 06 23:04:43 2014 +0100
@@ -26,6 +26,7 @@
 
 import com.oracle.graal.api.code.*;
 import com.oracle.graal.api.meta.*;
+import com.oracle.graal.api.meta.ResolvedJavaType.Representation;
 import com.oracle.graal.compiler.gen.*;
 import com.oracle.graal.hotspot.amd64.AMD64HotSpotLIRGenerator.SaveRbp;
 import com.oracle.graal.hotspot.meta.*;
@@ -87,7 +88,7 @@
 
     @Override
     public JavaConstant getClassConstant(ResolvedJavaType declaringClass) {
-        return HotSpotObjectConstantImpl.forObject(((HotSpotResolvedJavaType) declaringClass).mirror());
+        return declaringClass.getEncoding(Representation.JavaClass);
     }
 
     @Override
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java	Thu Nov 06 22:39:36 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java	Thu Nov 06 23:04:43 2014 +0100
@@ -229,6 +229,10 @@
         return JavaConstant.forBoxedPrimitive(((HotSpotObjectConstantImpl) source).object());
     }
 
+    public JavaConstant forString(String value) {
+        return HotSpotObjectConstantImpl.forObject(value);
+    }
+
     @Override
     public ResolvedJavaType asJavaType(JavaConstant constant) {
         if (constant instanceof HotSpotObjectConstant) {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java	Thu Nov 06 22:39:36 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java	Thu Nov 06 23:04:43 2014 +0100
@@ -507,7 +507,7 @@
                     for (ReturnNode ret : rets) {
                         returnType = checkCounter.getMethod().getSignature().getReturnType(checkCounter.getMethod().getDeclaringClass());
                         String msg = "unbalanced monitors in " + graph.method().format("%H.%n(%p)") + ", count = %d";
-                        ConstantNode errMsg = ConstantNode.forConstant(HotSpotObjectConstantImpl.forObject(msg), providers.getMetaAccess(), graph);
+                        ConstantNode errMsg = ConstantNode.forConstant(tool.getConstantReflection().forString(msg), providers.getMetaAccess(), graph);
                         callTarget = graph.add(MethodCallTargetNode.create(InvokeKind.Static, checkCounter.getMethod(), new ValueNode[]{errMsg}, returnType));
                         invoke = graph.add(InvokeNode.create(callTarget, 0));
                         List<ValueNode> stack = Collections.emptyList();