From 67c19a60e7834da0bab7d56e6e938a785d24373d Mon Sep 17 00:00:00 2001 From: stepan <stepan.sindelar@oracle.com> Date: Wed, 7 Mar 2018 15:19:41 +0100 Subject: [PATCH] NativeMirror IDs are invalid addresses --- .../com/oracle/truffle/r/runtime/data/NativeDataAccess.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 a3b1d40cb2..7bddf458f7 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<>(); -- GitLab