I'm getting unexpected results from hashtable-get/put! under the -jvm
target. However, when using bigloo3.6a, the results look correct to me.
Makefile:
--------
PROG=bgtest
BGLFLAGS=-g -jvm -jvm-cinit-module -jvm-purify
OBJS= bigloo/test.class \
${PROG}.class
BGLJAR=/usr/local/lib/bigloo/current/bigloo_u.zip
all: .afile ${OBJS}
java -classpath .:$(BGLJAR) $(PROG)
%.class: %.java
javac -classpath .:$(BGLJAR) $<
bigloo/test.class: bigloo/test.scm
bigloo ${BGLFLAGS} -c -o $@ $^
.afile: bigloo/test.scm
bglafile $^ > $@
clean:
rm -f $(OBJS) .afile
(The file /usr/local/lib/bigloo/current is a symbolic link. I point this to
the bigloo version, then do a 'sudo make install' from the appropriate
source directory.)
bgtest.java:
-----------
import bigloo.test;
public class bgtest{
public static void main(String args[]){
test.add(3);
test.add(3);
}
}
bigloo/test.scm:
---------------
(module bigloo.test
(java
(export add "add"))
(export
(add ::int))
)
(define *hash* (make-hashtable 20000))
(define (add count)
(let ((keys (iota count)))
(for-each
(lambda (key)
(let ((fnd (hashtable-get *hash* key)))
(hashtable-put! *hash* key "value")
(printf "key: ~s fnd: ~s\n" key fnd)))
keys)))
Under bigloo 4.0b, output is
make -k
bglafile bigloo/test.scm > .afile
bigloo -g -jvm -jvm-cinit-module -jvm-purify -c -o bigloo/test.class
bigloo/test.scm
*** WARNING:bigloo:Incompatible package name and class path.
Package name for module bigloo.test is `.', class path is `bigloo'.
javac -classpath .:/usr/local/lib/bigloo/current/bigloo_u.zip
bgtest.java
java -classpath .:/usr/local/lib/bigloo/current/bigloo_u.zip bgtest
key: 0 fnd: #f
key: 1 fnd: #f
key: 2 fnd: #f
key: 0 fnd: #f
key: 1 fnd: #f
key: 2 fnd: #f
Under bigloo 3.6a, output is
make -k
bglafile bigloo/test.scm > .afile
bigloo -g -jvm -jvm-cinit-module -jvm-purify -c -o bigloo/test.class
bigloo/test.scm
*** WARNING:bigloo:Incompatible package name and class path.
Package name for module bigloo.test is `.', class path is `bigloo'.
javac -classpath .:/usr/local/lib/bigloo/current/bigloo_u.zip
bgtest.java
java -classpath .:/usr/local/lib/bigloo/current/bigloo_u.zip bgtest
key: 0 fnd: #f
key: 1 fnd: #f
key: 2 fnd: #f
key: 0 fnd: "value"
key: 1 fnd: "value"
key: 2 fnd: "value"
Is there something wrong with my code? If not, what has changed in
bigloo?
Wayne