changeset 12644:e122dc0436be

convert FrameSlot interface to a final class.
author Andreas Woess <andreas.woess@jku.at>
date Wed, 30 Oct 2013 19:05:29 +0100
parents 856a9864ed93
children 60c32ab6eb39
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 graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlotImpl.java
diffstat 3 files changed, 42 insertions(+), 78 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameDescriptor.java	Wed Oct 30 20:01:50 2013 +0100
+++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameDescriptor.java	Wed Oct 30 19:05:29 2013 +0100
@@ -36,8 +36,8 @@
 public final class FrameDescriptor implements Cloneable {
 
     private final FrameTypeConversion typeConversion;
-    private final ArrayList<FrameSlotImpl> slots;
-    private final HashMap<Object, FrameSlotImpl> identifierToSlotMap;
+    private final ArrayList<FrameSlot> slots;
+    private final HashMap<Object, FrameSlot> identifierToSlotMap;
     private Assumption version;
     private HashMap<Object, Assumption> identifierToNotInFrameAssumptionMap;
 
@@ -58,7 +58,7 @@
 
     public FrameSlot addFrameSlot(Object identifier, FrameSlotKind kind) {
         assert !identifierToSlotMap.containsKey(identifier);
-        FrameSlotImpl slot = new FrameSlotImpl(this, identifier, slots.size(), kind);
+        FrameSlot slot = new FrameSlot(this, identifier, 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	Wed Oct 30 20:01:50 2013 +0100
+++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlot.java	Wed Oct 30 19:05:29 2013 +0100
@@ -24,18 +24,51 @@
  */
 package com.oracle.truffle.api.frame;
 
+import com.oracle.truffle.api.*;
+
 /**
  * A slot in a frame that can store a value of a given type.
  */
-public interface FrameSlot extends Cloneable {
+public final class FrameSlot implements Cloneable {
+
+    private final FrameDescriptor descriptor;
+    private final Object identifier;
+    private final int index;
+    @com.oracle.truffle.api.CompilerDirectives.CompilationFinal private FrameSlotKind kind;
 
-    Object getIdentifier();
+    public FrameSlot(FrameDescriptor descriptor, Object identifier, int index, FrameSlotKind kind) {
+        this.descriptor = descriptor;
+        this.identifier = identifier;
+        this.index = index;
+        this.kind = kind;
+    }
 
-    int getIndex();
+    public Object getIdentifier() {
+        return identifier;
+    }
+
+    public int getIndex() {
+        return index;
+    }
 
-    FrameSlotKind getKind();
+    public FrameSlotKind getKind() {
+        return kind;
+    }
 
-    void setKind(FrameSlotKind kind);
+    public void setKind(final FrameSlotKind kind) {
+        if (this.kind != kind) {
+            CompilerDirectives.transferToInterpreter();
+            this.kind = kind;
+            this.descriptor.updateVersion();
+        }
+    }
 
-    FrameDescriptor getFrameDescriptor();
+    @Override
+    public String toString() {
+        return "[" + index + "," + identifier + "," + kind + "]";
+    }
+
+    public FrameDescriptor getFrameDescriptor() {
+        return this.descriptor;
+    }
 }
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlotImpl.java	Wed Oct 30 20:01:50 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.oracle.truffle.api.frame;
-
-public final class FrameSlotImpl implements FrameSlot {
-
-    private final FrameDescriptor descriptor;
-    private final Object identifier;
-    private final int index;
-    @com.oracle.truffle.api.CompilerDirectives.CompilationFinal private FrameSlotKind kind;
-
-    public FrameSlotImpl(FrameDescriptor descriptor, Object identifier, int index, FrameSlotKind kind) {
-        this.descriptor = descriptor;
-        this.identifier = identifier;
-        this.index = index;
-        this.kind = kind;
-    }
-
-    public Object getIdentifier() {
-        return identifier;
-    }
-
-    public int getIndex() {
-        return index;
-    }
-
-    public FrameSlotKind getKind() {
-        return kind;
-    }
-
-    public void setKind(final FrameSlotKind kind) {
-        if (this.kind != kind) {
-            this.kind = kind;
-            this.descriptor.updateVersion();
-        }
-    }
-
-    @Override
-    public String toString() {
-        return "[" + index + "," + identifier + "," + kind + "]";
-    }
-
-    @Override
-    public FrameDescriptor getFrameDescriptor() {
-        return this.descriptor;
-    }
-}