From fcd825b965e9aa1b7593ac3058fb6f01683aad15 Mon Sep 17 00:00:00 2001 From: Tomas Stupka <tomas.stupka@oracle.com> Date: Tue, 20 Dec 2016 18:39:56 +0100 Subject: [PATCH] placed the org.tukaani.xz.check.CRC64 call behind a TruffleBoundary --- .../oracle/truffle/r/nodes/builtin/base/CRC64.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/CRC64.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/CRC64.java index f3ec23c073..c4a29770e6 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/CRC64.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/CRC64.java @@ -22,6 +22,7 @@ */ package com.oracle.truffle.r.nodes.builtin.base; +import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; import static com.oracle.truffle.r.runtime.builtins.RBehavior.PURE; import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.INTERNAL; @@ -48,9 +49,7 @@ public abstract class CRC64 extends RBuiltinNode { protected RAbstractStringVector crc64(RAbstractStringVector x) { final String string = x.getDataAt(0); byte[] bytes = string.getBytes(); - org.tukaani.xz.check.CRC64 crc = new org.tukaani.xz.check.CRC64(); - crc.update(bytes); - bytes = crc.finish(); + bytes = crc64(bytes); long l = 0; for (int i = 0; i < bytes.length; i++) { l += ((long) bytes[i] & 0xffL) << (8 * i); @@ -58,4 +57,11 @@ public abstract class CRC64 extends RBuiltinNode { return RDataFactory.createStringVector(Long.toHexString(l)); } + @TruffleBoundary + private byte[] crc64(byte[] bytes) { + org.tukaani.xz.check.CRC64 crc = new org.tukaani.xz.check.CRC64(); + crc.update(bytes); + return crc.finish(); + } + } -- GitLab