# HG changeset patch # User Doug Simon # Date 1405031243 -7200 # Node ID 4d7a9829315ef289ac47b6d9efc06296b44ca8e8 # Parent cac0a7d1c32561109dbca08a665a626f618e6d6b moved isJavaLangObject(ResolvedJavaType type) from MetaUtil to be a default method in ResolvedJavaType diff -r cac0a7d1c325 -r 4d7a9829315e graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestResolvedJavaType.java --- a/graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestResolvedJavaType.java Thu Jul 10 23:56:39 2014 +0200 +++ b/graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestResolvedJavaType.java Fri Jul 11 00:27:23 2014 +0200 @@ -709,6 +709,7 @@ "getSourceFileName", "getClassFilePath", "isLocal", + "isJavaLangObject", "isMember", "getElementalType", "getEnclosingType" diff -r cac0a7d1c325 -r 4d7a9829315e graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaUtil.java --- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaUtil.java Thu Jul 10 23:56:39 2014 +0200 +++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaUtil.java Fri Jul 11 00:27:23 2014 +0200 @@ -130,15 +130,6 @@ } /** - * Returns true if the specified typed is exactly the type {@link java.lang.Object}. - */ - public static boolean isJavaLangObject(ResolvedJavaType type) { - boolean result = type.getSuperclass() == null && !type.isInterface() && type.getKind() == Kind.Object; - assert result == type.getName().equals("Ljava/lang/Object;") : type.getName(); - return result; - } - - /** * Calls {@link JavaType#resolve(ResolvedJavaType)} on an array of types. */ public static ResolvedJavaType[] resolveJavaTypes(JavaType[] types, ResolvedJavaType accessingClass) { @@ -185,7 +176,7 @@ return name.substring(index + 1); } - public static String internalNameToJava(String name, boolean qualified, boolean classForNameCompatible) { + static String internalNameToJava(String name, boolean qualified, boolean classForNameCompatible) { switch (name.charAt(0)) { case 'L': { String result = name.substring(1, name.length() - 1).replace('/', '.'); diff -r cac0a7d1c325 -r 4d7a9829315e graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ResolvedJavaType.java --- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ResolvedJavaType.java Thu Jul 10 23:56:39 2014 +0200 +++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ResolvedJavaType.java Fri Jul 11 00:27:23 2014 +0200 @@ -141,6 +141,15 @@ boolean isAssignableFrom(ResolvedJavaType other); /** + * Returns true if this type is exactly the type {@link java.lang.Object}. + */ + default boolean isJavaLangObject() { + boolean result = getSuperclass() == null && !isInterface() && getKind() == Kind.Object; + assert result == getName().equals("Ljava/lang/Object;") : getName(); + return result; + } + + /** * Checks whether the specified object is an instance of this type. * * @param obj the object to test diff -r cac0a7d1c325 -r 4d7a9829315e graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java Thu Jul 10 23:56:39 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java Fri Jul 11 00:27:23 2014 +0200 @@ -348,6 +348,11 @@ } @Override + public boolean isJavaLangObject() { + return javaClass.equals(Object.class); + } + + @Override public Kind getKind() { return Kind.Object; } diff -r cac0a7d1c325 -r 4d7a9829315e graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java Thu Jul 10 23:56:39 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java Fri Jul 11 00:27:23 2014 +0200 @@ -163,6 +163,11 @@ } @Override + public boolean isJavaLangObject() { + return false; + } + + @Override public ResolvedJavaMethod resolveMethod(ResolvedJavaMethod method, ResolvedJavaType callerType) { return null; } diff -r cac0a7d1c325 -r 4d7a9829315e graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java Thu Jul 10 23:56:39 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java Fri Jul 11 00:27:23 2014 +0200 @@ -183,7 +183,7 @@ ResolvedJavaType arrayType = StampTool.typeOrNull(array); if (arrayType != null && StampTool.isExactType(array)) { ResolvedJavaType elementType = arrayType.getComponentType(); - if (!MetaUtil.isJavaLangObject(elementType)) { + if (!elementType.isJavaLangObject()) { checkCastNode = graph.add(new CheckCastNode(elementType, value, null, true)); graph.addBeforeFixed(storeIndexed, checkCastNode); value = checkCastNode;