annotate truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlot.java @ 22157:dc83cc1f94f2

Using fully qualified imports
author Jaroslav Tulach <jaroslav.tulach@oracle.com>
date Wed, 16 Sep 2015 11:33:22 +0200
parents 9c8c0937da41
children cda3eebfa777
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
22157
dc83cc1f94f2 Using fully qualified imports
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 21951
diff changeset
27 import com.oracle.truffle.api.CompilerDirectives;
16052
80b0bd9e29c8 FrameSlot: fix import
Bernhard Urban <bernhard.urban@jku.at>
parents: 12644
diff changeset
28 import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
29
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
30 /**
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 * 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
32 */
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
33 public final class FrameSlot implements Cloneable {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
34
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
35 private final FrameDescriptor descriptor;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
36 private final Object identifier;
16727
9d55732d0880 additional info field on FrameSlot nodes (for language-specific use)
Lukas Stadler <lukas.stadler@oracle.com>
parents: 16052
diff changeset
37 private final Object info;
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
38 private final int index;
16052
80b0bd9e29c8 FrameSlot: fix import
Bernhard Urban <bernhard.urban@jku.at>
parents: 12644
diff changeset
39 @CompilationFinal private FrameSlotKind kind;
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7267
diff changeset
40
16727
9d55732d0880 additional info field on FrameSlot nodes (for language-specific use)
Lukas Stadler <lukas.stadler@oracle.com>
parents: 16052
diff changeset
41 public FrameSlot(FrameDescriptor descriptor, Object identifier, Object info, int index, FrameSlotKind kind) {
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
42 this.descriptor = descriptor;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
43 this.identifier = identifier;
16727
9d55732d0880 additional info field on FrameSlot nodes (for language-specific use)
Lukas Stadler <lukas.stadler@oracle.com>
parents: 16052
diff changeset
44 this.info = info;
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
45 this.index = index;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
46 this.kind = kind;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
47 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7267
diff changeset
48
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
49 public Object getIdentifier() {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
50 return identifier;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
51 }
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
52
16727
9d55732d0880 additional info field on FrameSlot nodes (for language-specific use)
Lukas Stadler <lukas.stadler@oracle.com>
parents: 16052
diff changeset
53 public Object getInfo() {
9d55732d0880 additional info field on FrameSlot nodes (for language-specific use)
Lukas Stadler <lukas.stadler@oracle.com>
parents: 16052
diff changeset
54 return info;
9d55732d0880 additional info field on FrameSlot nodes (for language-specific use)
Lukas Stadler <lukas.stadler@oracle.com>
parents: 16052
diff changeset
55 }
9d55732d0880 additional info field on FrameSlot nodes (for language-specific use)
Lukas Stadler <lukas.stadler@oracle.com>
parents: 16052
diff changeset
56
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
57 public int getIndex() {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
58 return index;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
59 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7267
diff changeset
60
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
61 public FrameSlotKind getKind() {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
62 return kind;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
63 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7267
diff changeset
64
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
65 public void setKind(final FrameSlotKind kind) {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
66 if (this.kind != kind) {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
67 CompilerDirectives.transferToInterpreter();
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
68 this.kind = kind;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
69 this.descriptor.updateVersion();
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 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7267
diff changeset
72
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
73 @Override
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
74 public String toString() {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
75 return "[" + index + "," + identifier + "," + kind + "]";
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
76 }
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
77
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
78 public FrameDescriptor getFrameDescriptor() {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
79 return this.descriptor;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
80 }
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
81 }