JVM crash on (as ulong 1)
Entering "(as ulong 1)" in the REPL causes a JVM crash (at least on my setup). I was able to get the same result on a command-line invocation as the example below illustrates.
It seems to happen only when that form is at the top level (e.g., w3.scm and w4.scm below work fine).
Similar problems occur for uint, but not for ubyte or ushort or int or long.
chaw@vpaur:~/res/scheme/kawa/oddities/as-ulong$ export PS1='$ '
$ cat w2.scm
(as ulong 1)
$ kawa w2.scm
Exception in thread "main" java.lang.VerifyError: Bad type on operand stack
Exception Details:
Location:
w2.run(Lgnu/mapping/CallContext;)V @8: invokestatic
Reason:
Type 'gnu/lists/Consumer' (current frame, stack[2]) is not assignable to long_2nd
Current Frame:
bci: @8
flags: { }
locals: { 'w2', 'gnu/mapping/CallContext', 'gnu/lists/Consumer' }
stack: { long, long_2nd, 'gnu/lists/Consumer', 'gnu/lists/Consumer' }
Bytecode:
0x0000000: 2bb4 0008 4d0a 2c2c b800 0eb1
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2583)
at java.lang.Class.getDeclaredField(Class.java:2068)
at gnu.expr.ModuleContext.findInstance(ModuleContext.java:71)
at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:286)
at gnu.expr.CompiledModule.evalModule(CompiledModule.java:42)
at gnu.expr.CompiledModule.evalModule(CompiledModule.java:60)
at kawa.Shell.runFile(Shell.java:571)
at kawa.Shell.runFileOrClass(Shell.java:474)
at kawa.repl.processArgs(repl.java:710)
at kawa.repl.main(repl.java:830)
$ cat w3.scm
(display (as ulong 1))
(newline)
$ kawa w3.scm
1
$ cat w4.scm
(+ 1 (as ulong 1))
$ kawa w4.scm
$ kawa --version
Kawa 3.1.1 (git describe: 3.1.1-11-ga5f9754b6-dirty)
Copyright (C) 2020 Per Bothner
$ java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-8u242-b08-1~deb9u1-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
$