diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/NativeDataAccess.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/NativeDataAccess.java index a3b1d40cb2ec5ec23f5d3950da413313b3d49100..7bddf458f755527ef10cc2b606b752dd732bdae9 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/NativeDataAccess.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/NativeDataAccess.java @@ -126,7 +126,7 @@ public final class NativeDataAccess { private Object nativeWrapper; NativeMirror() { - this.id = counter.incrementAndGet(); + this.id = counter.addAndGet(2); } /** @@ -187,7 +187,9 @@ public final class NativeDataAccess { } } - private static final AtomicLong counter = new AtomicLong(0xdef000000000000L); + // The counter is initialized to invalid address and incremented by 2 to always get invalid + // address value + private static final AtomicLong counter = new AtomicLong(0xdef000000000001L); private static final ConcurrentHashMap<Long, WeakReference<RObject>> nativeMirrors = new ConcurrentHashMap<>(); private static final ConcurrentHashMap<Long, RuntimeException> nativeMirrorInfo = new ConcurrentHashMap<>();