changeset 16727:9d55732d0880

additional info field on FrameSlot nodes (for language-specific use)
author Lukas Stadler <lukas.stadler@oracle.com>
date Fri, 08 Aug 2014 15:54:39 +0200
parents 734247341e6e
children dbc0838b0def 444ef6194ce3 8c606e8053b8
files graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameDescriptor.java graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlot.java
diffstat 2 files changed, 13 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameDescriptor.java	Fri Aug 08 15:52:34 2014 +0200
+++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameDescriptor.java	Fri Aug 08 15:54:39 2014 +0200
@@ -53,13 +53,17 @@
     }
 
     public FrameSlot addFrameSlot(Object identifier) {
-        return addFrameSlot(identifier, FrameSlotKind.Illegal);
+        return addFrameSlot(identifier, null, FrameSlotKind.Illegal);
     }
 
     public FrameSlot addFrameSlot(Object identifier, FrameSlotKind kind) {
+        return addFrameSlot(identifier, null, kind);
+    }
+
+    public FrameSlot addFrameSlot(Object identifier, Object info, FrameSlotKind kind) {
         CompilerAsserts.neverPartOfCompilation("interpreter-only.  includes hashmap operations.");
         assert !identifierToSlotMap.containsKey(identifier);
-        FrameSlot slot = new FrameSlot(this, identifier, slots.size(), kind);
+        FrameSlot slot = new FrameSlot(this, identifier, info, slots.size(), kind);
         slots.add(slot);
         identifierToSlotMap.put(identifier, slot);
         updateVersion();
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlot.java	Fri Aug 08 15:52:34 2014 +0200
+++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlot.java	Fri Aug 08 15:54:39 2014 +0200
@@ -34,12 +34,14 @@
 
     private final FrameDescriptor descriptor;
     private final Object identifier;
+    private final Object info;
     private final int index;
     @CompilationFinal private FrameSlotKind kind;
 
-    public FrameSlot(FrameDescriptor descriptor, Object identifier, int index, FrameSlotKind kind) {
+    public FrameSlot(FrameDescriptor descriptor, Object identifier, Object info, int index, FrameSlotKind kind) {
         this.descriptor = descriptor;
         this.identifier = identifier;
+        this.info = info;
         this.index = index;
         this.kind = kind;
     }
@@ -48,6 +50,10 @@
         return identifier;
     }
 
+    public Object getInfo() {
+        return info;
+    }
+
     public int getIndex() {
         return index;
     }