[gambit-list] A register is not initialized in gvm code?

Oleg Parashchenko olpa at xmlhack.ru
Thu Nov 18 08:11:13 EST 2010


Hello,

I compiled to GVM the following test program:

(declare (standard-bindings) (fixnum) (not safe))
(define mkadder
  (lambda (n)
    (lambda (x)
      (+ x n))))
(define add1 (mkadder 1))
(add1 1)

In the produced GVM code (below, slightly edited for mail posting), I see
that the code of the lambda uses a closure in the register 4, but nowhere
in the code I see an assigment to this register. What do I miss?

**** #<primitive | test2.o7|> =
#line 2 "............"
#1 0 entry-point 0 ()
  ~#mkadder = '#<procedure ~#mkadder>
#line 6
  -1 = +0
  +1 = '1
  +0 = #3
  -2 = .
  -3 = .
  -4 = .
  jump* 4 #2
#2 4
  jump 4 ~#mkadder 1
#3 4 return-point
  ~#add1 = +1
#line 7
  +1 = '1
  +0 = -1
  jump* 4 #4
#4 4
  jump 0 ~#add1 1

**** #<procedure ~#mkadder> =
#line 2 "................"
#1 0 entry-point 1 ()
  close -1 = (#2 +1)
  +1 = -1
  jump 0 +0
#2 0 closure-entry-point 1 ()
  +4 = +4(1)
  +1 = (##fx+ +1 +4)
  jump 0 +0





-- 
Oleg Parashchenko  olpa@ http://uucode.com/
http://uucode.com/blog/  XML, TeX, Python, Mac, Chess




More information about the Gambit-list mailing list