Index: /branches/x8664-call/ccl/compiler/X86/x862.lisp
===================================================================
--- /branches/x8664-call/ccl/compiler/X86/x862.lisp	(revision 6336)
+++ /branches/x8664-call/ccl/compiler/X86/x862.lisp	(revision 6337)
@@ -1388,5 +1388,5 @@
              (imm0 (make-wired-lreg x8664::imm0 :mode (get-regspec-mode s64-src))))
         (x862-copy-register seg imm0 s64-src)
-        (! call-subprim (subprim-name->offset '.SPmakes64))
+        (! xcall-subprim (subprim-name->offset '.SPnmakes64))
         (x862-copy-register seg node-dest arg_z)))))
 
@@ -1418,5 +1418,5 @@
              (imm0 ($ x8664::imm0 :mode :u64)))
         (x862-copy-register seg imm0 u64-src)
-        (! call-subprim (subprim-name->offset '.SPmakeu64))
+        (! xcall-subprim (subprim-name->offset '.SPnmakeu64))
         (x862-copy-register seg node-dest arg_z)))))
 
@@ -2444,5 +2444,5 @@
            (label-p (and (fixnump fn) 
                          (locally (declare (fixnum fn))
-                           (and (= fn -1) (- fn)))))
+                           (and (= fn -2) (- fn)))))
            (tail-p (eq xfer $backend-return))
            (func (if (consp f-op) (%cadr f-op)))
@@ -2503,5 +2503,5 @@
               (if label-p
                 (progn
-                  (! call-label (aref *backend-labels* 1)))
+                  (! call-label (aref *backend-labels* 2)))
                 (progn
                   (if a-reg
@@ -5363,5 +5363,8 @@
         (! jump-subprim subprim)
         (progn
-          (! call-subprim subprim)
+          (setq subprim (+ (subprim-name->offset 'x8664::.spnbuiltin-plus)
+                           (- subprim
+                              (subprim-name->offset 'x8664::.spbuiltin-plus))))
+          (! xcall-subprim subprim)
           (<- ($ x8664::arg_z))
           (^))))))
@@ -5433,4 +5436,6 @@
           (x862-allocate-global-registers *x862-fcells* *x862-vcells* (afunc-all-vars afunc) no-regs))
         (@ (backend-get-next-label)) ; generic self-reference label, should be label #1
+        (! establish-fn)
+        (@ (backend-get-next-label)) ; self-call label
         (unless next-method-p
           (setq method-var nil))
@@ -6137,5 +6142,7 @@
         (let* ((index (arch::builtin-function-name-offset name))
                (idx-subprim (x862-builtin-index-subprim index)))
-          (! call-subprim-2 ($ x8664::arg_z) idx-subprim ($ x8664::arg_y) ($ x8664::arg_z)))
+          (setq idx-subprim (+ (subprim-name->offset 'x8664::.SPnbuiltin-plus)
+                               (- idx-subprim (subprim-name->offset 'x8664::.SPbuiltin-plus))))
+          (! xcall-subprim-2 ($ x8664::arg_z) idx-subprim ($ x8664::arg_y) ($ x8664::arg_z)))
         (@ done)
         (<- ($ x8664::arg_z))
@@ -6296,5 +6303,5 @@
 (defx862 x862-self-call self-call (seg vreg xfer arglist &optional spread-p)
   (setq arglist (x862-augment-arglist *x862-cur-afunc* arglist (if spread-p 1 *x862-target-num-arg-regs*)))
-  (x862-call-fn seg vreg xfer -1 arglist spread-p))
+  (x862-call-fn seg vreg xfer -2 arglist spread-p))
 
 
@@ -6327,5 +6334,8 @@
       (! jump-subprim subprim)
       (progn
-        (! call-subprim subprim)
+        (setq subprim (+ (subprim-name->offset 'x8664::.SPnbuiltin-plus)
+                         (- subprim
+                            (subprim-name->offset 'x8664::.SPbuiltin-plus))))
+        (! xcall-subprim subprim)
         (<- x8664::arg_z)
         (^)))))
