@@ -132,7 +132,7 @@ public final class Shape {
132132 private final int propertyCount ;
133133
134134 private final AbstractAssumption validAssumption ;
135- @ CompilationFinal private volatile Assumption leafAssumption ;
135+ @ CompilationFinal private volatile AbstractAssumption leafAssumption ;
136136
137137 /**
138138 * Shape transition map; lazily initialized. One of:
@@ -165,7 +165,8 @@ public final class Shape {
165165 private volatile Object predecessorShape ;
166166
167167 private static final AtomicReferenceFieldUpdater <Shape , Object > TRANSITION_MAP_UPDATER = AtomicReferenceFieldUpdater .newUpdater (Shape .class , Object .class , "transitionMap" );
168- private static final AtomicReferenceFieldUpdater <Shape , Assumption > LEAF_ASSUMPTION_UPDATER = AtomicReferenceFieldUpdater .newUpdater (Shape .class , Assumption .class , "leafAssumption" );
168+ private static final AtomicReferenceFieldUpdater <Shape , AbstractAssumption > LEAF_ASSUMPTION_UPDATER = AtomicReferenceFieldUpdater .newUpdater (Shape .class , AbstractAssumption .class ,
169+ "leafAssumption" );
169170 private static final AtomicReferenceFieldUpdater <Shape , PropertyAssumptions > PROPERTY_ASSUMPTIONS_UPDATER = //
170171 AtomicReferenceFieldUpdater .newUpdater (Shape .class , PropertyAssumptions .class , "sharedPropertyAssumptions" );
171172
@@ -866,20 +867,20 @@ public boolean isValid() {
866867 */
867868 @ NonIdempotent
868869 public Assumption getLeafAssumption () {
869- Assumption assumption = leafAssumption ;
870+ AbstractAssumption assumption = leafAssumption ;
870871 if (assumption != null ) {
871872 return assumption ;
872873 } else {
873874 CompilerDirectives .transferToInterpreterAndInvalidate ();
874- Assumption prev ;
875- Assumption next ;
875+ AbstractAssumption prev ;
876+ AbstractAssumption next ;
876877 do {
877878 prev = LEAF_ASSUMPTION_UPDATER .get (this );
878879 if (prev != null ) {
879880 return prev ;
880881 } else {
881882 boolean isLeafShape = transitionMap == null ;
882- next = isLeafShape ? createLeafAssumption () : Assumption .NEVER_VALID ;
883+ next = isLeafShape ? createLeafAssumption () : ( AbstractAssumption ) Assumption .NEVER_VALID ;
883884 }
884885 } while (!LEAF_ASSUMPTION_UPDATER .compareAndSet (this , prev , next ));
885886 return next ;
@@ -894,7 +895,7 @@ public Assumption getLeafAssumption() {
894895 @ NonIdempotent
895896 @ TruffleBoundary
896897 public boolean isLeaf () {
897- Assumption assumption = leafAssumption ;
898+ AbstractAssumption assumption = leafAssumption ;
898899 return assumption == null || assumption .isValid ();
899900 }
900901
@@ -1596,13 +1597,13 @@ void invalidateValidAssumption() {
15961597 validAssumption .invalidate ();
15971598 }
15981599
1599- private static Assumption createLeafAssumption () {
1600- return Truffle .getRuntime ().createAssumption ("leaf shape" );
1600+ private static AbstractAssumption createLeafAssumption () {
1601+ return ( AbstractAssumption ) Truffle .getRuntime ().createAssumption ("leaf shape" );
16011602 }
16021603
16031604 @ TruffleBoundary
16041605 void invalidateLeafAssumption () {
1605- Assumption prev ;
1606+ AbstractAssumption prev ;
16061607 do {
16071608 prev = LEAF_ASSUMPTION_UPDATER .get (this );
16081609 if (prev == Assumption .NEVER_VALID ) {
@@ -1611,7 +1612,7 @@ void invalidateLeafAssumption() {
16111612 if (prev != null ) {
16121613 prev .invalidate ();
16131614 }
1614- } while (!LEAF_ASSUMPTION_UPDATER .compareAndSet (this , prev , Assumption .NEVER_VALID ));
1615+ } while (!LEAF_ASSUMPTION_UPDATER .compareAndSet (this , prev , ( AbstractAssumption ) Assumption .NEVER_VALID ));
16151616 }
16161617
16171618 /**
0 commit comments