# HG changeset patch # User Matthias Grimmer # Date 1419333194 -3600 # Node ID 6db7923af642a78db4dff54d83775c90961bf78b # Parent 5294b624e2f0bf51494e221f279e13c2909175be OM: DynamicObject extends TruffleObject, add default implementation diff -r 5294b624e2f0 -r 6db7923af642 graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/DynamicObject.java --- a/graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/DynamicObject.java Tue Dec 23 11:56:08 2014 +0100 +++ b/graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/DynamicObject.java Tue Dec 23 12:13:14 2014 +0100 @@ -25,8 +25,9 @@ package com.oracle.truffle.api.object; import com.oracle.truffle.api.*; +import com.oracle.truffle.api.interop.*; -public interface DynamicObject extends TypedObject { +public interface DynamicObject extends TypedObject, TruffleObject { /** * Get the object's current shape. */ diff -r 5294b624e2f0 -r 6db7923af642 graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/ObjectType.java --- a/graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/ObjectType.java Tue Dec 23 11:56:08 2014 +0100 +++ b/graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/ObjectType.java Tue Dec 23 12:13:14 2014 +0100 @@ -24,7 +24,11 @@ */ package com.oracle.truffle.api.object; +import com.oracle.truffle.api.*; import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; +import com.oracle.truffle.api.interop.*; +import com.oracle.truffle.api.interop.exception.*; +import com.oracle.truffle.api.interop.messages.*; public class ObjectType { /** @@ -67,4 +71,17 @@ */ public void onPropertyAdded(Property property, Shape shapeBefore, Shape shapeAfter) { } + + public ForeignAccessFactory getForeignAccessFactory() { + return new ForeignAccessFactory() { + + public InteropPredicate getLanguageCheck() { + throw new AccessException(this.toString() + " cannot be shared"); + } + + public CallTarget getAccess(Message tree) { + throw new AccessException(this.toString() + " cannot be shared; Message not possible: " + tree.toString()); + } + }; + } } diff -r 5294b624e2f0 -r 6db7923af642 graal/com.oracle.truffle.object/src/com/oracle/truffle/object/DynamicObjectImpl.java --- a/graal/com.oracle.truffle.object/src/com/oracle/truffle/object/DynamicObjectImpl.java Tue Dec 23 11:56:08 2014 +0100 +++ b/graal/com.oracle.truffle.object/src/com/oracle/truffle/object/DynamicObjectImpl.java Tue Dec 23 12:13:14 2014 +0100 @@ -25,6 +25,7 @@ import java.util.*; import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; +import com.oracle.truffle.api.interop.*; import com.oracle.truffle.api.object.*; import com.oracle.truffle.object.Locations.ValueLocation; import com.oracle.truffle.object.debug.*; @@ -361,4 +362,8 @@ private static void trackObject(DynamicObject obj) { ShapeProfiler.getInstance().track(obj); } + + public ForeignAccessFactory getForeignAccessFactory() { + return getShape().getForeignAccessFactory(); + } } diff -r 5294b624e2f0 -r 6db7923af642 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 Tue Dec 23 11:56:08 2014 +0100 +++ b/graal/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java Tue Dec 23 12:13:14 2014 +0100 @@ -27,6 +27,7 @@ import com.oracle.truffle.api.*; import com.oracle.truffle.api.CompilerDirectives.CompilationFinal; import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; +import com.oracle.truffle.api.interop.*; import com.oracle.truffle.api.nodes.*; import com.oracle.truffle.api.object.*; import com.oracle.truffle.api.utilities.*; @@ -1099,4 +1100,8 @@ protected static final DebugCounter propertyListAllocCount = DebugCounter.create("Property lists allocated"); protected static final DebugCounter propertyListShareCount = DebugCounter.create("Property lists shared"); + + public ForeignAccessFactory getForeignAccessFactory() { + return getObjectType().getForeignAccessFactory(); + } }