# HG changeset patch # User Andreas Woess # Date 1383156329 -3600 # Node ID e122dc0436be2d4a9d0d2049b6220574f0733350 # Parent 856a9864ed93df2951bf9dd9b371b3cc0e8f4c9e convert FrameSlot interface to a final class. diff -r 856a9864ed93 -r e122dc0436be graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameDescriptor.java --- 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 slots; - private final HashMap identifierToSlotMap; + private final ArrayList slots; + private final HashMap identifierToSlotMap; private Assumption version; private HashMap 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(); diff -r 856a9864ed93 -r e122dc0436be graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlot.java --- 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; + } } diff -r 856a9864ed93 -r e122dc0436be graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlotImpl.java --- 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; - } -}