aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/com/sun/gluegen/runtime/CPU.java
diff options
context:
space:
mode:
authorsg215889 <[email protected]>2009-07-28 18:57:07 -0700
committersg215889 <[email protected]>2009-07-28 18:57:07 -0700
commitabea54842158e588112f6e35d1ba3c5f069dfc29 (patch)
tree6e311b8d655a0e04d3ad1c90cb06a67256863aaf /src/java/com/sun/gluegen/runtime/CPU.java
parentf607cdf272dffbd45e6389c5715a9596e85c2a90 (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-xsrc/java/com/sun/gluegen/runtime/CPU.java25
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();
+
}