Mercurial > hg > truffle
changeset 18747:6db7923af642
OM: DynamicObject extends TruffleObject, add default implementation
author | Matthias Grimmer <grimmer@ssw.jku.at> |
---|---|
date | Tue, 23 Dec 2014 12:13:14 +0100 |
parents | 5294b624e2f0 |
children | 3d6e630a72f1 |
files | graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/DynamicObject.java graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/ObjectType.java graal/com.oracle.truffle.object/src/com/oracle/truffle/object/DynamicObjectImpl.java graal/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java |
diffstat | 4 files changed, 29 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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. */
--- 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()); + } + }; + } }
--- 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(); + } }
--- 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(); + } }