Hello,

how did you fix the build of NQP for the JVM?

I have the same problem that you reported in an other email.

> perl ConfigureJVM.pl
> make
...
perl tools/build/gen-cat.pl jvm src/vm/jvm/QAST/Compiler.nqp  >
src/stage1/gen/QAST.nqp
java -cp src/vm/jvm/stage0:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar nqp
--bootstrap --module-path=src/stage1 --setting-path=src/stage1 \
         --setting=NQPCORE --no-regex-lib --target=classfile \
    --output=src/stage1/QAST.class src/stage1/gen/QAST.nqp
java.lang.RuntimeException: java.lang.RuntimeException: Method code too
large!
  in <anon>
  in compile
  in eval
  in evalfiles
  in command_eval
  in command_line
  in MAIN
  in <anon>
  in <anon>make: *** [src/stage1/QAST.class] Fehler 1
[gz016@vdesk1 nqp.new.git]$ java -version
java version "1.7.0_19"
OpenJDK Runtime Environment (fedora-2.3.9.3.fc17-x86_64)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
[gz016@vdesk1 nqp.new.git]$ free
             total       used       free     shared    buffers
cached
Mem:      32946108   31436504    1509604          0     608828
28459716
-/+ buffers/cache:    2367960   30578148
Swap:     32767996      22960   32745036
[gz016@vdesk1 nqp.new.git]$ 

It is a rather beefy server. Should I try it with another Java?

Gerd Pokorra


Am Freitag, den 17.05.2013, 08:28 +0100 schrieb Nicholas Clark:
> So I can build Rakudo for the JVM no problem on a rather beefy server.
> When I tried it on a desktop with 2GB it fails:
> 
> $ java 
> -Xbootclasspath/a:.:/home/nick/Perl/rakudo/nqp/install/nqp-runtime.jar:/home/nick/Perl/rakudo/nqp/install/asm-4.1.jar:/home/nick/Perl/rakudo/nqp/install/jline-1.0.jar:rakudo-runtime.jar
>  -cp /home/nick/Perl/rakudo/nqp/install perl6 --setting=NULL --optimize=3 
> --target=classfile --stagestats --output=CORE.setting.class 
> src/gen/CORE.setting
> Stage start      :   0.000
> Stage parse      :  77.657
> Stage syntaxcheck:   0.000
> Stage ast        :   0.000
> Stage optimize   :   4.934
> Stage jast       :  37.581
> java.lang.OutOfMemoryError: Java heap space
>   in dump
>   in <anon>
>   in dump
>   in classfile
>   in <anon>
>   in compile
>   in eval
>   in evalfiles
>   in command_eval
>   in command_eval
>   in command_line
>   in MAIN
>   in <anon>
>   in <anon>
> 
> 
> A bit of Googling reveals that the heap space can be altered with -Xmx, and
> it seems that I can get the current value like this:
> 
> $ java -XshowSettings
> VM settings:
>     Max. Heap Size (Estimated): 592.00M
>     Ergonomics Machine Class: server
>     Using VM: OpenJDK 64-Bit Server VM
> 
> [snip lots more exciting information]
> 
> 
> So, boosting it to a gig works:
> 
> $ java -Xmx1024m 
> -Xbootclasspath/a:.:/home/nick/Perl/rakudo/nqp/install/nqp-runtime.jar:/home/nick/Perl/rakudo/nqp/install/asm-4.1.jar:/home/nick/Perl/rakudo/nqp/install/jline-1.0.jar:rakudo-runtime.jar
>  -cp /home/nick/Perl/rakudo/nqp/install perl6 --setting=NULL --optimize=3 
> --target=classfile --stagestats --output=CORE.setting.class 
> src/gen/CORE.setting
> Stage start      :   0.000
> Stage parse      :  78.145
> Stage syntaxcheck:   0.001
> Stage ast        :   0.001
> Stage optimize   :   6.578
> Stage jast       :  30.003
> Stage classfile  :  14.435
> 
> 
> (and I can get to "Hello world". Although I admit I haven't figured out
> command line arguments yet)
> 
> Anyway, the most interesting thing was actually the suggestion in this
> answer on stack overflow:
> 
> http://stackoverflow.com/questions/37335/how-to-deal-with-java-lang-outofmemoryerror-java-heap-space-error-64mb-heap/186390#186390
> 
>     Yes, with -Xmx you can configure more memory for you JVM. To be
>     sure that you don't leak or waste memory. Take a heap dump and use
>     the Eclipse Memory Analyzer to analyze your memory consumption.
> 
> 
> Does that sound familiar enough to someone to be tempting?
> 
> Nicholas Clark


Reply via email to