diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java
index d70afaf..cf1bd86 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java
@@ -42,6 +42,7 @@
   private final SourceLevel sourceLevel;
   private final boolean strictPublicResources;
   private final boolean strictSourceResources;
+  private final JsInteropMode jsInteropMode;
 
   CompilerOptionsImpl(CompileDir compileDir, String moduleName, Options options) {
     this.compileDir = compileDir;
@@ -52,6 +53,7 @@
     this.strictSourceResources = options.enforceStrictResources();
     this.strictPublicResources = options.enforceStrictResources();
     this.logLevel = options.getLogLevel();
+    this.jsInteropMode = options.getJsInteropMode();
   }
 
   @Override
@@ -96,7 +98,7 @@
 
   @Override
   public JsInteropMode getJsInteropMode() {
-    return JsInteropMode.NONE;
+    return jsInteropMode;
   }
 
   @Override
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
index 0680a12..6c58d5f 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
@@ -18,8 +18,11 @@
 
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.dev.ArgProcessorBase;
+import com.google.gwt.dev.util.arg.ArgHandlerJsInteropMode;
 import com.google.gwt.dev.util.arg.ArgHandlerLogLevel;
 import com.google.gwt.dev.util.arg.ArgHandlerSourceLevel;
+import com.google.gwt.dev.util.arg.JsInteropMode;
+import com.google.gwt.dev.util.arg.OptionJsInteropMode;
 import com.google.gwt.dev.util.arg.OptionLogLevel;
 import com.google.gwt.dev.util.arg.OptionSourceLevel;
 import com.google.gwt.dev.util.arg.SourceLevel;
@@ -47,7 +50,7 @@
   private boolean noPrecompile = false;
   private boolean isCompileTest = false;
   private File workDir;
-  private List<String> moduleNames = new ArrayList<String>();
+  private final List<String> moduleNames = new ArrayList<String>();
   private boolean allowMissingSourceDir = false;
   private final List<File> sourcePath = new ArrayList<File>();
   private String bindAddress = "127.0.0.1";
@@ -60,6 +63,7 @@
   private boolean failOnError = false;
   private boolean strictResources = false;
   private int compileTestRecompiles = 0;
+  private JsInteropMode jsInteropMode = JsInteropMode.NONE;
 
   /**
    * Sets each option to the appropriate value, based on command-line arguments.
@@ -210,6 +214,10 @@
     return failOnError;
   }
 
+  JsInteropMode getJsInteropMode() {
+    return jsInteropMode;
+  }
+
   private class ArgProcessor extends ArgProcessorBase {
 
     public ArgProcessor() {
@@ -248,6 +256,16 @@
           Options.this.logLevel = logLevel;
         }
       }));
+      registerHandler(new ArgHandlerJsInteropMode(new OptionJsInteropMode() {
+        @Override
+        public JsInteropMode getJsInteropMode() {
+          return Options.this.jsInteropMode;
+        }
+
+        @Override
+        public void setJsInteropMode(JsInteropMode mode) {
+          Options.this.jsInteropMode = mode;
+        }}));
     }
 
     @Override
