# HG changeset patch # User Lukas Stadler # Date 1401292043 -7200 # Node ID 451a7e38ebce2f319e8e56d6b0fa7d8006f07784 # Parent 8a39e009c14237155927ea3851d860c96a3f2881 HotSpotResolvedJavaField refactorings diff -r 8a39e009c142 -r 451a7e38ebce graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java Wed May 28 17:47:23 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java Wed May 28 17:47:23 2014 +0200 @@ -216,23 +216,29 @@ // Canonicalization may attempt to process an unsafe read before // processing a guard (e.g. a null check or a type check) for this read // so we need to check the object being read - if (object != null && isInObject(object)) { + if (object != null) { if (isFinal()) { - Constant value = readValue(receiver); - if (assumeNonStaticFinalFieldsAsFinal(object.getClass()) || !value.isDefaultForKind()) { - return value; + if (isInObject(object)) { + Constant value = readValue(receiver); + if (assumeNonStaticFinalFieldsAsFinal(object.getClass()) || !value.isDefaultForKind()) { + return value; + } } } else if (isStable()) { - Constant value = readValue(receiver); - if (assumeDefaultStableFieldsAsFinal(object.getClass()) || !value.isDefaultForKind()) { - return value; + if (isInObject(object)) { + Constant value = readValue(receiver); + if (assumeDefaultStableFieldsAsFinal(object.getClass()) || !value.isDefaultForKind()) { + return value; + } } } else { Class clazz = object.getClass(); if (StableOptionValue.class.isAssignableFrom(clazz)) { - assert getName().equals("value") : "Unexpected field in " + StableOptionValue.class.getName() + " hierarchy:" + this; - StableOptionValue option = (StableOptionValue) object; - return HotSpotObjectConstant.forObject(option.getValue()); + if (isInObject(object)) { + assert getName().equals("value") : "Unexpected field in " + StableOptionValue.class.getName() + " hierarchy:" + this; + StableOptionValue option = (StableOptionValue) object; + return HotSpotObjectConstant.forObject(option.getValue()); + } } } }