annotate graal/com.oracle.graal.word/src/com/oracle/graal/word/Word.java @ 15116:0d296283e87d

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