annotate truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlot.java @ 22548:6b76a24fffbd default tip

Use all variables: a, b, u,v and x, y
author Jaroslav Tulach <jaroslav.tulach@oracle.com>
date Thu, 14 Jan 2016 14:20:57 +0100
parents cda3eebfa777
children
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 /**
22522
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
31 * A slot in a {@link Frame} and {@link FrameDescriptor} that can store a value of a given type.
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
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
22522
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
41 /**
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
42 * @deprecated use
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
43 * {@link FrameDescriptor#addFrameSlot(java.lang.Object, java.lang.Object, com.oracle.truffle.api.frame.FrameSlotKind)}
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
44 * to create new instance of the slot. This method will be made package private in
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
45 * the future.
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
46 */
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
47 @Deprecated
16727
9d55732d0880 additional info field on FrameSlot nodes (for language-specific use)
Lukas Stadler <lukas.stadler@oracle.com>
parents: 16052
diff changeset
48 public FrameSlot(FrameDescriptor descriptor, Object identifier, Object info, int index, FrameSlotKind kind) {
22522
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
49 this(descriptor, identifier, info, kind, index);
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
50 }
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
51
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
52 FrameSlot(FrameDescriptor descriptor, Object identifier, Object info, FrameSlotKind kind, int index) {
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
53 this.descriptor = descriptor;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
54 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
55 this.info = info;
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
56 this.index = index;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
57 this.kind = kind;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
58 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7267
diff changeset
59
22522
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
60 /**
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
61 * Identifier of the slot.
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
62 *
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
63 * @return value as specified in {@link FrameDescriptor#addFrameSlot(java.lang.Object)}
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
64 * parameter
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
65 */
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
66 public Object getIdentifier() {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
67 return identifier;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
68 }
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
69
22522
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
70 /**
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
71 * Information about the slot.
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
72 *
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
73 * @return value as specified as second parameter of
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
74 * {@link FrameDescriptor#addFrameSlot(java.lang.Object, java.lang.Object, com.oracle.truffle.api.frame.FrameSlotKind)}
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
75 */
16727
9d55732d0880 additional info field on FrameSlot nodes (for language-specific use)
Lukas Stadler <lukas.stadler@oracle.com>
parents: 16052
diff changeset
76 public Object getInfo() {
9d55732d0880 additional info field on FrameSlot nodes (for language-specific use)
Lukas Stadler <lukas.stadler@oracle.com>
parents: 16052
diff changeset
77 return info;
9d55732d0880 additional info field on FrameSlot nodes (for language-specific use)
Lukas Stadler <lukas.stadler@oracle.com>
parents: 16052
diff changeset
78 }
9d55732d0880 additional info field on FrameSlot nodes (for language-specific use)
Lukas Stadler <lukas.stadler@oracle.com>
parents: 16052
diff changeset
79
22522
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
80 /**
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
81 * Index of the slot in the {@link FrameDescriptor}.
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
82 *
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
83 * @return position of the slot computed after
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
84 * {@link FrameDescriptor#addFrameSlot(java.lang.Object, java.lang.Object, com.oracle.truffle.api.frame.FrameSlotKind)
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
85 * adding} it.
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
86 */
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
87 public int getIndex() {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
88 return index;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
89 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7267
diff changeset
90
22522
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
91 /**
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
92 * Kind of the slot. Specified either at
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
93 * {@link FrameDescriptor#addFrameSlot(java.lang.Object, com.oracle.truffle.api.frame.FrameSlotKind)
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
94 * creation time} or updated via {@link #setKind(com.oracle.truffle.api.frame.FrameSlotKind)}
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
95 * method.
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
96 *
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
97 * @return current kind of this slot
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
98 */
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
99 public FrameSlotKind getKind() {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
100 return kind;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
101 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7267
diff changeset
102
22522
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
103 /**
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
104 * Changes the kind of this slot. Change of the slot kind is done on <em>slow path</em> and
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
105 * invalidates assumptions about {@link FrameDescriptor#createVersion() version} of
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
106 * {@link #getFrameDescriptor() associated descriptor}.
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
107 *
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
108 * @param kind new kind of the slot
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
109 */
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
110 public void setKind(final FrameSlotKind kind) {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
111 if (this.kind != kind) {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
112 CompilerDirectives.transferToInterpreter();
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
113 this.kind = kind;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
114 this.descriptor.updateVersion();
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
115 }
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
116 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7267
diff changeset
117
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
118 @Override
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
119 public String toString() {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
120 return "[" + index + "," + identifier + "," + kind + "]";
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
121 }
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
122
22522
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
123 /**
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
124 * Frame descriptor this slot is associated with.
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
125 *
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
126 * @return instance of descriptor that {@link FrameDescriptor#addFrameSlot(java.lang.Object)
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
127 * created} the slot
cda3eebfa777 Documenting FrameSlot methods. Deprecating FrameSlot constructor in favor of FrameDescriptor.addFrameSlot.
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
128 */
12644
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
129 public FrameDescriptor getFrameDescriptor() {
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
130 return this.descriptor;
e122dc0436be convert FrameSlot interface to a final class.
Andreas Woess <andreas.woess@jku.at>
parents: 11279
diff changeset
131 }
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
132 }