]> gitweb.factorcode.org Git - factor.git/commitdiff
bootstrap.assembler: Move arm code to arm.64. We can dedup it with arm.32 someday
authorDoug Coleman <doug.coleman@gmail.com>
Sat, 5 Dec 2020 00:48:48 +0000 (18:48 -0600)
committerDoug Coleman <doug.coleman@gmail.com>
Sat, 5 Dec 2020 00:49:29 +0000 (18:49 -0600)
Add four missing special-objects that were not defined.

basis/bootstrap/assembler/arm.64.factor
basis/bootstrap/assembler/arm.factor

index 52d0bca2c32187b793b317b69ff3f8b52b39081a..1ac18aa3f7b6b354aa325f68dede7445350de5ec 100644 (file)
@@ -1,6 +1,11 @@
 ! Copyright (C) 2020 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: cpu.arm.assembler.opcodes layouts namespaces ;
+USING: bootstrap.image.private compiler.codegen.relocation
+compiler.constants compiler.units cpu.arm.assembler
+cpu.arm.assembler.opcodes generic.single.private
+kernel kernel.private layouts locals locals.backend
+math math.private memory namespaces sequences slots.private
+strings.private threads.private vocabs ;
 IN: bootstrap.arm
 
 8 \ cell set
@@ -14,3 +19,229 @@ IN: bootstrap.arm
 : temp1 ( -- reg ) X10 ;
 : temp2 ( -- reg ) X11 ;
 : temp3 ( -- reg ) X12 ;
