1 ! Copyright (C) 2020 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: bootstrap.image.private compiler.codegen.relocation
4 compiler.constants compiler.units cpu.arm.assembler
5 cpu.arm.assembler.opcodes generic.single.private
6 kernel kernel.private layouts locals.backend
7 math math.private memory namespaces sequences slots.private
8 strings.private threads.private vocabs ;
13 : ds-reg ( -- reg ) X5 ;
14 : rs-reg ( -- reg ) X6 ;
16 ! caller-saved registers X9-X15
17 ! callee-saved registers X19-X29
18 : temp0 ( -- reg ) X9 ;
19 : temp1 ( -- reg ) X10 ;
20 : temp2 ( -- reg ) X11 ;
21 : temp3 ( -- reg ) X12 ;
25 ] JIT-SAFEPOINT jit-define
28 ] JIT-PRIMITIVE jit-define
31 ] JIT-WORD-JUMP jit-define
34 ] PIC-CHECK-TUPLE jit-define
37 ] CALLBACK-STUB jit-define
40 ] JIT-PUSH-LITERAL jit-define
43 ] JIT-WORD-CALL jit-define
49 1 bootstrap-cells rs-reg rs-reg ADDi64
50 -1 bootstrap-cells ds-reg rs-reg LDR-post ;
53 1 bootstrap-cells ds-reg ds-reg ADDi64
54 -1 bootstrap-cells rs-reg ds-reg LDR-post ;
57 1 bootstrap-cells rs-reg rs-reg ADDi64
58 -1 bootstrap-cells ds-reg rs-reg LDR-post
59 1 bootstrap-cells rs-reg rs-reg ADDi64
60 -1 bootstrap-cells ds-reg rs-reg LDR-post ;
63 1 bootstrap-cells ds-reg ds-reg ADDi64
64 -1 bootstrap-cells rs-reg ds-reg LDR-post
65 1 bootstrap-cells ds-reg ds-reg ADDi64
66 -1 bootstrap-cells rs-reg ds-reg LDR-post ;
69 1 bootstrap-cells rs-reg rs-reg ADDi64
70 -1 bootstrap-cells ds-reg rs-reg LDR-post
71 1 bootstrap-cells rs-reg rs-reg ADDi64
72 -1 bootstrap-cells ds-reg rs-reg LDR-post
73 1 bootstrap-cells rs-reg rs-reg ADDi64
74 -1 bootstrap-cells ds-reg rs-reg LDR-post ;
77 1 bootstrap-cells ds-reg ds-reg ADDi64
78 -1 bootstrap-cells rs-reg ds-reg LDR-post
79 1 bootstrap-cells ds-reg ds-reg ADDi64
80 -1 bootstrap-cells rs-reg ds-reg LDR-post
81 1 bootstrap-cells ds-reg ds-reg ADDi64
82 -1 bootstrap-cells rs-reg ds-reg LDR-post ;
86 ! 0 CALL f rc-relative rel-word
97 ] JIT-EXECUTE jit-define
100 ] JIT-PROLOG jit-define
103 ] JIT-EPILOG jit-define
106 ] JIT-RETURN jit-define
109 ! ! ! Polymorphic inline caches
110 ! The PIC stubs are not permitted to touch pic-tail-reg.
112 ! Load a value from a stack position
114 ] PIC-LOAD jit-define
121 ] PIC-TUPLE jit-define
124 ] PIC-CHECK-TAG jit-define
130 ] MEGA-LOOKUP jit-define
149 { fixnum-shift-fast [
201 { drop [ ] } ! ds-reg SUBi64 ] } ! ds-reg bootstrap-cell SUB ] }
202 { 2drop [ ] } ! ds-reg 2 bootstrap-cells SUB ] }
203 { 3drop [ ] } ! ds-reg 3 bootstrap-cells SUB ] }
204 { 4drop [ ] } ! ds-reg 4 bootstrap-cells SUB ] }
241 { leaf-signal-handler [
247 } define-sub-primitives