annotate graal/com.oracle.graal.word/src/com/oracle/graal/word/Word.java @ 21543:93c50cefb9e8

moved GraalInternalError to com.oracle.jvmci.common and renamed it to JVMCIError (JBS:GRAAL-53)
author Doug Simon <doug.simon@oracle.com>
date Mon, 25 May 2015 23:30:34 +0200
parents 5e868236654f
children 48c1ebd24120
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1 /*
21418
cba35d171cd1 Move memory related nodes to their own package.
Roland Schatz <roland.schatz@oracle.com>
parents: 19791
diff changeset
2 * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
4 *
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
7 * published by the Free Software Foundation.
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
8 *
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
13 * accompanied this code).
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
14 *
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
18 *
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
21 * questions.
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
22 */
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
23 package com.oracle.graal.word;
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
24
21541
5e868236654f moved UnsafeAccess to com.oracle.jvmci.common (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21418
diff changeset
25 import static com.oracle.jvmci.common.UnsafeAccess.*;
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
26
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
27 import java.lang.annotation.*;
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
28
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
29 import com.oracle.graal.api.code.*;
9792
06dc2d2324d6 pulled LocationIdentity into a top level class and moved it to the api.meta project
Doug Simon <doug.simon@oracle.com>
parents: 9526
diff changeset
30 import com.oracle.graal.api.meta.*;
15200
97eed257999b Move Condition to graal.compiler.common.
Josef Eisl <josef.eisl@jku.at>
parents: 15193
diff changeset
31 import com.oracle.graal.compiler.common.calc.*;
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
32 import com.oracle.graal.nodes.*;
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
33 import com.oracle.graal.nodes.calc.*;
21543
93c50cefb9e8 moved GraalInternalError to com.oracle.jvmci.common and renamed it to JVMCIError (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21541
diff changeset
34 import com.oracle.graal.nodes.memory.HeapAccess.BarrierType;
93c50cefb9e8 moved GraalInternalError to com.oracle.jvmci.common and renamed it to JVMCIError (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21541
diff changeset
35 import com.oracle.jvmci.common.*;
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
36
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
37 public abstract class Word implements Signed, Unsigned, Pointer {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
38
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
39 /**
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
40 * Links a method to a canonical operation represented by an {@link Opcode} val.
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
41 */
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
42 @Retention(RetentionPolicy.RUNTIME)
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
43 @Target(ElementType.METHOD)
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
44 public @interface Operation {
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
45
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
46 Class<? extends ValueNode> node() default ValueNode.class;
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
47
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
48 boolean rightOperandIsInt() default false;
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
49
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
50 Opcode opcode() default Opcode.NODE_CLASS;
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
51
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
52 Condition condition() default Condition.EQ;
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
53 }
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
54
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
55 /**
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
56 * The canonical {@link Operation} represented by a method in the {@link Word} class.
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
57 */
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
58 // @formatter:off
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
59 public enum Opcode {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
60 NODE_CLASS,
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
61 COMPARISON,
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
62 NOT,
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
63 READ_POINTER,
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
64 READ_OBJECT,
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
65 READ_BARRIERED,
10800
69e305a5cf09 Introduce new read opcode that allows compressed oops and read barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 10759
diff changeset
66 READ_HEAP,
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
67 WRITE_POINTER,
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
68 WRITE_OBJECT,
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
69 WRITE_BARRIERED,
10759
7f186f1486f7 Use initializing write node in object clone snippets.
Roland Schatz <roland.schatz@oracle.com>
parents: 10546
diff changeset
70 INITIALIZE,
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
71 ZERO,
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
72 FROM_UNSIGNED,
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
73 FROM_SIGNED,
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
74 FROM_OBJECT,
19791
14e703edb2ab use GraphBuilderPlugins for method substitutions, intrinsics and snippets (GRAAL-982)
Doug Simon <doug.simon@oracle.com>
parents: 18401
diff changeset
75 FROM_WORDBASE,
8492
286a49d423c9 -Snippetization of CMS WriteBarriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7710
diff changeset
76 FROM_ARRAY,
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
77 TO_OBJECT,
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
78 TO_RAW_VALUE,
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
79 }
7521
d4bc143c575a replaced use of <br> in javadoc with <p>
Doug Simon <doug.simon@oracle.com>
parents: 7303
diff changeset
80 // @formatter:on
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
81
11277
e75e8ffdf87c Made Word.box() private: Outside users should use the different signed() and unsigned() methods to ensure proper expansion of 32-bit values on 64-bit systems.
Christian Wimmer <christian.wimmer@oracle.com>
parents: 10828
diff changeset
82 /*
e75e8ffdf87c Made Word.box() private: Outside users should use the different signed() and unsigned() methods to ensure proper expansion of 32-bit values on 64-bit systems.
Christian Wimmer <christian.wimmer@oracle.com>
parents: 10828
diff changeset
83 * Outside users should use the different signed() and unsigned() methods to ensure proper
e75e8ffdf87c Made Word.box() private: Outside users should use the different signed() and unsigned() methods to ensure proper expansion of 32-bit values on 64-bit systems.
Christian Wimmer <christian.wimmer@oracle.com>
parents: 10828
diff changeset
84 * expansion of 32-bit values on 64-bit systems.
e75e8ffdf87c Made Word.box() private: Outside users should use the different signed() and unsigned() methods to ensure proper expansion of 32-bit values on 64-bit systems.
Christian Wimmer <christian.wimmer@oracle.com>
parents: 10828
diff changeset
85 */
e75e8ffdf87c Made Word.box() private: Outside users should use the different signed() and unsigned() methods to ensure proper expansion of 32-bit values on 64-bit systems.
Christian Wimmer <christian.wimmer@oracle.com>
parents: 10828
diff changeset
86 private static Word box(long val) {
8472
f71fec3fadae made method substitutions for Thread be interpretable
Doug Simon <doug.simon@oracle.com>
parents: 8451
diff changeset
87 return HostedWord.boxLong(val);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
88 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
89
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
90 protected abstract long unbox();
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
91
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
92 private static Word intParam(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
93 return box(val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
94 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
95
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
96 /**
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
97 * The constant 0, i.e., the word with no bits set. There is no difference between a signed and
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
98 * unsigned zero.
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
99 *
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
100 * @return the constant 0.
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
101 */
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
102 @Operation(opcode = Opcode.ZERO)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
103 public static Word zero() {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
104 return box(0L);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
105 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
106
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
107 /**
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
108 * Unsafe conversion from a Java long value to a Word. The parameter is treated as an unsigned
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
109 * 64-bit value (in contrast to the semantics of a Java long).
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
110 *
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
111 * @param val a 64 bit unsigned value
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
112 * @return the value cast to Word
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
113 */
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
114 @Operation(opcode = Opcode.FROM_UNSIGNED)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
115 public static Word unsigned(long val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
116 return box(val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
117 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
118
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
119 /**
13504
5aaae6e76a2a Utility method to convert a long to a pointer
Christian Wimmer <christian.wimmer@oracle.com>
parents: 13130
diff changeset
120 * Unsafe conversion from a Java long value to a {@link PointerBase pointer}. The parameter is
5aaae6e76a2a Utility method to convert a long to a pointer
Christian Wimmer <christian.wimmer@oracle.com>
parents: 13130
diff changeset
121 * treated as an unsigned 64-bit value (in contrast to the semantics of a Java long).
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
122 *
13504
5aaae6e76a2a Utility method to convert a long to a pointer
Christian Wimmer <christian.wimmer@oracle.com>
parents: 13130
diff changeset
123 * @param val a 64 bit unsigned value
5aaae6e76a2a Utility method to convert a long to a pointer
Christian Wimmer <christian.wimmer@oracle.com>
parents: 13130
diff changeset
124 * @return the value cast to PointerBase
5aaae6e76a2a Utility method to convert a long to a pointer
Christian Wimmer <christian.wimmer@oracle.com>
parents: 13130
diff changeset
125 */
5aaae6e76a2a Utility method to convert a long to a pointer
Christian Wimmer <christian.wimmer@oracle.com>
parents: 13130
diff changeset
126 @Operation(opcode = Opcode.FROM_UNSIGNED)
5aaae6e76a2a Utility method to convert a long to a pointer
Christian Wimmer <christian.wimmer@oracle.com>
parents: 13130
diff changeset
127 @SuppressWarnings("unchecked")
5aaae6e76a2a Utility method to convert a long to a pointer
Christian Wimmer <christian.wimmer@oracle.com>
parents: 13130
diff changeset
128 public static <T extends PointerBase> T pointer(long val) {
5aaae6e76a2a Utility method to convert a long to a pointer
Christian Wimmer <christian.wimmer@oracle.com>
parents: 13130
diff changeset
129 return (T) box(val);
5aaae6e76a2a Utility method to convert a long to a pointer
Christian Wimmer <christian.wimmer@oracle.com>
parents: 13130
diff changeset
130 }
5aaae6e76a2a Utility method to convert a long to a pointer
Christian Wimmer <christian.wimmer@oracle.com>
parents: 13130
diff changeset
131
5aaae6e76a2a Utility method to convert a long to a pointer
Christian Wimmer <christian.wimmer@oracle.com>
parents: 13130
diff changeset
132 /**
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
133 * Unsafe conversion from a Java int value to a Word. The parameter is treated as an unsigned
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
134 * 32-bit value (in contrast to the semantics of a Java int).
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
135 *
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
136 * @param val a 32 bit unsigned value
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
137 * @return the value cast to Word
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
138 */
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
139 @Operation(opcode = Opcode.FROM_UNSIGNED)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
140 public static Word unsigned(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
141 return box(val & 0xffffffffL);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
142 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
143
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
144 /**
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
145 * Unsafe conversion from a Java long value to a Word. The parameter is treated as a signed
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
146 * 64-bit value (unchanged semantics of a Java long).
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
147 *
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
148 * @param val a 64 bit signed value
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
149 * @return the value cast to Word
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
150 */
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
151 @Operation(opcode = Opcode.FROM_SIGNED)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
152 public static Word signed(long val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
153 return box(val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
154 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
155
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
156 /**
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
157 * Unsafe conversion from a Java int value to a Word. The parameter is treated as a signed
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
158 * 32-bit value (unchanged semantics of a Java int).
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
159 *
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
160 * @param val a 32 bit signed value
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
161 * @return the value cast to Word
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
162 */
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
163 @Operation(opcode = Opcode.FROM_SIGNED)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
164 public static Word signed(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
165 return box(val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
166 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
167
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
168 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
169 @Operation(opcode = Opcode.TO_RAW_VALUE)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
170 public long rawValue() {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
171 return unbox();
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
172 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
173
19791
14e703edb2ab use GraphBuilderPlugins for method substitutions, intrinsics and snippets (GRAAL-982)
Doug Simon <doug.simon@oracle.com>
parents: 18401
diff changeset
174 @Operation(opcode = Opcode.FROM_WORDBASE)
14e703edb2ab use GraphBuilderPlugins for method substitutions, intrinsics and snippets (GRAAL-982)
Doug Simon <doug.simon@oracle.com>
parents: 18401
diff changeset
175 public static native Word fromWordBase(WordBase val);
14e703edb2ab use GraphBuilderPlugins for method substitutions, intrinsics and snippets (GRAAL-982)
Doug Simon <doug.simon@oracle.com>
parents: 18401
diff changeset
176
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
177 @Operation(opcode = Opcode.FROM_OBJECT)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
178 public static native Pointer fromObject(Object val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
179
8492
286a49d423c9 -Snippetization of CMS WriteBarriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7710
diff changeset
180 @Operation(opcode = Opcode.FROM_ARRAY)
286a49d423c9 -Snippetization of CMS WriteBarriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7710
diff changeset
181 public static native Pointer fromArray(Object oop, Object location);
286a49d423c9 -Snippetization of CMS WriteBarriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 7710
diff changeset
182
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
183 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
184 @Operation(opcode = Opcode.TO_OBJECT)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
185 public native Object toObject();
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
186
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
187 @Override
17197
ec35bb4eccb8 Add support for other data types to integer arithmetic nodes.
Roland Schatz <roland.schatz@oracle.com>
parents: 15836
diff changeset
188 @Operation(node = AddNode.class)
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
189 public Word add(Signed val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
190 return add((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
191 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
192
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
193 @Override
17197
ec35bb4eccb8 Add support for other data types to integer arithmetic nodes.
Roland Schatz <roland.schatz@oracle.com>
parents: 15836
diff changeset
194 @Operation(node = AddNode.class)
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
195 public Word add(Unsigned val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
196 return add((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
197 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
198
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
199 @Override
17197
ec35bb4eccb8 Add support for other data types to integer arithmetic nodes.
Roland Schatz <roland.schatz@oracle.com>
parents: 15836
diff changeset
200 @Operation(node = AddNode.class)
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
201 public Word add(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
202 return add(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
203 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
204
17197
ec35bb4eccb8 Add support for other data types to integer arithmetic nodes.
Roland Schatz <roland.schatz@oracle.com>
parents: 15836
diff changeset
205 @Operation(node = AddNode.class)
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
206 public Word add(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
207 return box(unbox() + val.unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
208 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
209
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
210 @Override
17197
ec35bb4eccb8 Add support for other data types to integer arithmetic nodes.
Roland Schatz <roland.schatz@oracle.com>
parents: 15836
diff changeset
211 @Operation(node = SubNode.class)
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
212 public Word subtract(Signed val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
213 return subtract((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
214 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
215
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
216 @Override
17197
ec35bb4eccb8 Add support for other data types to integer arithmetic nodes.
Roland Schatz <roland.schatz@oracle.com>
parents: 15836
diff changeset
217 @Operation(node = SubNode.class)
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
218 public Word subtract(Unsigned val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
219 return subtract((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
220 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
221
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
222 @Override
17197
ec35bb4eccb8 Add support for other data types to integer arithmetic nodes.
Roland Schatz <roland.schatz@oracle.com>
parents: 15836
diff changeset
223 @Operation(node = SubNode.class)
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
224 public Word subtract(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
225 return subtract(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
226 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
227
17197
ec35bb4eccb8 Add support for other data types to integer arithmetic nodes.
Roland Schatz <roland.schatz@oracle.com>
parents: 15836
diff changeset
228 @Operation(node = SubNode.class)
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
229 public Word subtract(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
230 return box(unbox() - val.unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
231 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
232
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
233 @Override
17197
ec35bb4eccb8 Add support for other data types to integer arithmetic nodes.
Roland Schatz <roland.schatz@oracle.com>
parents: 15836
diff changeset
234 @Operation(node = MulNode.class)
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
235 public Word multiply(Signed val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
236 return multiply((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
237 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
238
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
239 @Override
17197
ec35bb4eccb8 Add support for other data types to integer arithmetic nodes.
Roland Schatz <roland.schatz@oracle.com>
parents: 15836
diff changeset
240 @Operation(node = MulNode.class)
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
241 public Word multiply(Unsigned val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
242 return multiply((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
243 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
244
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
245 @Override
17197
ec35bb4eccb8 Add support for other data types to integer arithmetic nodes.
Roland Schatz <roland.schatz@oracle.com>
parents: 15836
diff changeset
246 @Operation(node = MulNode.class)
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
247 public Word multiply(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
248 return multiply(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
249 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
250
17197
ec35bb4eccb8 Add support for other data types to integer arithmetic nodes.
Roland Schatz <roland.schatz@oracle.com>
parents: 15836
diff changeset
251 @Operation(node = MulNode.class)
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
252 public Word multiply(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
253 return box(unbox() * val.unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
254 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
255
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
256 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
257 @Operation(node = IntegerDivNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
258 public Word signedDivide(Signed val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
259 return signedDivide((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
260 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
261
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
262 @Override
7303
7952e3cfa6ed Fix wrong @Operation annotations
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7300
diff changeset
263 @Operation(node = IntegerDivNode.class)
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
264 public Word signedDivide(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
265 return signedDivide(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
266 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
267
7303
7952e3cfa6ed Fix wrong @Operation annotations
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7300
diff changeset
268 @Operation(node = IntegerDivNode.class)
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
269 public Word signedDivide(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
270 return box(unbox() / val.unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
271 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
272
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
273 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
274 @Operation(node = UnsignedDivNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
275 public Word unsignedDivide(Unsigned val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
276 return unsignedDivide((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
277 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
278
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
279 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
280 @Operation(node = UnsignedDivNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
281 public Word unsignedDivide(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
282 return signedDivide(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
283 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
284
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
285 @Operation(node = UnsignedDivNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
286 public Word unsignedDivide(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
287 return box(UnsignedMath.divide(unbox(), val.unbox()));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
288 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
289
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
290 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
291 @Operation(node = IntegerRemNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
292 public Word signedRemainder(Signed val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
293 return signedRemainder((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
294 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
295
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
296 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
297 @Operation(node = IntegerRemNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
298 public Word signedRemainder(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
299 return signedRemainder(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
300 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
301
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
302 @Operation(node = IntegerRemNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
303 public Word signedRemainder(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
304 return box(unbox() % val.unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
305 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
306
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
307 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
308 @Operation(node = UnsignedRemNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
309 public Word unsignedRemainder(Unsigned val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
310 return unsignedRemainder((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
311 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
312
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
313 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
314 @Operation(node = UnsignedRemNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
315 public Word unsignedRemainder(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
316 return signedRemainder(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
317 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
318
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
319 @Operation(node = UnsignedRemNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
320 public Word unsignedRemainder(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
321 return box(UnsignedMath.remainder(unbox(), val.unbox()));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
322 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
323
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
324 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
325 @Operation(node = LeftShiftNode.class, rightOperandIsInt = true)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
326 public Word shiftLeft(Unsigned val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
327 return shiftLeft((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
328 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
329
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
330 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
331 @Operation(node = LeftShiftNode.class, rightOperandIsInt = true)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
332 public Word shiftLeft(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
333 return shiftLeft(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
334 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
335
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
336 @Operation(node = LeftShiftNode.class, rightOperandIsInt = true)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
337 public Word shiftLeft(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
338 return box(unbox() << val.unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
339 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
340
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
341 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
342 @Operation(node = RightShiftNode.class, rightOperandIsInt = true)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
343 public Word signedShiftRight(Unsigned val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
344 return signedShiftRight((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
345 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
346
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
347 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
348 @Operation(node = RightShiftNode.class, rightOperandIsInt = true)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
349 public Word signedShiftRight(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
350 return signedShiftRight(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
351 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
352
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
353 @Operation(node = RightShiftNode.class, rightOperandIsInt = true)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
354 public Word signedShiftRight(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
355 return box(unbox() >> val.unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
356 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
357
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
358 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
359 @Operation(node = UnsignedRightShiftNode.class, rightOperandIsInt = true)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
360 public Word unsignedShiftRight(Unsigned val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
361 return unsignedShiftRight((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
362 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
363
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
364 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
365 @Operation(node = UnsignedRightShiftNode.class, rightOperandIsInt = true)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
366 public Word unsignedShiftRight(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
367 return unsignedShiftRight(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
368 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
369
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
370 @Operation(node = UnsignedRightShiftNode.class, rightOperandIsInt = true)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
371 public Word unsignedShiftRight(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
372 return box(unbox() >>> val.unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
373 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
374
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
375 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
376 @Operation(node = AndNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
377 public Word and(Signed val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
378 return and((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
379 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
380
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
381 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
382 @Operation(node = AndNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
383 public Word and(Unsigned val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
384 return and((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
385 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
386
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
387 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
388 @Operation(node = AndNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
389 public Word and(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
390 return and(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
391 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
392
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
393 @Operation(node = AndNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
394 public Word and(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
395 return box(unbox() & val.unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
396 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
397
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
398 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
399 @Operation(node = OrNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
400 public Word or(Signed val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
401 return or((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
402 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
403
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
404 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
405 @Operation(node = OrNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
406 public Word or(Unsigned val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
407 return or((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
408 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
409
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
410 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
411 @Operation(node = OrNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
412 public Word or(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
413 return or(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
414 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
415
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
416 @Operation(node = OrNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
417 public Word or(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
418 return box(unbox() | val.unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
419 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
420
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
421 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
422 @Operation(node = XorNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
423 public Word xor(Signed val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
424 return xor((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
425 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
426
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
427 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
428 @Operation(node = XorNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
429 public Word xor(Unsigned val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
430 return xor((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
431 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
432
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
433 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
434 @Operation(node = XorNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
435 public Word xor(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
436 return xor(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
437 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
438
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
439 @Operation(node = XorNode.class)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
440 public Word xor(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
441 return box(unbox() ^ val.unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
442 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
443
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
444 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
445 @Operation(opcode = Opcode.NOT)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
446 public Word not() {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
447 return box(~unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
448 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
449
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
450 @Override
7701
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
451 @Operation(opcode = Opcode.COMPARISON, condition = Condition.EQ)
13130
103a0003db01 Introduce ComparableWord and PointerBase into the Word type hierarchy
Christian Wimmer <christian.wimmer@oracle.com>
parents: 12436
diff changeset
452 public boolean equal(ComparableWord val) {
103a0003db01 Introduce ComparableWord and PointerBase into the Word type hierarchy
Christian Wimmer <christian.wimmer@oracle.com>
parents: 12436
diff changeset
453 return equal((Word) val);
103a0003db01 Introduce ComparableWord and PointerBase into the Word type hierarchy
Christian Wimmer <christian.wimmer@oracle.com>
parents: 12436
diff changeset
454 }
103a0003db01 Introduce ComparableWord and PointerBase into the Word type hierarchy
Christian Wimmer <christian.wimmer@oracle.com>
parents: 12436
diff changeset
455
103a0003db01 Introduce ComparableWord and PointerBase into the Word type hierarchy
Christian Wimmer <christian.wimmer@oracle.com>
parents: 12436
diff changeset
456 @Override
103a0003db01 Introduce ComparableWord and PointerBase into the Word type hierarchy
Christian Wimmer <christian.wimmer@oracle.com>
parents: 12436
diff changeset
457 @Operation(opcode = Opcode.COMPARISON, condition = Condition.EQ)
7701
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
458 public boolean equal(Signed val) {
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
459 return equal((Word) val);
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
460 }
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
461
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
462 @Override
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
463 @Operation(opcode = Opcode.COMPARISON, condition = Condition.EQ)
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
464 public boolean equal(Unsigned val) {
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
465 return equal((Word) val);
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
466 }
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
467
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
468 @Override
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
469 @Operation(opcode = Opcode.COMPARISON, condition = Condition.EQ)
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
470 public boolean equal(int val) {
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
471 return equal(intParam(val));
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
472 }
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
473
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
474 @Operation(opcode = Opcode.COMPARISON, condition = Condition.EQ)
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
475 public boolean equal(Word val) {
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
476 return unbox() == val.unbox();
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
477 }
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
478
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
479 @Override
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
480 @Operation(opcode = Opcode.COMPARISON, condition = Condition.NE)
13130
103a0003db01 Introduce ComparableWord and PointerBase into the Word type hierarchy
Christian Wimmer <christian.wimmer@oracle.com>
parents: 12436
diff changeset
481 public boolean notEqual(ComparableWord val) {
103a0003db01 Introduce ComparableWord and PointerBase into the Word type hierarchy
Christian Wimmer <christian.wimmer@oracle.com>
parents: 12436
diff changeset
482 return notEqual((Word) val);
103a0003db01 Introduce ComparableWord and PointerBase into the Word type hierarchy
Christian Wimmer <christian.wimmer@oracle.com>
parents: 12436
diff changeset
483 }
103a0003db01 Introduce ComparableWord and PointerBase into the Word type hierarchy
Christian Wimmer <christian.wimmer@oracle.com>
parents: 12436
diff changeset
484
103a0003db01 Introduce ComparableWord and PointerBase into the Word type hierarchy
Christian Wimmer <christian.wimmer@oracle.com>
parents: 12436
diff changeset
485 @Override
103a0003db01 Introduce ComparableWord and PointerBase into the Word type hierarchy
Christian Wimmer <christian.wimmer@oracle.com>
parents: 12436
diff changeset
486 @Operation(opcode = Opcode.COMPARISON, condition = Condition.NE)
7701
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
487 public boolean notEqual(Signed val) {
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
488 return notEqual((Word) val);
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
489 }
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
490
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
491 @Override
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
492 @Operation(opcode = Opcode.COMPARISON, condition = Condition.NE)
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
493 public boolean notEqual(Unsigned val) {
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
494 return notEqual((Word) val);
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
495 }
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
496
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
497 @Override
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
498 @Operation(opcode = Opcode.COMPARISON, condition = Condition.NE)
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
499 public boolean notEqual(int val) {
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
500 return notEqual(intParam(val));
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
501 }
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
502
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
503 @Operation(opcode = Opcode.COMPARISON, condition = Condition.NE)
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
504 public boolean notEqual(Word val) {
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
505 return unbox() != val.unbox();
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
506 }
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
507
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
508 @Override
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
509 @Operation(opcode = Opcode.COMPARISON, condition = Condition.LT)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
510 public boolean lessThan(Signed val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
511 return lessThan((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
512 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
513
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
514 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
515 @Operation(opcode = Opcode.COMPARISON, condition = Condition.LT)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
516 public boolean lessThan(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
517 return lessThan(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
518 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
519
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
520 @Operation(opcode = Opcode.COMPARISON, condition = Condition.LT)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
521 public boolean lessThan(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
522 return unbox() < val.unbox();
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
523 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
524
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
525 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
526 @Operation(opcode = Opcode.COMPARISON, condition = Condition.LE)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
527 public boolean lessOrEqual(Signed val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
528 return lessOrEqual((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
529 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
530
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
531 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
532 @Operation(opcode = Opcode.COMPARISON, condition = Condition.LE)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
533 public boolean lessOrEqual(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
534 return lessOrEqual(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
535 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
536
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
537 @Operation(opcode = Opcode.COMPARISON, condition = Condition.LE)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
538 public boolean lessOrEqual(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
539 return unbox() <= val.unbox();
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
540 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
541
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
542 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
543 @Operation(opcode = Opcode.COMPARISON, condition = Condition.GT)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
544 public boolean greaterThan(Signed val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
545 return greaterThan((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
546 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
547
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
548 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
549 @Operation(opcode = Opcode.COMPARISON, condition = Condition.GT)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
550 public boolean greaterThan(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
551 return greaterThan(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
552 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
553
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
554 @Operation(opcode = Opcode.COMPARISON, condition = Condition.GT)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
555 public boolean greaterThan(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
556 return unbox() > val.unbox();
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
557 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
558
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
559 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
560 @Operation(opcode = Opcode.COMPARISON, condition = Condition.GE)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
561 public boolean greaterOrEqual(Signed val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
562 return greaterOrEqual((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
563 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
564
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
565 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
566 @Operation(opcode = Opcode.COMPARISON, condition = Condition.GE)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
567 public boolean greaterOrEqual(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
568 return greaterOrEqual(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
569 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
570
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
571 @Operation(opcode = Opcode.COMPARISON, condition = Condition.GE)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
572 public boolean greaterOrEqual(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
573 return unbox() >= val.unbox();
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
574 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
575
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
576 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
577 @Operation(opcode = Opcode.COMPARISON, condition = Condition.BT)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
578 public boolean belowThan(Unsigned val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
579 return belowThan((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
580 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
581
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
582 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
583 @Operation(opcode = Opcode.COMPARISON, condition = Condition.BT)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
584 public boolean belowThan(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
585 return belowThan(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
586 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
587
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
588 @Operation(opcode = Opcode.COMPARISON, condition = Condition.BT)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
589 public boolean belowThan(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
590 return UnsignedMath.belowThan(unbox(), val.unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
591 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
592
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
593 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
594 @Operation(opcode = Opcode.COMPARISON, condition = Condition.BE)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
595 public boolean belowOrEqual(Unsigned val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
596 return belowOrEqual((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
597 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
598
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
599 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
600 @Operation(opcode = Opcode.COMPARISON, condition = Condition.BE)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
601 public boolean belowOrEqual(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
602 return belowOrEqual(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
603 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
604
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
605 @Operation(opcode = Opcode.COMPARISON, condition = Condition.BE)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
606 public boolean belowOrEqual(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
607 return UnsignedMath.belowOrEqual(unbox(), val.unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
608 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
609
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
610 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
611 @Operation(opcode = Opcode.COMPARISON, condition = Condition.AT)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
612 public boolean aboveThan(Unsigned val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
613 return aboveThan((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
614 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
615
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
616 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
617 @Operation(opcode = Opcode.COMPARISON, condition = Condition.AT)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
618 public boolean aboveThan(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
619 return aboveThan(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
620 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
621
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
622 @Operation(opcode = Opcode.COMPARISON, condition = Condition.AT)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
623 public boolean aboveThan(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
624 return UnsignedMath.aboveThan(unbox(), val.unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
625 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
626
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
627 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
628 @Operation(opcode = Opcode.COMPARISON, condition = Condition.AE)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
629 public boolean aboveOrEqual(Unsigned val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
630 return aboveOrEqual((Word) val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
631 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
632
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
633 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
634 @Operation(opcode = Opcode.COMPARISON, condition = Condition.AE)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
635 public boolean aboveOrEqual(int val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
636 return aboveOrEqual(intParam(val));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
637 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
638
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
639 @Operation(opcode = Opcode.COMPARISON, condition = Condition.AE)
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
640 public boolean aboveOrEqual(Word val) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
641 return UnsignedMath.aboveOrEqual(unbox(), val.unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
642 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
643
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
644 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
645 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
646 public byte readByte(WordBase offset, LocationIdentity locationIdentity) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
647 return unsafe.getByte(add((Word) offset).unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
648 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
649
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
650 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
651 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
652 public char readChar(WordBase offset, LocationIdentity locationIdentity) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
653 return unsafe.getChar(add((Word) offset).unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
654 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
655
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
656 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
657 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
658 public short readShort(WordBase offset, LocationIdentity locationIdentity) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
659 return unsafe.getShort(add((Word) offset).unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
660 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
661
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
662 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
663 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
664 public int readInt(WordBase offset, LocationIdentity locationIdentity) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
665 return unsafe.getInt(add((Word) offset).unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
666 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
667
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
668 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
669 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
670 public long readLong(WordBase offset, LocationIdentity locationIdentity) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
671 return unsafe.getLong(add((Word) offset).unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
672 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
673
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
674 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
675 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
676 public float readFloat(WordBase offset, LocationIdentity locationIdentity) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
677 return unsafe.getFloat(add((Word) offset).unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
678 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
679
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
680 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
681 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
682 public double readDouble(WordBase offset, LocationIdentity locationIdentity) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
683 return unsafe.getDouble(add((Word) offset).unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
684 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
685
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
686 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
687 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
688 public Word readWord(WordBase offset, LocationIdentity locationIdentity) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
689 return box(unsafe.getAddress(add((Word) offset).unbox()));
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
690 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
691
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
692 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
693 @Operation(opcode = Opcode.READ_POINTER)
12436
39308acea2f7 revert Unsafe.getObject hack to read uncompressed pointers
twisti
parents: 11277
diff changeset
694 public native Object readObject(WordBase offset, LocationIdentity locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
695
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
696 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
697 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
698 public byte readByte(int offset, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
699 return readByte(signed(offset), locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
700 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
701
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
702 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
703 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
704 public char readChar(int offset, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
705 return readChar(signed(offset), locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
706 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
707
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
708 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
709 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
710 public short readShort(int offset, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
711 return readShort(signed(offset), locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
712 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
713
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
714 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
715 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
716 public int readInt(int offset, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
717 return readInt(signed(offset), locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
718 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
719
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
720 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
721 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
722 public long readLong(int offset, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
723 return readLong(signed(offset), locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
724 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
725
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
726 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
727 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
728 public float readFloat(int offset, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
729 return readFloat(signed(offset), locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
730 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
731
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
732 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
733 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
734 public double readDouble(int offset, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
735 return readDouble(signed(offset), locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
736 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
737
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
738 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
739 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
740 public Word readWord(int offset, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
741 return readWord(signed(offset), locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
742 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
743
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
744 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
745 @Operation(opcode = Opcode.READ_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
746 public Object readObject(int offset, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
747 return readObject(signed(offset), locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
748 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
749
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
750 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
751 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
752 public void writeByte(WordBase offset, byte val, LocationIdentity locationIdentity) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
753 unsafe.putByte(add((Word) offset).unbox(), val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
754 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
755
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
756 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
757 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
758 public void writeChar(WordBase offset, char val, LocationIdentity locationIdentity) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
759 unsafe.putChar(add((Word) offset).unbox(), val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
760 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
761
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
762 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
763 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
764 public void writeShort(WordBase offset, short val, LocationIdentity locationIdentity) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
765 unsafe.putShort(add((Word) offset).unbox(), val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
766 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
767
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
768 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
769 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
770 public void writeInt(WordBase offset, int val, LocationIdentity locationIdentity) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
771 unsafe.putInt(add((Word) offset).unbox(), val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
772 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
773
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
774 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
775 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
776 public void writeLong(WordBase offset, long val, LocationIdentity locationIdentity) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
777 unsafe.putLong(add((Word) offset).unbox(), val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
778 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
779
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
780 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
781 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
782 public void writeFloat(WordBase offset, float val, LocationIdentity locationIdentity) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
783 unsafe.putFloat(add((Word) offset).unbox(), val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
784 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
785
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
786 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
787 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
788 public void writeDouble(WordBase offset, double val, LocationIdentity locationIdentity) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
789 unsafe.putDouble(add((Word) offset).unbox(), val);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
790 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
791
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
792 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
793 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
794 public void writeWord(WordBase offset, WordBase val, LocationIdentity locationIdentity) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
795 unsafe.putAddress(add((Word) offset).unbox(), ((Word) val).unbox());
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
796 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
797
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
798 @Override
10759
7f186f1486f7 Use initializing write node in object clone snippets.
Roland Schatz <roland.schatz@oracle.com>
parents: 10546
diff changeset
799 @Operation(opcode = Opcode.INITIALIZE)
14101
2ec05c3f773b fix overzeroing of new storage, refactor zeroing and unroll zeroing of small arrays
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 13504
diff changeset
800 public void initializeLong(WordBase offset, long val, LocationIdentity locationIdentity) {
2ec05c3f773b fix overzeroing of new storage, refactor zeroing and unroll zeroing of small arrays
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 13504
diff changeset
801 unsafe.putLong(add((Word) offset).unbox(), val);
10759
7f186f1486f7 Use initializing write node in object clone snippets.
Roland Schatz <roland.schatz@oracle.com>
parents: 10546
diff changeset
802 }
7f186f1486f7 Use initializing write node in object clone snippets.
Roland Schatz <roland.schatz@oracle.com>
parents: 10546
diff changeset
803
7f186f1486f7 Use initializing write node in object clone snippets.
Roland Schatz <roland.schatz@oracle.com>
parents: 10546
diff changeset
804 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
805 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
806 public native void writeObject(WordBase offset, Object val, LocationIdentity locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
807
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
808 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
809 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
810 public void writeByte(int offset, byte val, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
811 writeByte(signed(offset), val, locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
812 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
813
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
814 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
815 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
816 public void writeChar(int offset, char val, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
817 writeChar(signed(offset), val, locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
818 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
819
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
820 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
821 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
822 public void writeShort(int offset, short val, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
823 writeShort(signed(offset), val, locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
824 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
825
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
826 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
827 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
828 public void writeInt(int offset, int val, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
829 writeInt(signed(offset), val, locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
830 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
831
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
832 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
833 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
834 public void writeLong(int offset, long val, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
835 writeLong(signed(offset), val, locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
836 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
837
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
838 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
839 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
840 public void writeFloat(int offset, float val, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
841 writeFloat(signed(offset), val, locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
842 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
843
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
844 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
845 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
846 public void writeDouble(int offset, double val, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
847 writeDouble(signed(offset), val, locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
848 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
849
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
850 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
851 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
852 public void writeWord(int offset, WordBase val, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
853 writeWord(signed(offset), val, locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
854 }
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
855
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
856 @Override
10759
7f186f1486f7 Use initializing write node in object clone snippets.
Roland Schatz <roland.schatz@oracle.com>
parents: 10546
diff changeset
857 @Operation(opcode = Opcode.INITIALIZE)
14101
2ec05c3f773b fix overzeroing of new storage, refactor zeroing and unroll zeroing of small arrays
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 13504
diff changeset
858 public void initializeLong(int offset, long val, LocationIdentity locationIdentity) {
2ec05c3f773b fix overzeroing of new storage, refactor zeroing and unroll zeroing of small arrays
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 13504
diff changeset
859 initializeLong(signed(offset), val, locationIdentity);
10759
7f186f1486f7 Use initializing write node in object clone snippets.
Roland Schatz <roland.schatz@oracle.com>
parents: 10546
diff changeset
860 }
7f186f1486f7 Use initializing write node in object clone snippets.
Roland Schatz <roland.schatz@oracle.com>
parents: 10546
diff changeset
861
7f186f1486f7 Use initializing write node in object clone snippets.
Roland Schatz <roland.schatz@oracle.com>
parents: 10546
diff changeset
862 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
863 @Operation(opcode = Opcode.WRITE_POINTER)
9526
ae5cd887e67c Use a LocationIdentity interface instead of just Object for the location identity of a LocationNode
Christian Wimmer <christian.wimmer@oracle.com>
parents: 8522
diff changeset
864 public void writeObject(int offset, Object val, LocationIdentity locationIdentity) {
7868
7a5bbcc36bb2 add location identity to Pointer read and write operations
Lukas Stadler <lukas.stadler@jku.at>
parents: 7710
diff changeset
865 writeObject(signed(offset), val, locationIdentity);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
866 }
7701
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
867
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
868 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
869 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
870 public byte readByte(WordBase offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
871 return unsafe.getByte(add((Word) offset).unbox());
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
872 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
873
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
874 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
875 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
876 public char readChar(WordBase offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
877 return unsafe.getChar(add((Word) offset).unbox());
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
878 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
879
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
880 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
881 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
882 public short readShort(WordBase offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
883 return unsafe.getShort(add((Word) offset).unbox());
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
884 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
885
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
886 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
887 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
888 public int readInt(WordBase offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
889 return unsafe.getInt(add((Word) offset).unbox());
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
890 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
891
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
892 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
893 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
894 public long readLong(WordBase offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
895 return unsafe.getLong(add((Word) offset).unbox());
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
896 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
897
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
898 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
899 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
900 public float readFloat(WordBase offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
901 return unsafe.getFloat(add((Word) offset).unbox());
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
902 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
903
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
904 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
905 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
906 public double readDouble(WordBase offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
907 return unsafe.getDouble(add((Word) offset).unbox());
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
908 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
909
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
910 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
911 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
912 public Word readWord(WordBase offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
913 return box(unsafe.getAddress(add((Word) offset).unbox()));
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
914 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
915
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
916 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
917 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
918 public native Object readObject(WordBase offset);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
919
10800
69e305a5cf09 Introduce new read opcode that allows compressed oops and read barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 10759
diff changeset
920 @Operation(opcode = Opcode.READ_HEAP)
14945
b14cb2d9253d Make compression and uncompression explicit in the high level graph.
Roland Schatz <roland.schatz@oracle.com>
parents: 14101
diff changeset
921 public native Object readObject(WordBase offset, BarrierType barrierType);
10546
a6d6e6afd897 Introduce ReadCompressed opcode in WordTypeRewriter
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 9792
diff changeset
922
a6d6e6afd897 Introduce ReadCompressed opcode in WordTypeRewriter
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 9792
diff changeset
923 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
924 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
925 public byte readByte(int offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
926 return readByte(signed(offset));
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
927 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
928
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
929 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
930 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
931 public char readChar(int offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
932 return readChar(signed(offset));
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
933 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
934
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
935 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
936 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
937 public short readShort(int offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
938 return readShort(signed(offset));
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
939 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
940
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
941 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
942 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
943 public int readInt(int offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
944 return readInt(signed(offset));
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
945 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
946
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
947 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
948 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
949 public long readLong(int offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
950 return readLong(signed(offset));
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
951 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
952
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
953 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
954 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
955 public float readFloat(int offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
956 return readFloat(signed(offset));
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
957 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
958
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
959 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
960 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
961 public double readDouble(int offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
962 return readDouble(signed(offset));
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
963 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
964
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
965 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
966 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
967 public Word readWord(int offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
968 return readWord(signed(offset));
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
969 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
970
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
971 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
972 @Operation(opcode = Opcode.READ_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
973 public Object readObject(int offset) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
974 return readObject(signed(offset));
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
975 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
976
10800
69e305a5cf09 Introduce new read opcode that allows compressed oops and read barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 10759
diff changeset
977 @Operation(opcode = Opcode.READ_HEAP)
14945
b14cb2d9253d Make compression and uncompression explicit in the high level graph.
Roland Schatz <roland.schatz@oracle.com>
parents: 14101
diff changeset
978 public Object readObject(int offset, BarrierType barrierType) {
b14cb2d9253d Make compression and uncompression explicit in the high level graph.
Roland Schatz <roland.schatz@oracle.com>
parents: 14101
diff changeset
979 return readObject(signed(offset), barrierType);
10546
a6d6e6afd897 Introduce ReadCompressed opcode in WordTypeRewriter
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 9792
diff changeset
980 }
a6d6e6afd897 Introduce ReadCompressed opcode in WordTypeRewriter
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 9792
diff changeset
981
a6d6e6afd897 Introduce ReadCompressed opcode in WordTypeRewriter
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 9792
diff changeset
982 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
983 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
984 public void writeByte(WordBase offset, byte val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
985 unsafe.putByte(add((Word) offset).unbox(), val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
986 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
987
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
988 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
989 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
990 public void writeChar(WordBase offset, char val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
991 unsafe.putChar(add((Word) offset).unbox(), val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
992 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
993
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
994 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
995 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
996 public void writeShort(WordBase offset, short val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
997 unsafe.putShort(add((Word) offset).unbox(), val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
998 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
999
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1000 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
1001 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1002 public void writeInt(WordBase offset, int val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1003 unsafe.putInt(add((Word) offset).unbox(), val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1004 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1005
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1006 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
1007 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1008 public void writeLong(WordBase offset, long val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1009 unsafe.putLong(add((Word) offset).unbox(), val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1010 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1011
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1012 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
1013 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1014 public void writeFloat(WordBase offset, float val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1015 unsafe.putFloat(add((Word) offset).unbox(), val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1016 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1017
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1018 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
1019 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1020 public void writeDouble(WordBase offset, double val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1021 unsafe.putDouble(add((Word) offset).unbox(), val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1022 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1023
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1024 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
1025 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1026 public void writeWord(WordBase offset, WordBase val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1027 unsafe.putAddress(add((Word) offset).unbox(), ((Word) val).unbox());
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1028 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1029
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1030 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
1031 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1032 public native void writeObject(WordBase offset, Object val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1033
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1034 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
1035 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1036 public void writeByte(int offset, byte val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1037 writeByte(signed(offset), val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1038 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1039
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1040 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
1041 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1042 public void writeChar(int offset, char val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1043 writeChar(signed(offset), val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1044 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1045
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1046 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
1047 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1048 public void writeShort(int offset, short val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1049 writeShort(signed(offset), val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1050 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1051
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1052 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
1053 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1054 public void writeInt(int offset, int val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1055 writeInt(signed(offset), val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1056 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1057
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1058 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
1059 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1060 public void writeLong(int offset, long val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1061 writeLong(signed(offset), val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1062 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1063
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1064 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
1065 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1066 public void writeFloat(int offset, float val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1067 writeFloat(signed(offset), val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1068 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1069
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1070 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
1071 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1072 public void writeDouble(int offset, double val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1073 writeDouble(signed(offset), val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1074 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1075
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1076 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
1077 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1078 public void writeWord(int offset, WordBase val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1079 writeWord(signed(offset), val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1080 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1081
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1082 @Override
15836
faebb143dab2 Introduce class BarrieredAccess for low-level object access with read and write barriers
Christian Wimmer <christian.wimmer@oracle.com>
parents: 15291
diff changeset
1083 @Operation(opcode = Opcode.WRITE_POINTER)
7904
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1084 public void writeObject(int offset, Object val) {
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1085 writeObject(signed(offset), val);
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1086 }
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1087
c8f2002d2194 reintroduce default Word read/write operations, more tests
Lukas Stadler <lukas.stadler@jku.at>
parents: 7903
diff changeset
1088 @Override
7701
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
1089 public final boolean equals(Object obj) {
21543
93c50cefb9e8 moved GraalInternalError to com.oracle.jvmci.common and renamed it to JVMCIError (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21541
diff changeset
1090 throw JVMCIError.shouldNotReachHere("equals must not be called on words");
7701
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
1091 }
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
1092
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
1093 @Override
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
1094 public final int hashCode() {
21543
93c50cefb9e8 moved GraalInternalError to com.oracle.jvmci.common and renamed it to JVMCIError (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21541
diff changeset
1095 throw JVMCIError.shouldNotReachHere("hashCode must not be called on words");
7701
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
1096 }
7710
09dd65d5e474 Implement toString() for Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7701
diff changeset
1097
09dd65d5e474 Implement toString() for Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7701
diff changeset
1098 @Override
09dd65d5e474 Implement toString() for Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7701
diff changeset
1099 public String toString() {
21543
93c50cefb9e8 moved GraalInternalError to com.oracle.jvmci.common and renamed it to JVMCIError (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21541
diff changeset
1100 throw JVMCIError.shouldNotReachHere("toString must not be called on words");
7710
09dd65d5e474 Implement toString() for Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7701
diff changeset
1101 }
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1102 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1103
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1104 final class HostedWord extends Word {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
1105
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1106 private static final int SMALL_FROM = -1;
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1107 private static final int SMALL_TO = 100;
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1108
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1109 private static final HostedWord[] smallCache = new HostedWord[SMALL_TO - SMALL_FROM + 1];
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1110
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1111 static {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1112 for (int i = SMALL_FROM; i <= SMALL_TO; i++) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1113 smallCache[i - SMALL_FROM] = new HostedWord(i);
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1114 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1115 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1116
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1117 private final long rawValue;
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1118
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1119 private HostedWord(long rawValue) {
7530
5e3d1a68664e applied mx eclipseformat to all Java files
Doug Simon <doug.simon@oracle.com>
parents: 7521
diff changeset
1120 this.rawValue = rawValue;
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1121 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1122
8472
f71fec3fadae made method substitutions for Thread be interpretable
Doug Simon <doug.simon@oracle.com>
parents: 8451
diff changeset
1123 protected static Word boxLong(long val) {
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1124 if (val >= SMALL_FROM && val <= SMALL_TO) {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1125 return smallCache[(int) val - SMALL_FROM];
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1126 }
7701
47467b2c3fc5 Use equal() and notEqual() instead of == and != to compare words
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7530
diff changeset
1127 return new HostedWord(val);
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1128 }
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1129
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1130 @Override
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1131 protected long unbox() {
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1132 return rawValue;
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1133 }
7710
09dd65d5e474 Implement toString() for Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7701
diff changeset
1134
09dd65d5e474 Implement toString() for Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7701
diff changeset
1135 @Override
09dd65d5e474 Implement toString() for Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7701
diff changeset
1136 public String toString() {
09dd65d5e474 Implement toString() for Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7701
diff changeset
1137 return "Word<" + rawValue + ">";
09dd65d5e474 Implement toString() for Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents: 7701
diff changeset
1138 }
7300
2912b72d840a More complete and reusable Word type
Christian Wimmer <christian.wimmer@oracle.com>
parents:
diff changeset
1139 }