diff --git a/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java b/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java
index 4be6153..3690d82 100644
--- a/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java
+++ b/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java
@@ -242,6 +242,9 @@
     this.compiler = compiler;
     this.typeOracle = typeOracle;
 
+    // Assertions are always on in hosted mode.
+    setDefaultAssertionStatus(true);
+
     // SPECIAL MAGIC: Prevents the compile process from ever trying to compile
     // these guys from source, which is what we want, since they are special and
     // neither of them would compile correctly from source.
diff --git a/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java b/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java
index 3c4cb8d..a65ab18 100644
--- a/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java
+++ b/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java
@@ -32,8 +32,6 @@
 
   private static ThreadLocal<Throwable> sCaughtJavaExceptionObject = new ThreadLocal<Throwable>();
 
-  private static ThreadLocal<Throwable> sLastThrownJavaException = new ThreadLocal<Throwable>();
-
   private static ThreadLocal<Throwable> sThrownJavaExceptionObject = new ThreadLocal<Throwable>();
 
   /**
@@ -42,12 +40,6 @@
   private static ThreadLocal<TreeLogger> threadLocalLogger = new ThreadLocal<TreeLogger>();
 
   public static void setThrownJavaException(Throwable t) {
-    Throwable was = sLastThrownJavaException.get();
-    if (was != t) {
-      // avoid logging the same exception twice
-      getLogger().log(TreeLogger.WARN, "Exception thrown into JavaScript", t);
-      sLastThrownJavaException.set(t);
-    }
     sThrownJavaExceptionObject.set(t);
   }
 
@@ -138,9 +130,6 @@
     //
     clearJavaScriptHost();
 
-    // Clear out the exception field, it may be holding a user-space object
-    sLastThrownJavaException.set(null);
-
     // Clear out the class loader's cache
     host.getClassLoader().clear();
   }
@@ -400,6 +389,7 @@
     }
   }
 
+  @SuppressWarnings("unchecked")
   public Object rebindAndCreate(String requestedClassName)
       throws UnableToCompleteException {
     Throwable caught = null;
@@ -514,6 +504,7 @@
     throw thrown;
   }
 
+  @SuppressWarnings("unused")
   protected boolean isExceptionSame(Throwable original, int number,
       String name, String message) {
     // For most platforms, the null exception means we threw it.
diff --git a/dev/windows/src/com/google/gwt/dev/shell/ie/IDispatchImpl.java b/dev/windows/src/com/google/gwt/dev/shell/ie/IDispatchImpl.java
index a0dae86..09103b1 100644
--- a/dev/windows/src/com/google/gwt/dev/shell/ie/IDispatchImpl.java
+++ b/dev/windows/src/com/google/gwt/dev/shell/ie/IDispatchImpl.java
@@ -261,6 +261,7 @@
   }
 
   // CHECKSTYLE_OFF
+  @SuppressWarnings("unused")
   private final int GetIDsOfNames(int riid, int rgszNames, int cNames,
       int lcid, int rgDispId) {
 
@@ -288,6 +289,7 @@
     return COM.S_OK;
   }
 
+  @SuppressWarnings("unused")
   private int Invoke(int dispIdMember, int riid, int lcid, int dwFlags,
       int pDispParams, int pVarResult, int pExcepInfo, int pArgErr) {
 
diff --git a/user/test/com/google/gwt/dev/jjs/test/CoverageTest.java b/user/test/com/google/gwt/dev/jjs/test/CoverageTest.java
index 7e14d64..a975fc4 100644
--- a/user/test/com/google/gwt/dev/jjs/test/CoverageTest.java
+++ b/user/test/com/google/gwt/dev/jjs/test/CoverageTest.java
@@ -22,6 +22,7 @@
  * possible in the Java to JavaScript compiler. This test is not at all intended
  * to execute correctly.
  */
