/** @since 0.17 or earlier */ @Override public final BaseAllocator allocator() { return layout.getStrategy().createAllocator(this); }
/** @since 0.17 or earlier */ @Override public final BaseAllocator allocator() { return layout.getStrategy().createAllocator(this); }
/** @since 0.17 or earlier */ @TruffleBoundary @Override public ShapeImpl defineProperty(Object key, Object value, int flags, LocationFactory locationFactory) { return layout.getStrategy().defineProperty(this, key, value, flags, locationFactory); }
/** @since 0.17 or earlier */ @TruffleBoundary @Override public ShapeImpl defineProperty(Object key, Object value, int flags, LocationFactory locationFactory) { return layout.getStrategy().defineProperty(this, key, value, flags, locationFactory); }
/** * Duplicate shape exchanging existing property with new property. * * @since 0.17 or earlier */ @Override public ShapeImpl replaceProperty(Property oldProperty, Property newProperty) { assert oldProperty.getKey().equals(newProperty.getKey()); onPropertyTransition(oldProperty); return layout.getStrategy().replaceProperty(this, oldProperty, newProperty); }
/** @since 0.17 or earlier */ @TruffleBoundary @Override public final ShapeImpl removeProperty(Property prop) { assert isValid(); if (shared) { throw new UnsupportedOperationException("Do not use delete() with a shared shape as it moves locations"); } onPropertyTransition(prop); return layout.getStrategy().removeProperty(this, prop); }
/** @since 0.17 or earlier */ @Override public final ShapeImpl reservePrimitiveExtensionArray() { if (layout.hasPrimitiveExtensionArray() && !hasPrimitiveArray()) { return layout.getStrategy().addPrimitiveExtensionArray(this); } return this; }
/** @since 0.17 or earlier */ @Override public final boolean updateShape() { return getShape().getLayout().getStrategy().updateShape(this); }
/** @since 0.17 or earlier */ @Override public final ShapeImpl reservePrimitiveExtensionArray() { if (layout.hasPrimitiveExtensionArray() && !hasPrimitiveArray()) { return layout.getStrategy().addPrimitiveExtensionArray(this); } return this; }
/** @since 0.17 or earlier */ @TruffleBoundary @Override public ShapeImpl defineProperty(Object key, Object value, int flags) { return defineProperty(key, value, flags, layout.getStrategy().getDefaultLocationFactory()); }
/** @since 0.17 or earlier */ @TruffleBoundary @Override public final ShapeImpl removeProperty(Property prop) { assert isValid(); if (shared) { throw new UnsupportedOperationException("Do not use delete() with a shared shape as it moves locations"); } onPropertyTransition(prop); return layout.getStrategy().removeProperty(this, prop); }
/** * Duplicate shape exchanging existing property with new property. * * @since 0.17 or earlier */ @Override public ShapeImpl replaceProperty(Property oldProperty, Property newProperty) { assert oldProperty.getKey().equals(newProperty.getKey()); onPropertyTransition(oldProperty); return layout.getStrategy().replaceProperty(this, oldProperty, newProperty); }
/** @since 0.17 or earlier */ @Override public final boolean updateShape() { return getShapeImpl().getLayout().getStrategy().updateShape(this); }
private ShapeImpl queryTransition(Transition transition) { ShapeImpl cachedShape = this.getTransitionMapForRead().get(transition); if (cachedShape != null) { // Shape already exists? shapeCacheHitCount.inc(); return (ShapeImpl) layout.getStrategy().returnCached(cachedShape); } shapeCacheMissCount.inc(); return null; }
/** @since 0.17 or earlier */ @TruffleBoundary @Override public ShapeImpl defineProperty(Object key, Object value, int flags) { return defineProperty(key, value, flags, layout.getStrategy().getDefaultLocationFactory()); }
/** @since 0.17 or earlier */ @Override @TruffleBoundary public void define(Object key, Object value, int flags, LocationFactory locationFactory) { ShapeImpl oldShape = getShape(); oldShape.getLayout().getStrategy().objectDefineProperty(this, key, value, flags, locationFactory, oldShape); }
/** @since 0.17 or earlier */ @Override @TruffleBoundary public void define(Object key, Object value, int flags, LocationFactory locationFactory) { ShapeImpl oldShape = getShapeImpl(); oldShape.getLayout().getStrategy().objectDefineProperty(this, key, value, flags, locationFactory, oldShape); }
/** @since 0.17 or earlier */ @Override @TruffleBoundary public void define(Object key, Object value, int flags) { define(key, value, flags, getShape().getLayout().getStrategy().getDefaultLocationFactory()); }
/** @since 0.17 or earlier */ @Override @TruffleBoundary public void define(Object key, Object value, int flags) { define(key, value, flags, getShapeImpl().getLayout().getStrategy().getDefaultLocationFactory()); }
private ShapeImpl addPrimitiveExtensionArray() { assert layout.hasPrimitiveExtensionArray() && !hasPrimitiveArray(); Transition transition = new ReservePrimitiveArrayTransition(); ShapeImpl cachedShape = queryTransition(transition); if (cachedShape != null) { return cachedShape; } ShapeImpl oldShape = (ShapeImpl) layout.getStrategy().ensureSpace(this, layout.getPrimitiveArrayLocation()); ShapeImpl newShape = makeShapeWithPrimitiveExtensionArray(oldShape, transition); oldShape.addDirectTransition(transition, newShape); return newShape; }