Hi Wayne,

> 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
> " 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?
There is something weird here that I don't understand (we are currently
investigating). In the meantime, you can change the creation of the hash
table for

  (define *hash* (create-hashtable :size 20000 :eqtest =fx))

This solves the problem.

Many thanks for your report.

-- 
Manuel

Reply via email to