+
+
+[
+] JIT-SAFEPOINT jit-define
+
+[
+] JIT-PRIMITIVE jit-define
+
+[
+] JIT-WORD-JUMP jit-define
+
+[
+] PIC-CHECK-TUPLE jit-define
+
+[
+] CALLBACK-STUB jit-define
+
+[
+] JIT-PUSH-LITERAL jit-define
+
+[
+] JIT-WORD-CALL jit-define
+
+[
+] JIT-IF jit-define
+
+: jit->r ( -- )
+    1 bootstrap-cells rs-reg rs-reg ADDi64
+    -1 bootstrap-cells ds-reg rs-reg LDR-post ;
+
+: jit-r> ( -- )
+    1 bootstrap-cells ds-reg ds-reg ADDi64
+    -1 bootstrap-cells rs-reg ds-reg LDR-post ;
+
+: jit-2>r ( -- )
+    1 bootstrap-cells rs-reg rs-reg ADDi64
+    -1 bootstrap-cells ds-reg rs-reg LDR-post
+    1 bootstrap-cells rs-reg rs-reg ADDi64
+    -1 bootstrap-cells ds-reg rs-reg LDR-post ;
+
+: jit-2r> ( -- )
+    1 bootstrap-cells ds-reg ds-reg ADDi64
+    -1 bootstrap-cells rs-reg ds-reg LDR-post
+    1 bootstrap-cells ds-reg ds-reg ADDi64
+    -1 bootstrap-cells rs-reg ds-reg LDR-post ;
+
+: jit-3>r ( -- )
+    1 bootstrap-cells rs-reg rs-reg ADDi64
+    -1 bootstrap-cells ds-reg rs-reg LDR-post
+    1 bootstrap-cells rs-reg rs-reg ADDi64
+    -1 bootstrap-cells ds-reg rs-reg LDR-post
+    1 bootstrap-cells rs-reg rs-reg ADDi64
+    -1 bootstrap-cells ds-reg rs-reg LDR-post ;
+
+: jit-3r> ( -- )
+    1 bootstrap-cells ds-reg ds-reg ADDi64
+    -1 bootstrap-cells rs-reg ds-reg LDR-post
+    1 bootstrap-cells ds-reg ds-reg ADDi64
+    -1 bootstrap-cells rs-reg ds-reg LDR-post
+    1 bootstrap-cells ds-reg ds-reg ADDi64
+    -1 bootstrap-cells rs-reg ds-reg LDR-post ;
+
+[
+    ! jit->r
+    ! 0 CALL f rc-relative rel-word
+    ! jit-r>
+] JIT-DIP jit-define
+
+[
+] JIT-2DIP jit-define
+
+[
+] JIT-3DIP jit-define
+
+[
+] JIT-EXECUTE jit-define
+
+[
+] JIT-PROLOG jit-define
+
+[
+] JIT-EPILOG jit-define
+
+[
+] JIT-RETURN jit-define
+
+
+! ! ! Polymorphic inline caches
+! The PIC stubs are not permitted to touch pic-tail-reg.
+
+! Load a value from a stack position
+[
+] PIC-LOAD jit-define
+
+[
+] PIC-TAG jit-define
+
+
+[
+] PIC-TUPLE jit-define
+
+[
+] PIC-CHECK-TAG jit-define
+
+[
+] PIC-HIT jit-define
+
+[
+] MEGA-LOOKUP jit-define
+
+
+{
+    ! ## Fixnums
+
+    ! ### Add
+    { fixnum+fast [
+    ] }
+
+    ! ### Bit stuff
+    { fixnum-bitand [
+    ] }
+    { fixnum-bitnot [
+    ] }
+    { fixnum-bitor [
+    ] }
+    { fixnum-bitxor [
+    ] }
+    { fixnum-shift-fast [
+    ] }
+
+    ! ### Comparisons
+    { both-fixnums? [
+    ] }
+    { eq? [
+    ] }
+    { fixnum> [
+    ] }
+    { fixnum>= [
+    ] }
+    { fixnum< [
+    ] }
+    { fixnum<= [
+    ] }
+
+    ! ### Div/mod
+    { fixnum-mod [
+    ] }
+    { fixnum/i-fast [
+    ] }
+    { fixnum/mod-fast [
+    ] }
+
+    ! ### Mul
+    { fixnum*fast [
+    ] }
+
+    ! ### Sub
+    { fixnum-fast [
+    ] }
+
+    ! ## Locals
+    { drop-locals [
+    ] }
+    { get-local [
+    ] }
+    { load-local [
+    ] }
+
+    ! ## Objects
+    { slot [
+    ] }
+    { string-nth-fast [
+    ] }
+    { tag [
+    ] }
+
+    ! ## Shufflers
+
+    ! ### Drops
+    { drop [ ] } ! ds-reg SUBi64 ] } ! ds-reg bootstrap-cell SUB ] }
+    { 2drop [ ] } ! ds-reg 2 bootstrap-cells SUB ] }
+    { 3drop [ ] } ! ds-reg 3 bootstrap-cells SUB ] }
+    { 4drop [ ] } ! ds-reg 4 bootstrap-cells SUB ] }
+
+    ! ### Dups
+    { dup [
+    ] }
+    { 2dup [
+    ] }
+    { 3dup [
+    ] }
+    { 4dup [
+    ] }
+    { dupd [
+    ] }
+
+    ! ### Misc shufflers
+    { over [
+    ] }
+    { pick [
+    ] }
+
+    ! ### Nips
+    { nip [
+    ] }
+    { 2nip [
+    ] }
+
+    ! ### Swaps
+    { -rot [
+    ] }
+    { rot [
+    ] }
+    { swap [
+    ] }
+    { swapd [
+    ] }
+
+    ! ## Signal handling
+    { leaf-signal-handler [
+    ] }
+    { signal-handler [
+    ] }
+
+
+} define-sub-primitives
index f4edc5ae5eaec4ca5914324dbe4c00c9daf7cb08..01ab19fbcb226d6c63639e0042a742a590c7d075 100644 (file)
@@ -7,218 +7,4 @@ IN: bootstrap.arm
 
 big-endian off
 
