Changeset 8344
- Timestamp:
- Jan 28, 2008, 4:58:20 PM (17 years ago)
- Location:
- branches/event-ide/ccl
- Files:
-
- 7 edited
-
level-1/linux-files.lisp (modified) (2 diffs)
-
lib/lists.lisp (modified) (3 diffs)
-
lib/pathnames.lisp (modified) (1 diff)
-
library/darwinx8664-syscalls.lisp (modified) (1 diff)
-
lisp-kernel/x86-constants64.s (modified) (1 diff)
-
lisp-kernel/x86-macros.s (modified) (2 diffs)
-
lisp-kernel/x86-spentry64.s (modified) (62 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/event-ide/ccl/level-1/linux-files.lisp
r8335 r8344 350 350 351 351 (defun try-hard-to-get-errno (err) 352 (declare (optimize (safety 0 speed 3)))353 352 (when (eq err -1) 354 353 (let ((nerr (%get-errno))) … … 356 355 #+darwin-target 357 356 (when (eq err -1) 358 ;; Not thread safe, but wh en can wedo??357 ;; Not thread safe, but what else can I do?? 359 358 (let ((nerr (pref (foreign-symbol-address "_errno") :signed))) 360 359 (unless (eq nerr 0) (setq err nerr)))) -
branches/event-ide/ccl/lib/lists.lisp
r929 r8344 365 365 (test #'eql testp) (test-not nil notp)) 366 366 "Substitute NEW for subtrees matching OLD." 367 "replace with above def when labels works"368 367 (if (and testp notp) 369 368 (test-not-error test test-not)) … … 393 392 (defun nsubst-if (new test tree &key key) 394 393 "Substitute NEW for subtrees of TREE for which TEST is true." 395 "replace with above def when labels works."396 394 (unless key (setq key #'identity)) 397 395 (cond ((funcall test (funcall key tree)) new) … … 410 408 (defun nsubst-if-not (new test tree &key key) 411 409 "Substitute NEW for subtrees of TREE for which TEST is false." 412 "Replace with above def when labels works."413 410 (unless key (setq key #'identity)) 414 411 (cond ((not (funcall test (funcall key tree))) new) -
branches/event-ide/ccl/lib/pathnames.lisp
r8262 r8344 110 110 (values new-name original (truename new-name)))))) 111 111 112 113 112 (defun copy-file (source-path dest-path &key (if-exists :error) 114 113 (preserve-attributes nil)) 115 114 (let* ((original (truename source-path)) 116 (original-namestring (native-translated-namestring original))117 115 (new-name (merge-pathnames dest-path original)) 118 (new-namestring (native-translated-namestring new-name)) 119 (flags (if preserve-attributes "-pf" "-f"))) 120 (unless new-namestring 121 (error "~S can't be created." new-name)) 122 (unless (and (probe-file new-name) 123 (not (if-exists if-exists new-name))) 124 (let* ((proc (run-program "/bin/cp" 125 `(,flags ,original-namestring ,new-namestring) 126 :wait t)) 127 (exit-code (external-process-%exit-code proc))) 128 (unless (zerop exit-code) 129 (error "Error copying ~s to ~s: ~a" 130 source-path dest-path (%strerror exit-code))) 131 (values new-name original (truename new-name)))))) 116 (buffer (make-array 4096 :element-type '(unsigned-byte 8)))) 117 (with-open-file (in original :direction :input 118 :element-type '(unsigned-byte 8)) 119 (with-open-file (out new-name :direction :output 120 :if-exists if-exists 121 :element-type '(unsigned-byte 8)) 122 (loop 123 as n = (stream-read-vector in buffer 0 4096) until (eql n 0) 124 do (stream-write-vector out buffer 0 n)))) 125 (when preserve-attributes 126 (copy-file-attributes original new-name)) 127 (values new-name original (truename new-name)))) 132 128 133 129 (defun recursive-copy-directory (source-path dest-path &key test (if-exists :error)) -
branches/event-ide/ccl/library/darwinx8664-syscalls.lisp
r4975 r8344 93 93 (define-syscall (logior platform-os-darwin platform-cpu-x86 platform-word-size-64) syscalls::truncate (logior darwinx8664-unix-syscall-mask 200) (:address :unsigned-doubleword) :signed-fullword ) 94 94 (define-syscall (logior platform-os-darwin platform-cpu-x86 platform-word-size-64) syscalls::ftruncate (logior darwinx8664-unix-syscall-mask 201) (:unsigned-fullword :unsigned-doubleword) :signed-fullword ) 95 95 (define-syscall (logior platform-os-darwin platform-cpu-x86 platform-word-size-64) syscalls::poll (logior darwinx8664-unix-syscall-mask 230) ((:* (:struct :pollfd)) :int :int) :int) 96 96 #+notdefinedyet 97 97 (progn -
branches/event-ide/ccl/lisp-kernel/x86-constants64.s
r8262 r8344 155 155 define([next_method_context],[temp0]) 156 156 define([nargs_b],[imm2_b]) 157 define([nargs ],[imm2_w])157 define([nargs_w],[imm2_w]) 158 158 define([nargs_q],[imm2]) 159 define([nargs _l],[imm2_l])159 define([nargs],[imm2_l]) 160 160 define([ra0],[temp2]) 161 161 -
branches/event-ide/ccl/lisp-kernel/x86-macros.s
r8304 r8344 245 245 define([set_nargs],[ 246 246 ifelse(eval($1>15),1,[ 247 __(movl [$]$1<<fixnumshift,%nargs _l)247 __(movl [$]$1<<fixnumshift,%nargs) 248 248 ],[ 249 __(xorl %nargs _l,%nargs_l)249 __(xorl %nargs,%nargs) 250 250 ifelse(eval($1),0,[],[ 251 __(addl [$]$1<<fixnumshift,%nargs _l)251 __(addl [$]$1<<fixnumshift,%nargs) 252 252 ])])]) 253 253 … … 393 393 define([push_argregs],[ 394 394 new_macro_labels() 395 __(test w%nargs,%nargs)395 __(testl %nargs,%nargs) 396 396 __(jz macro_label(done)) 397 __(cmp w[$]2*node_size,%nargs)397 __(cmpl [$]2*node_size,%nargs) 398 398 __(je macro_label(yz)) 399 399 __(jb macro_label(z)) -
branches/event-ide/ccl/lisp-kernel/x86-spentry64.s
r8262 r8344 1121 1121 __(cmpq lisp_frame.savera0(%rbp),%temp1) 1122 1122 __(je 1f) 1123 __(testw %nargs,%nargs) 1124 __(movzwl %nargs,%nargs_l) 1123 __(testl %nargs,%nargs) 1125 1124 __(movl $nil_value,%arg_z_l) 1126 1125 __(cmovneq -node_size(%rsp,%nargs_q),%arg_z) … … 1131 1130 /* actually need to return values ; always need to copy */ 1132 1131 1: __(leaq 2*node_size(%rbp),%imm1) 1133 __(movzwl %nargs,%nargs_l)1134 1132 __(movq (%imm1),%ra0) 1135 1133 __(addq $node_size,%imm1) … … 1140 1138 2: __(movq -node_size(%temp0),%temp1) 1141 1139 __(subq $node_size,%temp0) 1142 __(add q $node_size,%imm0)1140 __(addl $node_size,%imm0_l) 1143 1141 __(movq %temp1,-node_size(%imm1)) 1144 1142 __(subq $node_size,%imm1) 1145 3: __(cmp w %imm0_w,%nargs)1143 3: __(cmpl %imm0_l,%nargs) ; 1146 1144 __(jne 2b) 1147 1145 __(movq %imm1,%rsp) … … 1197 1195 __(movq %rcontext:tcr.catch_top,%imm1) 1198 1196 __(xorl %imm0_l,%imm0_l) 1199 __(movzwl %nargs,%nargs_l)1200 1197 __(movq (%rsp,%nargs_q),%temp0) /* temp0 = tag */ 1201 1198 __(jmp local_label(_throw_test)) … … 1215 1212 __(testb $fulltagmask,catch_frame.mvflag(%imm1)) 1216 1213 __(jne local_label(_throw_multiple)) 1217 __(test w%nargs,%nargs)1214 __(testl %nargs,%nargs) 1218 1215 __(movl $nil_value,%arg_z_l) 1219 1216 __(je local_label(_throw_one_value)) … … 1300 1297 _spentry(nthrowvalues) 1301 1298 __(movb $1,%rcontext:tcr.unwinding) 1302 __(movzwl %nargs,%nargs_l)1303 1299 local_label(_nthrowv_nextframe): 1304 1300 __(subq $fixnumone,%imm0) … … 1390 1386 __(addq $node_size,%imm1) 1391 1387 local_label(_nthrowv_tpushtest): 1392 __(sub w$node_size,%nargs)1388 __(subl $node_size,%nargs) 1393 1389 __(jns local_label(_nthrowv_tpushloop)) 1394 1390 __(pop %xfn) … … 1438 1434 _spentry(nthrow1value) 1439 1435 __(movb $1,%rcontext:tcr.unwinding) 1440 __(movzwl %nargs,%nargs_l)1441 1436 local_label(_nthrow1v_nextframe): 1442 1437 __(subq $fixnumone,%imm0) … … 1648 1643 _spentry(conslist) 1649 1644 __(movl $nil_value,%arg_z_l) 1650 __(test w%nargs,%nargs)1645 __(testl %nargs,%nargs) 1651 1646 __(jmp 2f) 1652 1647 1: __(pop %arg_y) 1653 1648 __(Cons(%arg_y,%arg_z,%arg_z)) 1654 __(sub w$node_size,%nargs)1649 __(subl $node_size,%nargs) 1655 1650 2: __(jnz 1b) 1656 1651 __(jmp *%ra0) … … 1661 1656 1662 1657 _spentry(conslist_star) 1663 __(test w%nargs,%nargs)1658 __(testl %nargs,%nargs) 1664 1659 __(jmp 2f) 1665 1660 1: __(pop %arg_y) 1666 1661 __(Cons(%arg_y,%arg_z,%arg_z)) 1667 __(sub w$node_size,%nargs)1662 __(subl $node_size,%nargs) 1668 1663 2: __(jnz 1b) 1669 1664 __(jmp *%ra0) … … 1673 1668 /* doesn't get confused. */ 1674 1669 _spentry(stkconslist) 1675 __(movzwl %nargs,%nargs_l)1676 1670 __(movq %nargs_q,%imm1) 1677 1671 __(addq %imm1,%imm1) … … 1680 1674 __(TSP_Alloc_Var(%imm1,%imm0)) 1681 1675 __(addq $fulltag_cons,%imm0) 1682 __(test w%nargs,%nargs)1676 __(testl %nargs,%nargs) 1683 1677 __(jmp 2f) 1684 1678 1: __(pop %temp0) … … 1687 1681 __(movq %imm0,%arg_z) 1688 1682 __(add $cons.size,%imm0) 1689 __(sub w$node_size,%nargs)1683 __(subl $node_size,%nargs) 1690 1684 2: __(jne 1b) 1691 1685 __(jmp *%ra0) … … 1696 1690 1697 1691 _spentry(stkconslist_star) 1698 __(movzwl %nargs,%nargs_l)1699 1692 __(movq %nargs_q,%imm1) 1700 1693 __(addq %imm1,%imm1) … … 1702 1695 __(TSP_Alloc_Var(%imm1,%imm0)) 1703 1696 __(addq $fulltag_cons,%imm0) 1704 __(test w%nargs,%nargs)1697 __(testl %nargs,%nargs) 1705 1698 __(jmp 2f) 1706 1699 1: __(pop %temp0) … … 1709 1702 __(movq %imm0,%arg_z) 1710 1703 __(addq $cons.size,%imm0) 1711 __(sub w$node_size,%nargs)1704 __(subl $node_size,%nargs) 1712 1705 2: __(jne 1b) 1713 1706 __(jmp *%ra0) … … 1718 1711 1719 1712 _spentry(mkstackv) 1720 __(movzwl %nargs,%nargs_l)1721 1713 __(dnode_align(%nargs_q,tsp_frame.fixed_overhead+node_size,%imm1)) 1722 1714 __(TSP_Alloc_Var(%imm1,%temp0)) 1723 __(movl %nargs _l,%imm0_l)1715 __(movl %nargs,%imm0_l) 1724 1716 __(shlq $(num_subtag_bits-fixnumshift),%imm0) 1725 1717 __(movb $subtag_simple_vector,%imm0_b) 1726 1718 __(movq %imm0,(%temp0)) 1727 1719 __(leaq fulltag_misc(%temp0),%arg_z) 1728 __(test w%nargs,%nargs)1720 __(testl %nargs,%nargs) 1729 1721 __(leaq misc_data_offset(%arg_z,%nargs_q),%imm1) 1730 1722 __(jmp 2f) 1731 1723 1: __(pop -node_size(%imm1)) 1732 __(sub w$node_size,%nargs)1724 __(subl $node_size,%nargs) 1733 1725 __(leaq -node_size(%imm1),%imm1) 1734 1726 2: __(jne 1b) … … 2084 2076 /* objects. */ 2085 2077 _spentry(gvector) 2086 __(movzwl %nargs,%nargs_l)2087 2078 __(movq (%rsp,%nargs_q),%imm0) /* boxed subtype */ 2088 2079 __(sarq $fixnumshift,%imm0) … … 2116 2107 __(ref_global(ret1val_addr,%imm1)) 2117 2108 __(cmpq %imm1,%ra0) 2118 __(movzwl %nargs,%nargs_l)2119 2109 __(movl $nil_value,%arg_z_l) 2120 2110 __(je 0f) 2121 __(test w%nargs,%nargs)2111 __(testl %nargs,%nargs) 2122 2112 __(cmovneq -node_size(%rsp,%nargs_q),%arg_z) 2123 2113 __(movq %temp0,%rsp) … … 2152 2142 __(push_argregs()) 2153 2143 __(movq %next_method_context,%arg_y) 2154 __(movzwl %nargs,%nargs_l) 2155 __(movl %nargs_l,%imm1_l) 2144 __(movl %nargs,%imm1_l) 2156 2145 __(testl %imm1_l,%imm1_l) 2157 2146 __(movl $nil_value,%arg_z_l) … … 2171 2160 __(push_argregs()) 2172 2161 __(movq %next_method_context,%arg_y) 2173 __(movzwl %nargs,%nargs_l) 2174 __(movl %nargs_l,%imm1_l) 2162 __(movl %nargs,%imm1_l) 2175 2163 __(subl %imm0_l,%imm1_l) 2176 2164 __(movl $nil_value,%arg_z_l) … … 2189 2177 /* make an &rest arg out of any others */ 2190 2178 _spentry(heap_cons_rest_arg) 2191 __(movzwl %nargs,%nargs_l) 2192 __(movl %nargs_l,%imm1_l) 2179 __(movl %nargs,%imm1_l) 2193 2180 __(subl %imm0_l,%imm1_l) 2194 2181 __(movq %next_method_context,%arg_y) … … 2230 2217 2231 2218 _spentry(keyword_bind) 2232 __(mov zwl %nargs,%imm1_l)2219 __(movl %nargs,%imm1_l) 2233 2220 __(subq %imm0,%imm1) 2234 2221 __(jbe local_label(no_keyword_values)) … … 2237 2224 __(movl $nil_value,%arg_z_l) 2238 2225 __(movq %imm1,%nargs_q) 2239 __(test w%nargs,%nargs)2226 __(testl %nargs,%nargs) 2240 2227 __(jmp 1f) 2241 2228 0: __(pop %arg_y) 2242 2229 __(Cons(%arg_y,%arg_z,%arg_z)) 2243 __(sub w$node_size,%nargs)2230 __(subl $node_size,%nargs) 2244 2231 1: __(jnz 0b) 2245 2232 __(movl $XBADKEYS,%arg_y_l) … … 2354 2341 /* Signal an "unknown keywords" error */ 2355 2342 __(movq %imm1,%nargs_q) 2356 __(test w%nargs,%nargs)2343 __(testl %nargs,%nargs) 2357 2344 __(movl $nil_value,%arg_z_l) 2358 2345 __(jmp 5f) 2359 2346 4: __(pop %arg_y) 2360 2347 __(Cons(%arg_y,%arg_z,%arg_z)) 2361 __(sub w$node_size,%nargs)2348 __(subl $node_size,%nargs) 2362 2349 5: __(jnz 4b) 2363 2350 __(movl $XBADKEYS,%arg_y_l) … … 2403 2390 2404 2391 _spentry(stack_cons_rest_arg) 2405 __(movzwl %nargs,%nargs_l) 2406 __(movl %nargs_l,%imm1_l) 2392 __(movl %nargs,%imm1_l) 2407 2393 __(subl %imm0_l,%imm1_l) 2408 2394 __(movl $nil_value,%arg_z_l) … … 2451 2437 /* if all args fit in registers. */ 2452 2438 _spentry(spreadargz) 2453 __(test w%nargs,%nargs)2439 __(testl %nargs,%nargs) 2454 2440 __(jne 0f) 2455 2441 __(push $reserved_frame_marker) … … 2469 2455 __(push %arg_x) 2470 2456 __(jne 1b) 2471 2: __(addw %imm0_w,%nargs )2457 2: __(addw %imm0_w,%nargs_w) 2472 2458 __(jne 4f) 2473 2459 3: __(addq $2*node_size,%rsp) 2474 2460 __(jmp *%ra0) 2475 4: __(cmp w$1*node_size,%nargs)2461 4: __(cmpl $1*node_size,%nargs) 2476 2462 __(pop %arg_z) 2477 2463 __(je 3b) 2478 __(cmp w$2*node_size,%nargs)2464 __(cmpl $2*node_size,%nargs) 2479 2465 __(pop %arg_y) 2480 2466 __(je 3b) 2481 __(cmp w$3*node_size,%nargs)2467 __(cmpl $3*node_size,%nargs) 2482 2468 __(pop %arg_x) 2483 2469 __(je 3b) … … 2504 2490 /* relative to it and restore %rbp/%ra0 */ 2505 2491 _spentry(tfuncallgen) 2506 __(cmp w$nargregs*node_size,%nargs)2492 __(cmpl $nargregs*node_size,%nargs) 2507 2493 __(jbe 9f) 2508 __(movzwl %nargs,%nargs_l)2509 2494 __(lea -nargregs*node_size(%rsp,%nargs_q),%imm0) 2510 2495 __(xorl %imm1_l,%imm1_l) … … 2530 2515 /* Some args were pushed; move them down in the frame */ 2531 2516 _spentry(tfuncallslide) 2532 __(movzwl %nargs,%nargs_l)2533 2517 __(lea -nargregs*node_size(%rsp,%nargs_q),%imm0) 2534 2518 __(xorl %imm1_l,%imm1_l) … … 2555 2539 2556 2540 _spentry(tcallsymgen) 2557 __(cmp w$nargregs*node_size,%nargs)2541 __(cmpl $nargregs*node_size,%nargs) 2558 2542 __(jbe 9f) 2559 __(movzwl %nargs,%nargs_l)2560 2543 __(lea -nargregs*node_size(%rsp,%nargs_q),%imm0) 2561 2544 __(xorl %imm1_l,%imm1_l) … … 2580 2563 2581 2564 _spentry(tcallsymslide) 2582 __(movzwl %nargs,%nargs_l)2583 2565 __(lea -nargregs*node_size(%rsp,%nargs_q),%imm0) 2584 2566 __(xorl %imm1_l,%imm1_l) … … 2604 2586 2605 2587 _spentry(tcallnfngen) 2606 __(cmp w$nargregs*node_size,%nargs)2588 __(cmpl $nargregs*node_size,%nargs) 2607 2589 __(jbe 9f) 2608 __(movzwl %nargs,%nargs_l)2609 2590 __(lea -nargregs*node_size(%rsp,%nargs_q),%imm0) 2610 2591 __(xorl %imm1_l,%imm1_l) … … 2631 2612 2632 2613 _spentry(tcallnfnslide) 2633 __(movzwl %nargs,%nargs_l)2634 2614 __(lea -nargregs*node_size(%rsp,%nargs_q),%imm0) 2635 2615 __(xorl %imm1_l,%imm1_l) … … 2753 2733 /* node header subtag.) Nargs set to count of things vpushed. */ 2754 2734 _spentry(stkgvector) 2755 __(movzwl %nargs,%nargs_l)2756 2735 __(lea -fixnum_one(%nargs_q),%imm0) 2757 2736 __(lea (%rsp,%imm0),%arg_x) … … 2840 2819 __(jne local_label(req_loop)) 2841 2820 local_label(opt): 2842 __(movw %nargs ,%imm0_w)2821 __(movw %nargs_w,%imm0_w) 2843 2822 __(shrw $8,%imm0_w) 2844 2823 __(je local_label(rest_keys)) 2845 __(btl $initopt_bit,%nargs _l)2824 __(btl $initopt_bit,%nargs) 2846 2825 __(jc local_label(opt_supp)) 2847 2826 /* 'simple' &optionals: no supplied-p, default to nil. */ … … 2880 2859 __(jne local_label(default_hard_opt)) 2881 2860 local_label(rest_keys): 2882 __(btl $restp_bit,%nargs _l)2861 __(btl $restp_bit,%nargs) 2883 2862 __(jc local_label(have_rest)) 2884 __(btl $keyp_bit,%nargs _l)2863 __(btl $keyp_bit,%nargs) 2885 2864 __(jc local_label(have_keys)) 2886 2865 __(compare_reg_to_nil(%arg_reg)) … … 2889 2868 local_label(have_rest): 2890 2869 __(pushq %arg_reg) 2891 __(btl $keyp_bit,%nargs _l)2870 __(btl $keyp_bit,%nargs) 2892 2871 __(jc local_label(have_keys)) 2893 2872 __(jmp *%ra0) … … 2916 2895 /* of NILs on the vstack. */ 2917 2896 2918 __(movl %nargs _l,%imm1_l)2897 __(movl %nargs,%imm1_l) 2919 2898 __(shrl $16,%imm1_l) 2920 2899 __(movzbl %imm1_b,%imm0_l) … … 2960 2939 __(jne local_label(match_keys_loop)) 2961 2940 __(subl $1,%imm0_l) 2962 __(btsl $seen_aok_bit,%nargs _l)2941 __(btsl $seen_aok_bit,%nargs) 2963 2942 __(jc local_label(match_keys_loop)) 2964 2943 /* First time we've seen :allow-other-keys. Maybe set aok_bit. */ 2965 2944 __(compare_reg_to_nil(%save3)) 2966 2945 __(je local_label(match_keys_loop)) 2967 __(btsl $aok_bit,%nargs _l)2946 __(btsl $aok_bit,%nargs) 2968 2947 __(jmp local_label(match_keys_loop)) 2969 2948 /* Got a match. Worry about :allow-other-keys here, too. */ … … 2976 2955 __(cmpq $nrs.kallowotherkeys,%save2) 2977 2956 __(jne local_label(match_keys_loop)) 2978 __(btsl $seen_aok_bit,%nargs _l)2957 __(btsl $seen_aok_bit,%nargs) 2979 2958 __(jnc local_label(match_keys_loop)) 2980 2959 __(compare_reg_to_nil(%save3)) 2981 2960 __(je local_label(match_keys_loop)) 2982 __(btsl $aok_bit,%nargs _l)2961 __(btsl $aok_bit,%nargs) 2983 2962 __(jmp local_label(match_keys_loop)) 2984 2963 local_label(matched_keys): … … 2989 2968 __(testl %imm0_l,%imm0_l) 2990 2969 __(je local_label(keys_ok)) 2991 __(btl $aok_bit,%nargs _l)2970 __(btl $aok_bit,%nargs) 2992 2971 __(jnc local_label(badkeys)) 2993 2972 local_label(keys_ok): … … 3064 3043 /* the difference between the current RSP and the target. */ 3065 3044 _spentry(mvslide) 3066 __(movzwl %nargs,%nargs_l) 3067 __(movl %nargs_l,%imm1_l) 3045 __(movl %nargs,%imm1_l) 3068 3046 __(lea (%rsp,%nargs_q),%temp0) 3069 3047 __(testq %imm1,%imm1) … … 3085 3063 /* common exit: nargs = values in this set, imm1 = ptr to tsp before call to save_values */ 3086 3064 local_label(save_values_to_tsp): 3087 __(movzwl %nargs,%nargs_l)3088 3065 __(movq %rcontext:tcr.save_tsp,%arg_x) 3089 3066 __(dnode_align(%nargs_q,tsp_frame.fixed_overhead+(2*node_size),%imm0)) /* count, link */ … … 3115 3092 /* values. This makes recover_values harder. */ 3116 3093 _spentry(add_values) 3117 __(test w%nargs,%nargs)3094 __(testl %nargs,%nargs) 3118 3095 __(movq %rcontext:tcr.save_tsp,%imm1) 3119 3096 __(movq (%imm1),%imm1) … … 3141 3118 __(jne local_label(walkloop)) 3142 3119 3143 __(movzwl %nargs,%nargs_l)3144 3120 /* the final segment pointer is now in %arg_y */ 3145 3121 /* walk backwards, pushing values on the stack and incrementing %nargs */ … … 3172 3148 /* segment pointers Can tell the end because that previous */ 3173 3149 /* segment pointer is the prev tsp pointer */ 3174 __(xorl %nargs _l,%nargs_l)3150 __(xorl %nargs,%nargs) 3175 3151 __(movq %rcontext:tcr.save_tsp,%temp1) 3176 3152 __(movq %temp1,%arg_x) /* current segment */ … … 3186 3162 __(jne local_label(walkloop_mvcall)) 3187 3163 3188 __(cmp w$nargregs*node_size,%nargs)3164 __(cmpl $nargregs*node_size,%nargs) 3189 3165 __(jbe local_label(pushloop_mvcall)) 3190 3166 __(push $reserved_frame_marker) … … 4415 4391 new_local_labels() 4416 4392 __(movq (%arg_z),%imm0) 4417 __(test w%nargs,%nargs) /* anything pushed by caller ? */4393 __(testl %nargs,%nargs) /* anything pushed by caller ? */ 4418 4394 __(leaq node_size(%arg_z,%imm0),%imm1) 4419 4395 __(jne 0f) /* yes, caller has already created frame. */ … … 4422 4398 __(push $reserved_frame_marker) 4423 4399 __(push $reserved_frame_marker) 4424 0: __(addw %imm0_w,%nargs )4400 0: __(addw %imm0_w,%nargs_w) 4425 4401 __(cmpw $(nargregs*node_size),%imm0_w) 4426 4402 __(jae 9f) … … 4431 4407 /* lexpr count was 0; vpop the args that */ 4432 4408 /* were pushed by the caller */ 4433 __(test w%nargs,%nargs)4409 __(testl %nargs,%nargs) 4434 4410 __(je local_label(all_args_popped)) 4435 4411 __(pop %arg_z) 4436 4412 local_label(maybe_pop_yx): 4437 __(cmp w$(1*node_size),%nargs)4413 __(cmpl $(1*node_size),%nargs) 4438 4414 __(je local_label(all_args_popped)) 4439 4415 __(pop %arg_y) 4440 __(cmp $(2*node_size),%nargs)4416 __(cmpl $(2*node_size),%nargs) 4441 4417 __(je local_label(all_args_popped)) 4442 4418 local_label(pop_arg_x): … … 4446 4422 /* by the caller, discard the reserved frame that the caller */ 4447 4423 /* pushed. */ 4448 __(cmpw %imm0_w,%nargs )4424 __(cmpw %imm0_w,%nargs_w) 4449 4425 __(je local_label(go)) 4450 __(cmp w$(nargregs*node_size),%nargs)4426 __(cmpl $(nargregs*node_size),%nargs) 4451 4427 __(ja local_label(go)) 4452 4428 __(addq $(2*node_size),%rsp) … … 4468 4444 /* lexpr count is two: set arg_y, arg_z from the */ 4469 4445 /* lexpr, maybe vpop arg_x */ 4470 2: __(cmp w$(2*node_size),%nargs)4446 2: __(cmpl $(2*node_size),%nargs) 4471 4447 __(movq -node_size*1(%imm1),%arg_y) 4472 4448 __(movq -node_size*2(%imm1),%arg_z) … … 4763 4739 __(subq $fulltag_function-fulltag_misc,%fn) 4764 4740 __(vector_length(%fn,%imm0)) 4765 __(movzwl %nargs,%nargs_l)4766 4741 4767 4742 __(subq $6<<fixnumshift,%imm0) /* imm0 = inherited arg count */ 4768 4743 __(lea (%nargs_q,%imm0),%imm1) 4769 __(cmp w $nargregs<<fixnumshift,%imm1_w)4744 __(cmpl $nargregs<<fixnumshift,%imm1_l) 4770 4745 __(jna,pt local_label(regs_only)) 4771 4746 __(pop %ra0) 4772 __(cmp w$nargregs<<fixnumshift,%nargs)4747 __(cmpl $nargregs<<fixnumshift,%nargs) 4773 4748 __(jna,pt local_label(no_insert)) 4774 4749 … … 4803 4778 __(movq misc_data_offset(%fn,%imm1),%arg_z) 4804 4779 __(addq $node_size,%imm1) 4805 __(add w$fixnum_one,%nargs)4780 __(addl $fixnum_one,%nargs) 4806 4781 __(subq $node_size,%arg_x) 4807 4782 __(movq %arg_z,(%arg_x)) … … 4830 4805 /* nargregs or fewer args were already vpushed. */ 4831 4806 /* if exactly nargregs, vpush remaining inherited vars. */ 4832 __(cmp w$nargregs<<fixnumshift,%nargs)4807 __(cmpl $nargregs<<fixnumshift,%nargs) 4833 4808 __(movl $5<<fixnumshift,%imm1_l) /* skip code, new fn */ 4834 4809 __(leaq 5<<fixnumshift(%imm0),%temp1) … … 4837 4812 __(push misc_data_offset(%fn,%imm1)) 4838 4813 __(addq $node_size,%imm1) 4839 __(add w$fixnumone,%nargs)4814 __(addl $fixnumone,%nargs) 4840 4815 __(subq $node_size,%imm0) 4841 4816 __(jnz local_label(vpush_remaining)) … … 4844 4819 /* if nargs was > 1 (and we know that it was < 3), it must have */ 4845 4820 /* been 2. Set arg_x, then vpush the remaining args. */ 4846 __(cmp w$fixnumone,%nargs)4821 __(cmpl $fixnumone,%nargs) 4847 4822 __(jle local_label(set_y_z)) 4848 4823 local_label(set_arg_x): 4849 4824 __(subq $node_size,%temp1) 4850 4825 __(movq misc_data_offset(%fn,%temp1),%arg_x) 4851 __(add w$fixnumone,%nargs)4826 __(addl $fixnumone,%nargs) 4852 4827 __(subq $fixnumone,%imm0) 4853 4828 __(jne local_label(vpush_remaining)) … … 4860 4835 __(subq $node_size,%temp1) 4861 4836 __(movq misc_data_offset(%fn,%temp1),%arg_y) 4862 __(add w$fixnumone,%nargs)4837 __(addl $fixnumone,%nargs) 4863 4838 __(subq $fixnum_one,%imm0) 4864 4839 __(jnz local_label(set_arg_x)) … … 4867 4842 __(subq $node_size,%temp1) 4868 4843 __(movq misc_data_offset(%fn,%temp1),%arg_z) 4869 __(add w$fixnumone,%nargs)4844 __(addl $fixnumone,%nargs) 4870 4845 __(subq $fixnum_one,%imm0) 4871 4846 __(jne local_label(set_arg_y)) … … 4876 4851 local_label(regs_only): 4877 4852 __(leaq 5<<fixnumshift(%imm0),%temp1) 4878 __(test w%nargs,%nargs)4853 __(testl %nargs,%nargs) 4879 4854 __(jne local_label(some_args)) 4880 4855 __(cmpw $node_size,%imm0) … … 4886 4861 __(movq misc_data_offset-(node_size*3)(%fn,%temp1),%arg_x) 4887 4862 local_label(rgo): 4888 __(addw %imm0_w,%nargs )4863 __(addw %imm0_w,%nargs_w) 4889 4864 __(jmp *misc_data_offset+(4*node_size)(%fn)) 4890 4865 local_label(some_args): 4891 __(cmp w$2*node_size,%nargs)4866 __(cmpl $2*node_size,%nargs) 4892 4867 __(jz local_label(rtwo)) 4893 4868 /* One arg was passed, could be one or two inherited args */
Note:
See TracChangeset
for help on using the changeset viewer.
