src/jdk.internal.vm.compiler/share/classes/org.graalvm.word/src/org/graalvm/word/WordFactory.java
branchepsilon-gc-branch
changeset 56489 016b77c3734a
parent 56473 63a5ea2cdd0d
parent 49900 770679787db5
child 56490 0d0e6b083a3f
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.word/src/org/graalvm/word/WordFactory.java	Mon Apr 23 12:53:43 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/*
- * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package org.graalvm.word;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-public abstract class WordFactory {
-
-    /**
-     * Links a method to a canonical operation represented by an {@link FactoryOpcode} val.
-     */
-    @Retention(RetentionPolicy.RUNTIME)
-    @Target(ElementType.METHOD)
-    protected @interface FactoryOperation {
-        FactoryOpcode opcode();
-    }
-
-    /**
-     * The canonical {@link FactoryOperation} represented by a method in a word type.
-     */
-    protected enum FactoryOpcode {
-        ZERO,
-        FROM_UNSIGNED,
-        FROM_SIGNED,
-    }
-
-    protected interface BoxFactory {
-        <T extends WordBase> T box(long val);
-    }
-
-    protected static BoxFactory boxFactory;
-
-    /**
-     * We allow subclassing, because only subclasses can access the protected inner classes that we
-     * use to mark the operations.
-     */
-    protected WordFactory() {
-    }
-
-    /**
-     * The constant 0, i.e., the word with no bits set. There is no difference between a signed and
-     * unsigned zero.
-     *
-     * @return the constant 0.
-     */
-    @FactoryOperation(opcode = FactoryOpcode.ZERO)
-    public static <T extends WordBase> T zero() {
-        return boxFactory.box(0L);
-    }
-
-    /**
-     * The null pointer, i.e., the pointer with no bits set. There is no difference to a signed or
-     * unsigned {@link #zero}.
-     *
-     * @return the null pointer.
-     */
-    @FactoryOperation(opcode = FactoryOpcode.ZERO)
-    public static <T extends PointerBase> T nullPointer() {
-        return boxFactory.box(0L);
-    }
-
-    /**
-     * Unsafe conversion from a Java long value to a Word. The parameter is treated as an unsigned
-     * 64-bit value (in contrast to the semantics of a Java long).
-     *
-     * @param val a 64 bit unsigned value
-     * @return the value cast to Word
-     */
-    @FactoryOperation(opcode = FactoryOpcode.FROM_UNSIGNED)
-    public static <T extends UnsignedWord> T unsigned(long val) {
-        return boxFactory.box(val);
-    }
-
-    /**
-     * Unsafe conversion from a Java long value to a {@link PointerBase pointer}. The parameter is
-     * treated as an unsigned 64-bit value (in contrast to the semantics of a Java long).
-     *
-     * @param val a 64 bit unsigned value
-     * @return the value cast to PointerBase
-     */
-    @FactoryOperation(opcode = FactoryOpcode.FROM_UNSIGNED)
-    public static <T extends PointerBase> T pointer(long val) {
-        return boxFactory.box(val);
-    }
-
-    /**
-     * Unsafe conversion from a Java int value to a Word. The parameter is treated as an unsigned
-     * 32-bit value (in contrast to the semantics of a Java int).
-     *
-     * @param val a 32 bit unsigned value
-     * @return the value cast to Word
-     */
-    @FactoryOperation(opcode = FactoryOpcode.FROM_UNSIGNED)
-    public static <T extends UnsignedWord> T unsigned(int val) {
-        return boxFactory.box(val & 0xffffffffL);
-    }
-
-    /**
-     * Unsafe conversion from a Java long value to a Word. The parameter is treated as a signed
-     * 64-bit value (unchanged semantics of a Java long).
-     *
-     * @param val a 64 bit signed value
-     * @return the value cast to Word
-     */
-    @FactoryOperation(opcode = FactoryOpcode.FROM_SIGNED)
-    public static <T extends SignedWord> T signed(long val) {
-        return boxFactory.box(val);
-    }
-
-    /**
-     * Unsafe conversion from a Java int value to a Word. The parameter is treated as a signed
-     * 32-bit value (unchanged semantics of a Java int).
-     *
-     * @param val a 32 bit signed value
-     * @return the value cast to Word
-     */
-    @FactoryOperation(opcode = FactoryOpcode.FROM_SIGNED)
-    public static <T extends SignedWord> T signed(int val) {
-        return boxFactory.box(val);
-    }
-}