[aarch64-port-dev ] Server build for simulator
Edward Nevill
edward.nevill at linaro.org
Tue Nov 26 07:54:53 PST 2013
On Tue, 2013-11-26 at 09:22 -0500, Andy Johnson wrote:
> I am still getting this message:
> Error: missing `client' JVM at
> `.../build/linux-aarch64-normal-server-slowdebug/images/j2sdk-image/jre/lib/aarch64/client/libjvm.so'.
> from .../build/linux-aarch64-normal-server-slowdebug/images/j2sdk-image/
> whenever I try to run any of the following commands:
> javac, javadoc, javah, javap, jdeps.
I feel like this is an endless treadmill that just won't die.
The problem now is the following in CompileLaunchers.gmk
$(eval $(call SetupLauncher,javac,\
-DEXPAND_CLASSPATH_WILDCARDS \
-DNEVER_ACT_AS_SERVER_CLASS_MACHINE \
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.javac.Main"$(COMMA) }'))
and the following in Makefile.launcher
ifeq ($(PROGRAM),javac)
WILDCARDS=true
MAIN_JAVA_ARGS += -J-Xss4m -J-ea:com.sun.tools...
NEVER_ACT_AS_SERVER_CLASS_MACHINE=true
endif
Of course this works for x86_64 because of its jvm.cfg which reads
-server KNOWN
-client IGNORE
So even though it specifies 'NEVER_ACT_AS_SERVER_CLASS_MACHINE' it just ignores any client request and runs the server compiler anyway, so the only way the client compiler is ever run is as part of a tiered compilation.
Our jvm.cfg reads
-client IF_SERVER_CLASS -server
-server KNOWN
-minimal KNOWN
'NEVER_ACT_AS_SERVER_CLASS_MACHINE' causes the IF_SERVER_CLASS predicate to be false hence the error.
Our jvm.cfg is like this because we want to be able to variously run -client, or -server. If we decide that like x86 we never want to run the client compiler independently then this problem is resolved by simply copying the x86 jvm.cfg.
The current situation is that if it fails to find a server compiler it reverts to the client compiler. This was based on my obviously naive assumption that IF_SERVER_CLASS always returned true on aarch64.
The attached patch changes this so that if it fails to find the server it reverts to the client and if it fails to find the client it reverts to the server.
All the best,
Ed.
--- CUT HERE ---
exporting patch:
# HG changeset patch
# User Edward Nevill edward.nevill at linaro.org
# Date 1385481131 0
# Tue Nov 26 15:52:11 2013 +0000
# Node ID a4a0229fd36a8a8cf156c5f8c88066db214d378c
# Parent 2940c1ead99bd7635c767f4d585b67fcf7544076
Modify GetAltJvmType to use -server if no client compiler
diff -r 2940c1ead99b -r a4a0229fd36a src/share/bin/java.c
--- a/src/share/bin/java.c Mon Nov 11 11:43:26 2013 +0000
+++ b/src/share/bin/java.c Tue Nov 26 15:52:11 2013 +0000
@@ -642,9 +642,9 @@
char *
GetAltJvmType(char *jvmtype)
{
- if ((knownVMs[0].flag == VM_IF_SERVER_CLASS) &&
- (jvmtype == knownVMs[0].server_class+1)) {
- return knownVMs[0].name+1;
+ if ((knownVMs[0].flag == VM_IF_SERVER_CLASS)) {
+ if (jvmtype == knownVMs[0].server_class+1) return knownVMs[0].name+1;
+ if (jvmtype == knownVMs[0].name+1) return knownVMs[0].server_class+1;
}
return NULL;
}
--- CUT HERE ---
More information about the aarch64-port-dev
mailing list