From a73021ef5e499fb4fcae763e4eecc5fa6ac47774 Mon Sep 17 00:00:00 2001 From: Lukas Stadler <lukas.stadler@oracle.com> Date: Tue, 6 Jun 2017 13:46:05 +0200 Subject: [PATCH] optimized bit ops for GP bits --- .../com/oracle/truffle/r/runtime/data/RBaseObject.java | 8 ++++---- .../com/oracle/truffle/r/runtime/data/RTypedValue.java | 8 +++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RBaseObject.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RBaseObject.java index 20681ec6eb..52e181b7b4 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RBaseObject.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RBaseObject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2017, 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 @@ -48,16 +48,16 @@ abstract class RBaseObject implements RTypedValue { @Override public final boolean isS4() { - return (getGPBits() & S4_MASK) == S4_MASK; + return (getTypedValueInfo() & S4_MASK_SHIFTED) != 0; } @Override public final void setS4() { - setGPBits(getGPBits() | S4_MASK); + setTypedValueInfo(getTypedValueInfo() | S4_MASK_SHIFTED); } @Override public final void unsetS4() { - setGPBits(getGPBits() & ~S4_MASK); + setTypedValueInfo(getTypedValueInfo() & ~S4_MASK_SHIFTED); } } diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RTypedValue.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RTypedValue.java index 153949e45e..66a09ba041 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RTypedValue.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RTypedValue.java @@ -27,6 +27,8 @@ public interface RTypedValue extends RTruffleObject { int GP_BITS_MASK_SHIFT = 8; int GP_BITS_MASK = 0xFFFF << GP_BITS_MASK_SHIFT; + int S4_MASK_SHIFTED = 1 << (4 + GP_BITS_MASK_SHIFT); + RType getRType(); int getTypedValueInfo(); @@ -42,14 +44,14 @@ public interface RTypedValue extends RTruffleObject { } default boolean isS4() { - return (getGPBits() & S4_MASK) == S4_MASK; + return (getTypedValueInfo() & S4_MASK_SHIFTED) != 0; } default void setS4() { - setGPBits(getGPBits() | S4_MASK); + setTypedValueInfo(getTypedValueInfo() | S4_MASK_SHIFTED); } default void unsetS4() { - setGPBits(getGPBits() & ~S4_MASK); + setTypedValueInfo(getTypedValueInfo() & ~S4_MASK_SHIFTED); } } -- GitLab