Mercurial > hg > graal-jvmci-8
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; - } -}