diff options
author | sg215889 <[email protected]> | 2009-07-28 18:57:07 -0700 |
---|---|---|
committer | sg215889 <[email protected]> | 2009-07-28 18:57:07 -0700 |
commit | abea54842158e588112f6e35d1ba3c5f069dfc29 (patch) | |
tree | 6e311b8d655a0e04d3ad1c90cb06a67256863aaf /src/java/com/sun/gluegen/runtime/CPU.java | |
parent | f607cdf272dffbd45e6389c5715a9596e85c2a90 (diff) |
Fix: Native CPU 32/64 bit detection; Tested on CVM/J2SE
Diffstat (limited to 'src/java/com/sun/gluegen/runtime/CPU.java')
-rwxr-xr-x | src/java/com/sun/gluegen/runtime/CPU.java | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/src/java/com/sun/gluegen/runtime/CPU.java b/src/java/com/sun/gluegen/runtime/CPU.java index c7e6bc1..ee6c9f5 100755 --- a/src/java/com/sun/gluegen/runtime/CPU.java +++ b/src/java/com/sun/gluegen/runtime/CPU.java @@ -38,6 +38,7 @@ */ package com.sun.gluegen.runtime; +import java.security.*; /** Provides information to autogenerated struct accessors about what kind of data model (32- or 64-bit) is being used by the currently @@ -47,23 +48,16 @@ public class CPU { private static boolean is32Bit; static { + NativeLibrary.ensureNativeLibLoaded(); + boolean done=false; // Try to use Sun's sun.arch.data.model first .. - int bits = 0; - try { - String bitS = - (String) AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { - return System.getProperty("sun.arch.data.model"); - } - }); - if(null!=bitS && bitS.length()>0) { - bits = Integer.parseInt(bitS); - is32Bit = ( 32 == bits ); - done = true ; - } - } catch (NumberFormatException nfe) {} + int bits = getPointerSizeInBits(); + if ( 32 == bits || 64 == bits ) { + is32Bit = ( 32 == bits ); + done = true ; + } if(!done) { // We don't seem to need an AccessController.doPrivileged() block @@ -114,4 +108,7 @@ public class CPU { public static boolean is32Bit() { return is32Bit; } + + public static native int getPointerSizeInBits(); + } |