diff --git a/ci.hocon b/ci.hocon
index e6b407317c9624e7d12100d12e6f5b4df3089845..85e43c748f42d467675ac88e07d42a6c325064ac 100644
--- a/ci.hocon
+++ b/ci.hocon
@@ -1,6 +1,6 @@
 java7 : {name : oraclejdk, version : "7",    platformspecific: true}
 #java8 : {name : oraclejdk, version : "8u66", platformspecific: true}
-java8 : {name : labsjdk, version : "8u92-jvmci-0.11", platformspecific: true}
+java8 : {name : labsjdk, version : "8u92-jvmci-0.14", platformspecific: true}
 
 common : {
   packages : {
diff --git a/mx.fastr/mx_fastr.py b/mx.fastr/mx_fastr.py
index 8680af8cf272bef761faaeab19ebf681a2d9c6b0..2a039579b48a0327905a3458a47a58936fa0d39a 100644
--- a/mx.fastr/mx_fastr.py
+++ b/mx.fastr/mx_fastr.py
@@ -94,10 +94,33 @@ def do_run_r(args, command, extraVmArgs=None, jdk=None, **kwargs):
     if extraVmArgs:
         vmArgs += extraVmArgs
 
+    vmArgs = _sanitize_vmArgs(jdk, vmArgs)
     if command:
         vmArgs.append(_command_class_dict[command.lower()])
     return mx.run_java(vmArgs + args, jdk=jdk, **kwargs)
 
+def _sanitize_vmArgs(jdk, vmArgs):
+    '''
+    jdk dependent analysis of vmArgs to remove those that are not appropriate for the
+    chosen jdk. It is easier to allow clients to set anything they want and filter them
+    out here.
+    '''
+    jvmci_jdk = jdk.tag == 'jvmci'
+    jvmci_disabled = '-XX:-EnableJVMCI' in vmArgs
+
+    xargs = []
+    i = 0
+    while i < len(vmArgs):
+        vmArg = vmArgs[i]
+        if vmArg != '-XX:-EnableJVMCI':
+            if 'graal' in vmArg or 'JVMCI' in vmArg:
+                if not jvmci_jdk or jvmci_disabled:
+                    i = i + 1
+                    continue
+        xargs.append(vmArg)
+        i = i + 1
+    return xargs
+
 def _graal_options(nocompile=False):
     if _mx_graal:
         result = ['-Dgraal.InliningDepthError=500', '-Dgraal.EscapeAnalysisIterations=3', '-XX:JVMCINMethodSizeLimit=1000000']