< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.word/src/org/graalvm/compiler/word/Word.java

Print this page




   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 
  25 package org.graalvm.compiler.word;
  26 
  27 import static org.graalvm.compiler.word.UnsafeAccess.UNSAFE;
  28 
  29 import java.lang.annotation.ElementType;
  30 import java.lang.annotation.Retention;
  31 import java.lang.annotation.RetentionPolicy;
  32 import java.lang.annotation.Target;
  33 
  34 import org.graalvm.compiler.core.common.calc.Condition;
  35 import org.graalvm.compiler.core.common.calc.UnsignedMath;
  36 import org.graalvm.compiler.debug.GraalError;
  37 import org.graalvm.compiler.nodes.ValueNode;
  38 import org.graalvm.compiler.nodes.calc.AddNode;
  39 import org.graalvm.compiler.nodes.calc.AndNode;
  40 import org.graalvm.compiler.nodes.calc.LeftShiftNode;
  41 import org.graalvm.compiler.nodes.calc.MulNode;
  42 import org.graalvm.compiler.nodes.calc.OrNode;
  43 import org.graalvm.compiler.nodes.calc.RightShiftNode;
  44 import org.graalvm.compiler.nodes.calc.SignedDivNode;
  45 import org.graalvm.compiler.nodes.calc.SignedRemNode;
  46 import org.graalvm.compiler.nodes.calc.SubNode;
  47 import org.graalvm.compiler.nodes.calc.UnsignedDivNode;
  48 import org.graalvm.compiler.nodes.calc.UnsignedRemNode;
  49 import org.graalvm.compiler.nodes.calc.UnsignedRightShiftNode;
  50 import org.graalvm.compiler.nodes.calc.XorNode;
  51 import org.graalvm.compiler.nodes.memory.HeapAccess.BarrierType;
  52 import org.graalvm.compiler.nodes.memory.address.AddressNode.Address;
  53 import jdk.internal.vm.compiler.word.ComparableWord;
  54 import jdk.internal.vm.compiler.word.LocationIdentity;
  55 import jdk.internal.vm.compiler.word.Pointer;
  56 import jdk.internal.vm.compiler.word.SignedWord;
  57 import jdk.internal.vm.compiler.word.UnsignedWord;
  58 import jdk.internal.vm.compiler.word.WordBase;
  59 import jdk.internal.vm.compiler.word.WordFactory;
  60 import jdk.internal.vm.compiler.word.impl.WordBoxFactory;
  61 


  62 public abstract class Word implements SignedWord, UnsignedWord, Pointer {


  63 
  64     static {
  65         BoxFactoryImpl.initialize();
  66     }
  67 
  68     public static void ensureInitialized() {
  69         /* Calling this method ensures that the static initializer has been executed. */
  70     }
  71 
  72     /**
  73      * Links a method to a canonical operation represented by an {@link Opcode} val.
  74      */
  75     @Retention(RetentionPolicy.RUNTIME)
  76     @Target(ElementType.METHOD)
  77     public @interface Operation {
  78 
  79         Class<? extends ValueNode> node() default ValueNode.class;
  80 
  81         boolean rightOperandIsInt() default false;
  82 




   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 
  25 package org.graalvm.compiler.word;
  26 
  27 import static org.graalvm.compiler.serviceprovider.GraalUnsafeAccess.getUnsafe;
  28 
  29 import java.lang.annotation.ElementType;
  30 import java.lang.annotation.Retention;
  31 import java.lang.annotation.RetentionPolicy;
  32 import java.lang.annotation.Target;
  33 
  34 import org.graalvm.compiler.core.common.calc.Condition;
  35 import org.graalvm.compiler.core.common.calc.UnsignedMath;
  36 import org.graalvm.compiler.debug.GraalError;
  37 import org.graalvm.compiler.nodes.ValueNode;
  38 import org.graalvm.compiler.nodes.calc.AddNode;
  39 import org.graalvm.compiler.nodes.calc.AndNode;
  40 import org.graalvm.compiler.nodes.calc.LeftShiftNode;
  41 import org.graalvm.compiler.nodes.calc.MulNode;
  42 import org.graalvm.compiler.nodes.calc.OrNode;
  43 import org.graalvm.compiler.nodes.calc.RightShiftNode;
  44 import org.graalvm.compiler.nodes.calc.SignedDivNode;
  45 import org.graalvm.compiler.nodes.calc.SignedRemNode;
  46 import org.graalvm.compiler.nodes.calc.SubNode;
  47 import org.graalvm.compiler.nodes.calc.UnsignedDivNode;
  48 import org.graalvm.compiler.nodes.calc.UnsignedRemNode;
  49 import org.graalvm.compiler.nodes.calc.UnsignedRightShiftNode;
  50 import org.graalvm.compiler.nodes.calc.XorNode;
  51 import org.graalvm.compiler.nodes.memory.HeapAccess.BarrierType;
  52 import org.graalvm.compiler.nodes.memory.address.AddressNode.Address;
  53 import jdk.internal.vm.compiler.word.ComparableWord;
  54 import jdk.internal.vm.compiler.word.LocationIdentity;
  55 import jdk.internal.vm.compiler.word.Pointer;
  56 import jdk.internal.vm.compiler.word.SignedWord;
  57 import jdk.internal.vm.compiler.word.UnsignedWord;
  58 import jdk.internal.vm.compiler.word.WordBase;
  59 import jdk.internal.vm.compiler.word.WordFactory;
  60 import jdk.internal.vm.compiler.word.impl.WordBoxFactory;
  61 
  62 import sun.misc.Unsafe;
  63 
  64 public abstract class Word implements SignedWord, UnsignedWord, Pointer {
  65 
  66     private static final Unsafe UNSAFE = getUnsafe();
  67 
  68     static {
  69         BoxFactoryImpl.initialize();
  70     }
  71 
  72     public static void ensureInitialized() {
  73         /* Calling this method ensures that the static initializer has been executed. */
  74     }
  75 
  76     /**
  77      * Links a method to a canonical operation represented by an {@link Opcode} val.
  78      */
  79     @Retention(RetentionPolicy.RUNTIME)
  80     @Target(ElementType.METHOD)
  81     public @interface Operation {
  82 
  83         Class<? extends ValueNode> node() default ValueNode.class;
  84 
  85         boolean rightOperandIsInt() default false;
  86 


< prev index next >