From 270ee677750a1f2adaf24b5816857194e61782ff Mon Sep 17 00:00:00 2001 From: Davies Liu Date: Tue, 18 Aug 2015 20:39:59 -0700 Subject: [SPARK-10095] [SQL] use public API of BigInteger In UnsafeRow, we use the private field of BigInteger for better performance, but it actually didn't contribute much (3% in one benchmark) to end-to-end runtime, and make it not portable (may fail on other JVM implementations). So we should use the public API instead. cc rxin Author: Davies Liu Closes #8286 from davies/portable_decimal. --- .../main/java/org/apache/spark/unsafe/Platform.java | 18 ------------------ 1 file changed, 18 deletions(-) (limited to 'unsafe') diff --git a/unsafe/src/main/java/org/apache/spark/unsafe/Platform.java b/unsafe/src/main/java/org/apache/spark/unsafe/Platform.java index 18343efdc3..1c16da9829 100644 --- a/unsafe/src/main/java/org/apache/spark/unsafe/Platform.java +++ b/unsafe/src/main/java/org/apache/spark/unsafe/Platform.java @@ -18,7 +18,6 @@ package org.apache.spark.unsafe; import java.lang.reflect.Field; -import java.math.BigInteger; import sun.misc.Unsafe; @@ -34,10 +33,6 @@ public final class Platform { public static final int DOUBLE_ARRAY_OFFSET; - // Support for resetting final fields while deserializing - public static final long BIG_INTEGER_SIGNUM_OFFSET; - public static final long BIG_INTEGER_MAG_OFFSET; - public static int getInt(Object object, long offset) { return _UNSAFE.getInt(object, offset); } @@ -150,24 +145,11 @@ public final class Platform { INT_ARRAY_OFFSET = _UNSAFE.arrayBaseOffset(int[].class); LONG_ARRAY_OFFSET = _UNSAFE.arrayBaseOffset(long[].class); DOUBLE_ARRAY_OFFSET = _UNSAFE.arrayBaseOffset(double[].class); - - long signumOffset = 0; - long magOffset = 0; - try { - signumOffset = _UNSAFE.objectFieldOffset(BigInteger.class.getDeclaredField("signum")); - magOffset = _UNSAFE.objectFieldOffset(BigInteger.class.getDeclaredField("mag")); - } catch (Exception ex) { - // should not happen - } - BIG_INTEGER_SIGNUM_OFFSET = signumOffset; - BIG_INTEGER_MAG_OFFSET = magOffset; } else { BYTE_ARRAY_OFFSET = 0; INT_ARRAY_OFFSET = 0; LONG_ARRAY_OFFSET = 0; DOUBLE_ARRAY_OFFSET = 0; - BIG_INTEGER_SIGNUM_OFFSET = 0; - BIG_INTEGER_MAG_OFFSET = 0; } } } -- cgit v1.2.3