: shift-arg ( -- reg ) ECX ;
: div-arg ( -- reg ) EAX ;
: mod-arg ( -- reg ) EDX ;
+: arg ( -- reg ) EAX ;
: temp0 ( -- reg ) EAX ;
: temp1 ( -- reg ) EDX ;
: temp2 ( -- reg ) ECX ;
IN: bootstrap.x86
: stack-frame-size ( -- n ) 4 bootstrap-cells ;
+: arg ( -- reg ) RDI ;
<< "resource:basis/cpu/x86/64/bootstrap.factor" parse-file parsed >>
call
IN: bootstrap.x86
: stack-frame-size ( -- n ) 8 bootstrap-cells ;
+: arg ( -- reg ) RCX ;
<< "resource:basis/cpu/x86/64/bootstrap.factor" parse-file parsed >>
call
! Quotations and words
[
! load from stack
- temp0 ds-reg [] MOV
+ arg ds-reg [] MOV
! pop stack
ds-reg bootstrap-cell SUB
! call quotation
- temp0 quot-xt-offset [+] JMP
+ arg quot-xt-offset [+] JMP
] f f f \ (call) define-sub-primitive
[
IN: benchmark
: run-benchmark ( vocab -- result )
- [ [ require ] [ [ run ] benchmark ] bi ] curry
- [ error. f ] recover ;
+ [ "=== " write vocab-name print flush ] [
+ [ [ require ] [ [ run ] benchmark ] bi ] curry
+ [ error. f ] recover
+ ] bi ;
: run-benchmarks ( -- assoc )
"benchmark" all-child-vocabs-seq