+@SuppressWarnings("hiding")
 public class CoverageTest extends CoverageBase {
 
   /**
@@ -70,6 +71,7 @@
       };
 
       class NamedLocal extends Inner {
+        @SuppressWarnings("unused")
         public void foo() {
           CoverageTest.this.getNext();
           Inner.this.bar();
@@ -80,6 +82,7 @@
         // JDT bug? This works in 5.0 but not in 1.4
         // TODO: will javac compile it?
         class NamedLocalSub extends NamedLocal {
+          @SuppressWarnings("unused")
           public void foo() {
             Inner.this.bar();
             NamedLocal.this.foo();
@@ -151,8 +154,7 @@
     private void testAssertStatement() {
       // AssertStatement
 
-      // Only test asserts if they're enabled
-      if (! CoverageTest.class.desiredAssertionStatus()) {
+      if (!CoverageTest.class.desiredAssertionStatus()) {
         return;
       }
 
@@ -270,18 +272,28 @@
         ++x;
         inner : while (z) {
           ++i;
-          if (i == 1)
+          if (i == 1) {
             continue;
-          if (i == 2)
+          }
+          if (i == 2) {
+            continue inner;
+          }
+          if (i == 3) {
             continue outer;
-          if (i == 3)
+          }
+          if (i == 4) {
             break;
-          if (i == 4)
+          }
+          if (i == 5) {
+            break inner;
+          }
+          if (i == 6) {
             break outer;
+          }
         }
       }
-      assertEquals(4, i);
-      assertEquals(3, x);
+      assertEquals(6, i);
+      assertEquals(4, x);
     }
 
     private void testCaseSwitchStatement() {
@@ -302,6 +314,7 @@
       assertEquals(15, i);
     }
 
+    @SuppressWarnings("cast")
     private void testCastExpression() {
       // CastExpression
       o = (Super) o;
@@ -361,9 +374,9 @@
       // DoStatement
       i = 3;
       z = false;
-      do
+      do {
         i += j;
-      while (z);
+      } while (z);
       assertEquals(5, i);
     }
 
@@ -392,8 +405,9 @@
     private void testForStatement() {
       // ForStatement
       i = 0;
-      for (int q = 0, v = 4; q < v; ++q)
+      for (int q = 0, v = 4; q < v; ++q) {
         i += q;
+      }
       assertEquals(6, i);
       for (i = 0; i < 4; ++i) {
       }
@@ -403,16 +417,19 @@
     private void testIfStatement() {
       // IfStatement
       z = false;
-      if (z)
+      if (z) {
         fail();
-      if (z)
+      }
+      if (z) {
         fail();
-      else
+      } else {
         assertFalse(z);
-      if (!z)
+      }
+      if (!z) {
         assertFalse(z);
-      else
+      } else {
         fail();
+      }
     }
 
     private void testInstanceOfExpression() {
@@ -484,7 +501,6 @@
 
     private void testQualifiedNameReference() {
       // QualifiedNameReference
-      // TODO: fields????
       CoverageTest m = new CoverageTest();
       ia = new int[2];
       assertEquals("1", 2, ia.length);
@@ -561,8 +577,9 @@
     private void testReturnStatement() {
       // ReturnStatement
       assertEquals("foo", doReturnFoo());
-      if (true)
+      if (true) {
         return;
+      }
       fail();
     }
 
@@ -613,9 +630,6 @@
     private void testWhileStatement() {
       // WhileStatement
       z = false;
-      while (z)
-        fail();
-
       while (z) {
         fail();
       }
@@ -735,8 +749,9 @@
   }
 
   private static String doReturnFoo() {
-    if (true)
+    if (true) {
       return "foo";
+    }
     fail();
     return "bar";
   }
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 7472d5e..bac67d4 100644
--- a/user/test/com/google/gwt/dev/jjs/test/HostedTest.java
+++ b/user/test/com/google/gwt/dev/jjs/test/HostedTest.java
@@ -194,6 +194,12 @@
     assertEquals(Integer.MIN_VALUE, passThroughInt(Integer.MIN_VALUE));
   }
 
+  public void testAssertionsAlwaysOn() {
+    if (!GWT.isScript()) {
+      assertTrue(HostedTest.class.desiredAssertionStatus());
+    }
+  }
+  
   /*
    * Test that returning JavaScript boxed primitives works as expected. Note
    * that Boolean and Number cannot be supported properly in web mode, so we do
@@ -558,9 +564,12 @@
   private native void jsniL()/*-{}-*/;
 
   // test that JS can pass a series of arguments to a varargs function
-  private native String[] varargsFromJS1() /*-{
-    return this.@com.google.gwt.dev.jjs.test.HostedTest::varargsPassthrough([Ljava/lang/String;)("foo", "bar");
-  }-*/;
+  // TODO: not sure if we want to support this
+  // private native String[] varargsFromJS1() /*-{
+  // return
+  // this.@com.google.gwt.dev.jjs.test.HostedTest::varargsPassthrough([Ljava/lang/String;)("foo",
+  // "bar");
+  // }-*/;
 
   // test that JS can pass a Java-created array to a varargs function
   private native String[] varargsFromJS2(String[] arr) /*-{
