changeset 22091:55a3e72fe241

add DynamicObject#copy method
author Andreas Woess <andreas.woess@oracle.com>
date Mon, 17 Aug 2015 16:40:43 +0200
parents 485481716f0e
children 1a1aa12ab310
files truffle/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/DynamicObject.java truffle/com.oracle.truffle.object/src/com/oracle/truffle/object/DynamicObjectImpl.java
diffstat 2 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/DynamicObject.java	Mon Aug 17 15:57:29 2015 +0200
+++ b/truffle/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/DynamicObject.java	Mon Aug 17 16:40:43 2015 +0200
@@ -156,6 +156,13 @@
      */
     public abstract boolean updateShape();
 
+    /**
+     * Create a shallow copy of this object.
+     *
+     * @param currentShape the object's current shape (must equal {@link #getShape()})
+     */
+    public abstract DynamicObject copy(Shape currentShape);
+
     public interface FlagsFunction {
         int apply(int t);
     }
--- a/truffle/com.oracle.truffle.object/src/com/oracle/truffle/object/DynamicObjectImpl.java	Mon Aug 17 15:57:29 2015 +0200
+++ b/truffle/com.oracle.truffle.object/src/com/oracle/truffle/object/DynamicObjectImpl.java	Mon Aug 17 16:40:43 2015 +0200
@@ -375,6 +375,11 @@
     }
 
     @Override
+    public final DynamicObject copy(Shape currentShape) {
+        return cloneWithShape(currentShape);
+    }
+
+    @Override
     public ForeignAccess getForeignAccess() {
         return getShape().getForeignAccessFactory();
     }