Mercurial > hg > truffle
changeset 21924:c0744b24b230
Truffle: minor refactoring
author | Andreas Woess <andreas.woess@oracle.com> |
---|---|
date | Thu, 11 Jun 2015 17:16:53 +0200 |
parents | 1b695a36c4d5 |
children | 607a5d806916 |
files | graal/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/ShapeBasic.java graal/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java |
diffstat | 2 files changed, 23 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- 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); } }
--- 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. */