diff: increase java memory limit for standard library

View: New views
1 Messages — Rating Filter:   Alert me  

diff: increase java memory limit for standard library

by Peter Wang-6 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Branches: main

library/Mmakefile:
        It appears that javac -Xmx256m still runs out of memory when building
        the standard library in the java grade on 32-bit machines. Bump up the
        maximum size to 512 MB for the standard library, but not in general.

README.Java:
        Describe how to increase the memory limit with mmc --make.

diff --git a/README.Java b/README.Java
index 3d0baf0..29d0664 100644
--- a/README.Java
+++ b/README.Java
@@ -161,6 +161,7 @@ A. The following implementation features are not supported:
 
    This list is probably not complete.
 
+
 Q. So how do I enable Java-level debugging?
 
 A. By default, javac already generates line number and source file debugging
@@ -173,4 +174,16 @@ A. By default, javac already generates line number and source file debugging
    as part of the Java SDK distribution, to debug your program.
    For more information, see the documentation for javac and jdb.
 
+
+Q. The Java compiler runs out of memory!
+
+A. You are probably hitting an artificial limit. You can pass an option to
+   the javac program to increase the limit, e.g.
+
+        mmc --make foo --java --java-flag -J-Xmx512m
+
+   Or in a Mercury.options file:
+
+        JAVACFLAGS += -J-Xmx512m
+
 -----------------------------------------------------------------------------
diff --git a/library/Mmakefile b/library/Mmakefile
index 5353f22..f6a6af3 100644
--- a/library/Mmakefile
+++ b/library/Mmakefile
@@ -119,6 +119,14 @@ endif
 # Let javac find jmercury/runtime/*.java files.
 JAVACFLAGS   += -sourcepath .
 
+# -Xmx256m doesn't always seem to be enough memory to build the standard
+# library. This bumps up the memory when building the standard library
+# if the javac executable accepts the -J-Xmx flag, without bumping up
+# the memory requirements in general.
+ifneq ("$(findstring -J-Xmx,$(JAVACFLAGS))","")
+JAVACFLAGS   += -J-Xmx512m
+endif
+
 MTAGS = $(SCRIPTS_DIR)/mtags
 
 LN = ln

--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to:       mercury-reviews@...
Administrative Queries: owner-mercury-reviews@...
Subscriptions:          mercury-reviews-request@...
--------------------------------------------------------------------------