JDK-5023037 : ergonomics conflict with javac
  • Type: Bug
  • Component: tools
  • Sub-Component: javac
  • Affected Version: 5.0
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • OS: solaris_8
  • CPU: generic
  • Submitted: 2004-03-30
  • Updated: 2005-03-19
  • Resolved: 2005-03-19
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6
6 b29Fixed
Related Reports
Relates :  
Relates :  
Description
On "large" machines, Tiger ergonomics causes javac to run under the server
compiler instead of the client compiler, resulting in a severe performance
degradation.  The javac launcher should turn off ergonomics by specifying
-J-client on the javac default command line.

Measured a performance degradation of 40% elapsed time for compiling
35000 source lines.  CPU time degradation of 145% (due to the use of multiple
CPUs).

###@###.### 2004-03-29

Comments
SUGGESTED FIX Joseph D. Darcy wrote: I looked at the launcher source more closely. As speculated, the baked-in options don't go through the option processing implemented by the launcher. Therefore, none of "-client", "-server", "-d32", and "-d64" will work if passed using JAVA_ARGS in the makefile. Implementing this functionality would require a launcher change. ###@###.### 2004-04-20 There is a function in the launcher which can be ifdef'ed to return false. ###@###.### 2005-2-24 01:01:36 GMT make/sun/javac>sccs sccsdiff -r1.18 -r1.19 Makefile ------- Makefile ------- 18a19,20 > NEVER_ACT_AS_SERVER_CLASS_MACHINE=TRUE > 22c24 < $(CD) $$i; $(MAKE) $@ RELEASE=$(RELEASE) FULL_VERSION=$(FULL_VERSION)\ --- > $(CD) $$i; $(MAKE) $@ NEVER_ACT_AS_SERVER_CLASS_MACHINE=$(NEVER_ACT_AS_SERVER_CLASS_MACHINE) RELEASE=$(RELEASE) FULL_VERSION=$(FULL_VERSION)\ ake/common>sccs sccsdiff -r1.112 -r1.113 Program.gmk ------- Program.gmk ------- 55a56,59 > ifdef NEVER_ACT_AS_SERVER_CLASS_MACHINE > SERVERCLASS=-DNEVER_ACT_AS_SERVER_CLASS_MACHINE > endif > 119c123 < $(LINK_PRE_CMD) $(CC) $(CC_OBJECT_OUTPUT_FLAG)$@ $(LDFLAGS) \ --- > $(LINK_PRE_CMD) $(CC) $(SERVERCLASS) $(CC_OBJECT_OUTPUT_FLAG)$@ $(LDFLAGS) \ 198c202 < $(COMPILE.c) $(CC_OBJECT_OUTPUT_FLAG)$@ $(VERSION_DEFINES) $< --- > $(COMPILE.c) $(CC_OBJECT_OUTPUT_FLAG)$@ $(VERSION_DEFINES) $(SERVERCLASS) $< src/solaris/bin>sccs sccsdiff -r1.55 -r1.56 java_md.c ------- java_md.c ------- 1414c1414,1418 < #if defined(__sun) && defined(__sparc) --- > #if defined(NEVER_ACT_AS_SERVER_CLASS_MACHINE) > result = JNI_FALSE; > #elif defined(ALWAYS_ACT_AS_SERVER_CLASS_MACHINE) > result = JNI_TRUE; > #elif defined(__sun) && defined(__sparc) src/windows/bin>sccs sccsdiff -r1.41 -r1.42 java_md.c ------- java_md.c ------- 404a405,409 > #if defined(NEVER_ACT_AS_SERVER_CLASS_MACHINE) > result = JNI_FALSE; > #elif defined(ALWAYS_ACT_AS_SERVER_CLASS_MACHINE) > result = JNI_TRUE; > #endif ###@###.### 2005-03-09 23:08:22 GMT
09-03-2005

CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: mustang
17-07-2004

PUBLIC COMMENTS ...
17-07-2004

EVALUATION trivial to fix. ###@###.### 2004-03-29 OK, perhaps not so trivial. Requires a launcher change. See "Suggested Fix". ###@###.### 2004-04-20 Given the more extensive code change required to fix this, it is too risky for this point in the tiger schedule. ###@###.### 2004-04-21
20-04-2004