Class DynamicObjectImpl

java.lang.Object
com.oracle.truffle.object.DynamicObjectImpl
All Implemented Interfaces:
DynamicObject, TypedObject, Cloneable
Direct Known Subclasses:
DynamicObjectBasic

public abstract class DynamicObjectImpl extends Object implements DynamicObject, Cloneable
  • Field Details

    • reshapeCount

      public static final DebugCounter reshapeCount
  • Constructor Details

    • DynamicObjectImpl

      public DynamicObjectImpl(Shape shape)
  • Method Details

    • getTypeIdentifier

      public Object getTypeIdentifier()
      Specified by:
      getTypeIdentifier in interface TypedObject
    • getShape

      public ShapeImpl getShape()
      Description copied from interface: DynamicObject
      Get the object's current shape.
      Specified by:
      getShape in interface DynamicObject
    • setShape

      protected void setShape(Shape shape)
    • initialize

      protected abstract void initialize(Shape initialShape)
    • setShapeAndResize

      public final void setShapeAndResize(Shape newShape)
    • setShapeAndResize

      public final void setShapeAndResize(Shape oldShape, Shape newShape)
      Description copied from interface: DynamicObject
      Set object shape and resize storage if necessary.
      Specified by:
      setShapeAndResize in interface DynamicObject
      Parameters:
      oldShape - the object's current shape (must equal DynamicObject.getShape())
      newShape - the new shape to be set
    • setShapeAndGrow

      public final void setShapeAndGrow(Shape oldShape, Shape newShape)
      Set shape to an immediate child of the current shape, optionally growing the extension array. Typically this would add a single property. Cannot shrink or grow more than one property at a time.
      Specified by:
      setShapeAndGrow in interface DynamicObject
      Parameters:
      oldShape - the object's current shape (must equal DynamicObject.getShape())
      newShape - the new shape to be set
      See Also:
    • growObjectStore

      protected abstract void growObjectStore(Shape oldShape, Shape newShape)
    • growPrimitiveStore

      protected abstract void growPrimitiveStore(Shape oldShape, Shape newShape)
    • resizePrimitiveStore

      protected abstract void resizePrimitiveStore(Shape oldShape, Shape newShape)
    • resizeObjectStore

      protected abstract void resizeObjectStore(Shape oldShape, Shape newShape)
    • checkExtensionArrayInvariants

      protected abstract boolean checkExtensionArrayInvariants(Shape newShape)
      Check whether the extension arrays are in accordance with the description in the shape.
    • clone

      protected final DynamicObject clone()
      Overrides:
      clone in class Object
    • cloneWithShape

      protected abstract DynamicObject cloneWithShape(Shape currentShape)
    • copyProperties

      public final void copyProperties(DynamicObject fromObject, Shape ancestor)
    • changeFlags

      public boolean changeFlags(Object id, int newFlags)
      Description copied from interface: DynamicObject
      Change property flags.
      Specified by:
      changeFlags in interface DynamicObject
      Parameters:
      id - property identifier
      newFlags - flags to be set
      Returns:
      true if successful or false if property not found
    • changeFlags

      public boolean changeFlags(Object id, DynamicObject.FlagsFunction updateFunction)
      Description copied from interface: DynamicObject
      Change property flags.
      Specified by:
      changeFlags in interface DynamicObject
      Parameters:
      id - property identifier
      updateFunction - function updating old flags to new flags
      Returns:
      true if successful or false if property not found
    • debugDump

      public String debugDump(int level)
    • debugDump

      public String debugDump(int level, int levelStop)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • get

      public Object get(Object id, Object defaultValue)
      Description copied from interface: DynamicObject
      Get property value.
      Specified by:
      get in interface DynamicObject
      Parameters:
      id - property identifier
      defaultValue - return value if property is not found
      Returns:
      property value or defaultValue if object has no such property
    • set

      public boolean set(Object id, Object value)
      Description copied from interface: DynamicObject
      Set value of existing property.
      Specified by:
      set in interface DynamicObject
      Parameters:
      id - property identifier
      value - value to be set
      Returns:
      true if successful or false if property not found
    • define

      public void define(Object id, Object value, int flags)
      Description copied from interface: DynamicObject
      Define new property or redefine existing property.
      Specified by:
      define in interface DynamicObject
      Parameters:
      id - property identifier
      value - value to be set
      flags - flags to be set
    • define

      public void define(Object id, Object value, int flags, LocationFactory locationFactory)
      Description copied from interface: DynamicObject
      Define new property with a static location or change existing property.
      Specified by:
      define in interface DynamicObject
      Parameters:
      id - property identifier
      value - value to be set
      flags - flags to be set
      locationFactory - factory function that creates a location for a given shape and value
    • delete

      public boolean delete(Object id)
      Description copied from interface: DynamicObject
      Delete property.
      Specified by:
      delete in interface DynamicObject
      Parameters:
      id - property identifier
      Returns:
      true if successful or false if property not found
    • size

      public int size()
      Description copied from interface: DynamicObject
      Returns the number of properties in this object.
      Specified by:
      size in interface DynamicObject
    • isEmpty

      public boolean isEmpty()
      Description copied from interface: DynamicObject
      Returns true if this object contains no properties.
      Specified by:
      isEmpty in interface DynamicObject
    • updateShape

      public final boolean updateShape()
      Description copied from interface: DynamicObject
      Ensure object shape is up-to-date.
      Specified by:
      updateShape in interface DynamicObject
      Returns:
      true if shape has changed