diff --git a/jni/linux/JsRootedValue.h b/jni/linux/JsRootedValue.h
index 49df6ce..6f8a405 100644
--- a/jni/linux/JsRootedValue.h
+++ b/jni/linux/JsRootedValue.h
@@ -245,7 +245,13 @@
    * Returns false on failure.
    */
   bool setInt(int val) {
-    return setValue(INT_TO_JSVAL(val));
+    // check if it fits in 31 bits (ie top two bits are equal).
+    // if not, store it as a double
+    if ((val & 0x80000000) != ((val << 1) & 0x80000000)) {
+      return setDouble(val);
+    } else {
+      return setValue(INT_TO_JSVAL(val));
+    }
   }
   
   /*
diff --git a/jni/linux/prebuilt/libgwt-ll.so b/jni/linux/prebuilt/libgwt-ll.so
index 0842d03..87b842a 100755
--- a/jni/linux/prebuilt/libgwt-ll.so
+++ b/jni/linux/prebuilt/libgwt-ll.so
Binary files differ
diff --git a/user/test/com/google/gwt/dev/jjs/test/HostedTest.java b/user/test/com/google/gwt/dev/jjs/test/HostedTest.java
index 5deb0d1..bae732e 100644
--- a/user/test/com/google/gwt/dev/jjs/test/HostedTest.java
+++ b/user/test/com/google/gwt/dev/jjs/test/HostedTest.java
@@ -88,19 +88,23 @@
   private static native Object getStringAsObject() /*-{
     return "test";
   }-*/;
-  
+
   private static native void storeFloat(float f) /*-{
     myFloatValue = f;
   }-*/;
-  
+
   private static native float getFloat() /*-{
     return myFloatValue;
   }-*/;
-  
+
   private static native float getFloatString() /*-{
     return Number(myFloatValue.toString());
   }-*/;
 
+  private static native int passThroughInt(int val) /*-{
+    return val;
+  }-*/;
+
   private static native JavaScriptObject getsFooFunc() /*-{
     return @com.google.gwt.dev.jjs.test.HostedTest::sFoo(Ljava/lang/String;);
   }-*/;
@@ -148,7 +152,12 @@
     Object oout = getObject(oin);
     assertEquals(oin, oout);
   }
-  
+
+  public void test32BitInt() {
+    assertEquals(Integer.MAX_VALUE, passThroughInt(Integer.MAX_VALUE));
+    assertEquals(Integer.MIN_VALUE, passThroughInt(Integer.MIN_VALUE));
+  }
+
   public void testByteMarshalling() {
     byte b = 100;
     assertEquals(100, byteAsInt(b));
