annotate graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlot.java @ 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 494b818b527c
children 80b0bd9e29c8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7267
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
1 /*
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
2 * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
4 *
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
11279
494b818b527c Adding "Classpath" exception to the classes in the com.oracle.truffle.api and the com.oracle.truffle.api.dsl package.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 9321
diff changeset
7 * published by the Free Software Foundation. Oracle designates this
494b818b527c Adding "Classpath" exception to the classes in the com.oracle.truffle.api and the com.oracle.truffle.api.dsl package.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 9321
diff changeset
8 * particular file as subject to the "Classpath" exception as provided
494b818b527c Adding "Classpath" exception to the classes in the com.oracle.truffle.api and the com.oracle.truffle.api.dsl package.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 9321
diff changeset
9 * by Oracle in the LICENSE file that accompanied this code.
7267
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
10 *
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
11 * This code is distributed in the hope that it will be useful, but WITHOUT
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
14 * version 2 for more details (a copy is included in the LICENSE file that
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
15 * accompanied this code).
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
16 *
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License version
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
18 * 2 along with this work; if not, write to the Free Software Foundation,
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
20 *
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
22 * or visit www.oracle.com if you need additional information or have any
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
23 * questions.
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
24 */
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
25 package com.oracle.truffle.api.frame;
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
26
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
27 import com.oracle.truffle.api.*;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
28
7267
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
29 /**
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
30 * A slot in a frame that can store a value of a given type.
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
31 */
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
32 public final class FrameSlot implements Cloneable {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
33
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
34 private final FrameDescriptor descriptor;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
35 private final Object identifier;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
36 private final int index;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
37 @com.oracle.truffle.api.CompilerDirectives.CompilationFinal private FrameSlotKind kind;
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7267
diff changeset
38
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
39 public FrameSlot(FrameDescriptor descriptor, Object identifier, int index, FrameSlotKind kind) {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
40 this.descriptor = descriptor;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
41 this.identifier = identifier;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
42 this.index = index;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
43 this.kind = kind;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
44 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7267
diff changeset
45
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
46 public Object getIdentifier() {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
47 return identifier;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
48 }
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
49
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
50 public int getIndex() {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
51 return index;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
52 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7267
diff changeset
53
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
54 public FrameSlotKind getKind() {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
55 return kind;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
56 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7267
diff changeset
57
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
58 public void setKind(final FrameSlotKind kind) {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
59 if (this.kind != kind) {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
60 CompilerDirectives.transferToInterpreter();
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
61 this.kind = kind;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
62 this.descriptor.updateVersion();
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
63 }
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
64 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7267
diff changeset
65
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
66 @Override
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
67 public String toString() {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
68 return "[" + index + "," + identifier + "," + kind + "]";
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
69 }
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
70
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
71 public FrameDescriptor getFrameDescriptor() {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
72 return this.descriptor;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
73 }
7267
a4b84ba6dc2e Introduction of the Truffle API for efficient implementation of dynamic languages on top of the Graal VM. New projects com.oracle.truffle.api for the API definition and com.oracle.truffle.api.test for API tests and documentation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
74 }