aboutsummaryrefslogtreecommitdiff
path: root/unsafe
diff options
context:
space:
mode:
authorDavies Liu <davies@databricks.com>2015-08-18 20:39:59 -0700
committerDavies Liu <davies.liu@gmail.com>2015-08-18 20:39:59 -0700
commit270ee677750a1f2adaf24b5816857194e61782ff (patch)
treef2558ee6b72355c1d3e457bf08558037a8df6e6c /unsafe
parentbf32c1f7f47dd907d787469f979c5859e02ce5e6 (diff)
downloadspark-270ee677750a1f2adaf24b5816857194e61782ff.tar.gz
spark-270ee677750a1f2adaf24b5816857194e61782ff.tar.bz2
spark-270ee677750a1f2adaf24b5816857194e61782ff.zip
[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 <davies@databricks.com> Closes #8286 from davies/portable_decimal.
Diffstat (limited to 'unsafe')
-rw-r--r--unsafe/src/main/java/org/apache/spark/unsafe/Platform.java18
1 files changed, 0 insertions, 18 deletions
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;
}
}
}