diff --git a/mx.fastr/mx_fastr.py b/mx.fastr/mx_fastr.py
index 60d0a1471d3b12d6417078fb1863157356738638..87fb585ff9d6393e9e23c0fd6c4d8cc301f9f276 100644
--- a/mx.fastr/mx_fastr.py
+++ b/mx.fastr/mx_fastr.py
@@ -29,10 +29,10 @@ import os
 
 _fastr_suite = None
 
-def runR(args, className, nonZeroIsFatal=True, extraVmArgs=None, runBench=False, graalVM='server'):
+def runR(args, className, nonZeroIsFatal=True, extraVmArgs=None, runBench=False, graal_vm='server'):
     # extraVmArgs is not normally necessary as the global --J option can be used running R/RScript
     # However, the bench command invokes other Java VMs along the way, so it must use extraVmArgs
-    setREnvironment(graalVM)
+    setREnvironment(graal_vm)
     project = className.rpartition(".")[0]
     vmArgs = ['-cp', mx.classpath(project)]
     vmArgs = vmArgs + ["-Drhome.path=" + _fastr_suite.dir]
@@ -41,9 +41,9 @@ def runR(args, className, nonZeroIsFatal=True, extraVmArgs=None, runBench=False,
         vmArgs = vmArgs + ['-ea', '-esa']
     if extraVmArgs:
         vmArgs = vmArgs + extraVmArgs
-    return mx_graal.vm(vmArgs + [className] + args, vm=graalVM, nonZeroIsFatal=nonZeroIsFatal)
+    return mx_graal.vm(vmArgs + [className] + args, vm=graal_vm, nonZeroIsFatal=nonZeroIsFatal)
 
-def setREnvironment(graalVM):
+def setREnvironment(graal_vm):
     osname = platform.system()
     lib_base = join(_fastr_suite.dir, 'com.oracle.truffle.r.native', 'builtinlibs', 'lib')
     lib_value = lib_base
@@ -54,40 +54,28 @@ def setREnvironment(graalVM):
         lib_env = 'LD_LIBRARY_PATH'
     os.environ[lib_env] = lib_value
     # For R sub-processes we need to set the DEFAULT_VM environment variable
-    os.environ['DEFAULT_VM'] = graalVM
+    os.environ['DEFAULT_VM'] = graal_vm
 
-def _add_vm_arg(parser):
-    parser.add_argument('--graal-vm', action='store', dest='graalVM', metavar='<arg>', help='Graal VM', default='server')
-
-def _process_graalVM_arg(args):
+def _get_graal_vm():
     '''
-    Check for the --graal-vm argument and if it exists return it as fiust result else None.
-    Unfortunately we can't use ArgumentParser as that doesn't like other args with a leading '-' unless
-    a '--' separator is provide and we can't do that.
+    Check for the --vm global mx argument by checking mx.graal._vm.
     '''
-    graalVM = "server"
-    try:
-        vmIndex = args.index('--graal-vm')
-        graalVM = args[vmIndex + 1]
-        del args[vmIndex:vmIndex + 2]
-    except ValueError:
-        pass
-    return graalVM, args
+    return "server" if mx_graal._vm is None else mx_graal._vm
 
 def rshell(args, nonZeroIsFatal=True, extraVmArgs=None, runBench=False):
     '''run R shell'''
     # Optional args for external use by benchmarks
-    graalVM, args = _process_graalVM_arg(args)
-    runR(args, "com.oracle.truffle.r.shell.RCommand", nonZeroIsFatal=nonZeroIsFatal, extraVmArgs=extraVmArgs, runBench=False, graalVM=graalVM)
+    graal_vm = _get_graal_vm()
+    runR(args, "com.oracle.truffle.r.shell.RCommand", nonZeroIsFatal=nonZeroIsFatal, extraVmArgs=extraVmArgs, runBench=False, graal_vm=graal_vm)
 
 def rscript(args):
     '''run Rscript'''
-    graalVM, args = _process_graalVM_arg(args)
-    runR(args, "com.oracle.truffle.r.shell.RscriptCommand", graalVM=graalVM)
+    graal_vm = _get_graal_vm()
+    runR(args, "com.oracle.truffle.r.shell.RscriptCommand", graal_vm=graal_vm)
 
 def build(args):
     '''FastR build'''
-    graalVM, args = _process_graalVM_arg(args)
+    graal_vm = _get_graal_vm()
     # Overridden in case we ever want to do anything non-standard
     # workaround for Hotspot Mac OS X build problem
     osname = platform.system()
@@ -95,7 +83,7 @@ def build(args):
         os.environ['COMPILER_WARNINGS_FATAL'] = 'false'
         os.environ['USE_CLANG'] = 'true'
         os.environ['LFLAGS'] = '-Xlinker -lstdc++'
-    mx_graal.build(args, vm=graalVM) # this calls mx.build
+    mx_graal.build(args, vm=graal_vm) # this calls mx.build
 
 def findbugs(args):
     '''run FindBugs against non-test Java projects'''
@@ -236,14 +224,14 @@ def _junit_r_harness(args, vmArgs, junitArgs):
     # suppress Truffle compilation by using a high threshold
     vmArgs += ['-G:TruffleCompilationThreshold=100000']
 
-    setREnvironment(args.graalVM)
+    graal_vm = _get_graal_vm()
+    setREnvironment(graal_vm)
 
-    return mx_graal.vm(vmArgs + junitArgs, vm=args.graalVM, nonZeroIsFatal=False)
+    return mx_graal.vm(vmArgs + junitArgs, vm=graal_vm, nonZeroIsFatal=False)
 
 def junit(args):
     '''run R Junit tests'''
     parser = ArgumentParser(prog='r junit')
-    _add_vm_arg(parser)
     parser.add_argument('--gen-expected-output', action='store_true', help='generate/update expected test output file')
     parser.add_argument('--gen-expected-quiet', action='store_true', help='suppress output on new tests being added')
     parser.add_argument('--keep-trailing-whitespace', action='store_true', help='keep trailing whitespace in expected test output file')