The SunCommandLineLauncher has the following hard-coded as part of the
launch string:
-Xdebug -Xnoagent -Djava.compiler=NONE
The "-Djava.compiler=NONE" argument, for backward-compatibility reasons, is
treated by HotSpot (runtime/arguments.cpp) as a conversion to interpreted mode.
The result is that full-speed debugging (the most significant JPDA feature of
Merlin) is inadvertently disabled by the default and most common mechanism
of using JPDA.
The string "-Xnoagent -Djava.compiler=NONE" is an anachronism left over from
support of the Classic VM.
This problem was not caught during testing since the test harnesses explicitly
set these parameters (didn't use SunCommandLineLaucnher) to test all modes.
###@###.### 2001-10-18
I'm reopening this, because this fix has stopped to work in JDK 1.6. Was it intentional? This was originally fixed in merlin-rc1 and works fine till 1.5.
With JDK 1.5.0 I get mixed mode as expected after this fix:
java -Xdebug -Xnoagent -Djava.compiler=none -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=localhost:48336 -version
Listening for transport dt_socket at address: 48336
java version "1.5.0_08"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
Java HotSpot(TM) Server VM (build 1.5.0_08-b03, mixed mode)
But with JDK 1.6.0 I get interpreted mode:
/java -Xdebug -Xnoagent -Djava.compiler=none -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=localhost:48336 -version
Listening for transport dt_socket at address: 48336
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Server VM (build 1.6.0-b105, interpreted mode)
launch string:
-Xdebug -Xnoagent -Djava.compiler=NONE
The "-Djava.compiler=NONE" argument, for backward-compatibility reasons, is
treated by HotSpot (runtime/arguments.cpp) as a conversion to interpreted mode.
The result is that full-speed debugging (the most significant JPDA feature of
Merlin) is inadvertently disabled by the default and most common mechanism
of using JPDA.
The string "-Xnoagent -Djava.compiler=NONE" is an anachronism left over from
support of the Classic VM.
This problem was not caught during testing since the test harnesses explicitly
set these parameters (didn't use SunCommandLineLaucnher) to test all modes.
###@###.### 2001-10-18
I'm reopening this, because this fix has stopped to work in JDK 1.6. Was it intentional? This was originally fixed in merlin-rc1 and works fine till 1.5.
With JDK 1.5.0 I get mixed mode as expected after this fix:
java -Xdebug -Xnoagent -Djava.compiler=none -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=localhost:48336 -version
Listening for transport dt_socket at address: 48336
java version "1.5.0_08"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
Java HotSpot(TM) Server VM (build 1.5.0_08-b03, mixed mode)
But with JDK 1.6.0 I get interpreted mode:
/java -Xdebug -Xnoagent -Djava.compiler=none -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=localhost:48336 -version
Listening for transport dt_socket at address: 48336
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Server VM (build 1.6.0-b105, interpreted mode)
- relates to
-
JDK-6272174 -Djava.compiler=NONE and -Xdebug anachronisms unanachronistically disable full-speed debugging
-
- Closed
-