# HG changeset patch # User Andreas Woess # Date 1434035813 -7200 # Node ID c0744b24b23025b59e96b66acafa132d97d6ecd0 # Parent 1b695a36c4d53f1e30bf59a1cbbcbff3e3b9e352 Truffle: minor refactoring diff -r 1b695a36c4d5 -r c0744b24b230 graal/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/ShapeBasic.java --- a/graal/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/ShapeBasic.java Thu Jun 11 17:10:27 2015 +0200 +++ b/graal/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/ShapeBasic.java Thu Jun 11 17:16:53 2015 +0200 @@ -42,17 +42,6 @@ @Override public ShapeImpl replaceProperty(Property oldProperty, Property newProperty) { - assert oldProperty.getKey().equals(newProperty.getKey()); - onPropertyTransition(oldProperty); - - Transition replacePropertyTransition = new Transition.DirectReplacePropertyTransition(oldProperty, newProperty); - ShapeImpl cachedShape = queryTransition(replacePropertyTransition); - if (cachedShape != null) { - return cachedShape; - } - PropertyMap newPropertyMap = this.getPropertyMap().replaceCopy(oldProperty, newProperty); - ShapeImpl newShape = createShape(getLayout(), getSharedData(), this, getObjectType(), newPropertyMap, replacePropertyTransition, allocator(), getId()); - addDirectTransition(replacePropertyTransition, newShape); - return newShape; + return directReplaceProperty(oldProperty, newProperty); } } diff -r 1b695a36c4d5 -r c0744b24b230 graal/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java --- a/graal/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java Thu Jun 11 17:10:27 2015 +0200 +++ b/graal/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java Thu Jun 11 17:16:53 2015 +0200 @@ -316,7 +316,7 @@ return addPropertyInternal(property); } - protected final void onPropertyTransition(Property property) { + private void onPropertyTransition(Property property) { if (sharedData instanceof ShapeListener) { ((ShapeListener) sharedData).onPropertyTransition(property.getKey()); } @@ -671,6 +671,10 @@ */ @Override public ShapeImpl replaceProperty(Property oldProperty, Property newProperty) { + return indirectReplaceProperty(oldProperty, newProperty); + } + + protected final ShapeImpl indirectReplaceProperty(Property oldProperty, Property newProperty) { assert oldProperty.getKey().equals(newProperty.getKey()); Transition replacePropertyTransition = new Transition.IndirectReplacePropertyTransition(oldProperty, newProperty); @@ -699,10 +703,27 @@ newShape = newShape.applyTransition(transition, false); } } + addIndirectTransition(replacePropertyTransition, newShape); return newShape; } + protected final ShapeImpl directReplaceProperty(Property oldProperty, Property newProperty) { + assert oldProperty.getKey().equals(newProperty.getKey()); + onPropertyTransition(oldProperty); + + Transition replacePropertyTransition = new Transition.DirectReplacePropertyTransition(oldProperty, newProperty); + ShapeImpl cachedShape = queryTransition(replacePropertyTransition); + if (cachedShape != null) { + return cachedShape; + } + PropertyMap newPropertyMap = this.getPropertyMap().replaceCopy(oldProperty, newProperty); + ShapeImpl newShape = createShape(getLayout(), getSharedData(), this, getObjectType(), newPropertyMap, replacePropertyTransition, allocator(), getId()); + + addDirectTransition(replacePropertyTransition, newShape); + return newShape; + } + /** * Find lowest common ancestor of two related shapes. */