-[
-] CALLBACK-STUB jit-define
-
-[
-] JIT-PUSH-LITERAL jit-define
-
-[
-] JIT-WORD-CALL jit-define
-
-[
-] JIT-IF jit-define
-
-: jit->r ( -- )
-    1 bootstrap-cells rs-reg rs-reg ADDi64
-    -1 bootstrap-cells ds-reg rs-reg LDR-post ;
-
-: jit-r> ( -- )
-    1 bootstrap-cells ds-reg ds-reg ADDi64
-    -1 bootstrap-cells rs-reg ds-reg LDR-post ;
-
-: jit-2>r ( -- )
-    1 bootstrap-cells rs-reg rs-reg ADDi64
-    -1 bootstrap-cells ds-reg rs-reg LDR-post
-    1 bootstrap-cells rs-reg rs-reg ADDi64
-    -1 bootstrap-cells ds-reg rs-reg LDR-post ;
-
-: jit-2r> ( -- )
-    1 bootstrap-cells ds-reg ds-reg ADDi64
-    -1 bootstrap-cells rs-reg ds-reg LDR-post
-    1 bootstrap-cells ds-reg ds-reg ADDi64
-    -1 bootstrap-cells rs-reg ds-reg LDR-post ;
-
-: jit-3>r ( -- )
-    1 bootstrap-cells rs-reg rs-reg ADDi64
-    -1 bootstrap-cells ds-reg rs-reg LDR-post
-    1 bootstrap-cells rs-reg rs-reg ADDi64
-    -1 bootstrap-cells ds-reg rs-reg LDR-post
-    1 bootstrap-cells rs-reg rs-reg ADDi64
-    -1 bootstrap-cells ds-reg rs-reg LDR-post ;
-
-: jit-3r> ( -- )
-    1 bootstrap-cells ds-reg ds-reg ADDi64
-    -1 bootstrap-cells rs-reg ds-reg LDR-post
-    1 bootstrap-cells ds-reg ds-reg ADDi64
-    -1 bootstrap-cells rs-reg ds-reg LDR-post
-    1 bootstrap-cells ds-reg ds-reg ADDi64
-    -1 bootstrap-cells rs-reg ds-reg LDR-post ;
-
-[
-    ! jit->r
-    ! 0 CALL f rc-relative rel-word
-    ! jit-r>
-] JIT-DIP jit-define
-
-[
-] JIT-2DIP jit-define
-
-[
-] JIT-3DIP jit-define
-
-[
-] JIT-EXECUTE jit-define
-
-[
-] JIT-PROLOG jit-define
-
-[
-] JIT-EPILOG jit-define
-
-[
-] JIT-RETURN jit-define
-
-
-! ! ! Polymorphic inline caches
-! The PIC stubs are not permitted to touch pic-tail-reg.
-
-! Load a value from a stack position
-[
-] PIC-LOAD jit-define
-
-[
-] PIC-TAG jit-define
-
-
-[
-] PIC-TUPLE jit-define
-
-[
-] PIC-CHECK-TAG jit-define
-
-[
-] PIC-HIT jit-define
-
-[
-] MEGA-LOOKUP jit-define
-
-
-{
-    ! ## Fixnums
-
-    ! ### Add
-    { fixnum+fast [
-    ] }
-
-    ! ### Bit stuff
-    { fixnum-bitand [ 
-    ] }
-    { fixnum-bitnot [
-    ] }
-    { fixnum-bitor [
-    ] }
-    { fixnum-bitxor [
-    ] }
-    { fixnum-shift-fast [
-    ] }
-
-    ! ### Comparisons
-    { both-fixnums? [
-    ] }
-    { eq? [
-    ] }
-    { fixnum> [
-    ] }
-    { fixnum>= [
-    ] }
-    { fixnum< [
-    ] }
-    { fixnum<= [
-    ] }
-
-    ! ### Div/mod
-    { fixnum-mod [
-    ] }
-    { fixnum/i-fast [
-    ] }
-    { fixnum/mod-fast [
-    ] }
-
-    ! ### Mul
-    { fixnum*fast [
-    ] }
-
-    ! ### Sub
-    { fixnum-fast [
-    ] }
-
-    ! ## Locals
-    { drop-locals [
-    ] }
-    { get-local [
-    ] }
-    { load-local [
-    ] }
-
-    ! ## Objects
-    { slot [
-    ] }
-    { string-nth-fast [
-    ] }
-    { tag [
-    ] }
-
-    ! ## Shufflers
-
-    ! ### Drops
-    { drop [ ] } ! ds-reg SUBi64 ] } ! ds-reg bootstrap-cell SUB ] }
-    { 2drop [ ] } ! ds-reg 2 bootstrap-cells SUB ] }
-    { 3drop [ ] } ! ds-reg 3 bootstrap-cells SUB ] }
-    { 4drop [ ] } ! ds-reg 4 bootstrap-cells SUB ] }
-
-    ! ### Dups
-    { dup [
-    ] }
-    { 2dup [
-    ] }
-    { 3dup [
-    ] }
-    { 4dup [
-    ] }
-    { dupd [
-    ] }
-
-    ! ### Misc shufflers
-    { over [
-    ] }
-    { pick [
-    ] }
-
-    ! ### Nips
-    { nip [
-    ] }
-    { 2nip [
-    ] }
-
-    ! ### Swaps
-    { -rot [
-    ] }
-    { rot [
-    ] }
-    { swap [
-    ] }
-    { swapd [
-    ] }
-
-    ! ## Signal handling
-    { leaf-signal-handler [
-    ] }
-    { signal-handler [
-    ] }
-
-
-} define-sub-primitives
-
-
 ! [ "bootstrap.arm" forget-vocab ] with-compilation-unit
\ No newline at end of file