The code in processCommandLineArguments in RunBootImage.c starts to pass all options to the VM as soon as it fails to recognize one option. That is, it refrains from trying to handle any other options. The problem is that we have got some non-standard (i.e. -X) options that are handled by Java code. The C code treats those as if they were application arguments. This causes the results of the parsing to depend on the order of the arguments:
will treat "-Xbootclasspath/a:doesnotexist" as application argument and print
will (correctly) print
This is confusing and makes it harder to run the VM.