Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
clean-compiler-and-rts
run-time-system
Commits
4934d2a0
Commit
4934d2a0
authored
Mar 22, 2022
by
John van Groningen
Browse files
remove old code for old descriptor format in compacting garbage collector for Intel and AMD64
parent
dd968699
Changes
4
Hide whitespace changes
Inline
Side-by-side
acompact_rmark.asm
View file @
4934d2a0
...
...
@@ -473,16 +473,15 @@ rmark_large_tuple_or_record:
and
rbx
,
rbp
jne
rmark_hnf_1
ifdef
NEW_DESCRIPTORS
mov
rbx
,
qword
ptr
neg_heap_p3
+
0
lea
rbx
,(
-
8
)[
rcx
+
rbx
]
ifdef
PIC
ifdef
PIC
movsxd
d3
,
dword
ptr
(
-
8
)[
rax
]
add
rax
,
d3
else
else
mov
eax
,
dword
ptr
(
-
8
)[
rax
]
endif
endif
mov
d3
,
rbx
and
d3
,
31
*
8
...
...
@@ -525,36 +524,6 @@ rmark_tuple_selector_node_2:
mov
qword
ptr
[
rsi
],
rcx
mov
qword
ptr
[
rdx
],
rcx
jmp
rmark_node_d1
else
rmark_small_tuple_or_record:
mov
rbx
,
qword
ptr
neg_heap_p3
lea
rbx
,(
-
8
)[
rcx
+
rbx
]
push
rcx
mov
rcx
,
rbx
and
rcx
,
31
*
8
shr
rbx
,
8
mov
ecx
,
dword
ptr
(
bit_clear_table2
)[
rcx
]
and
dword
ptr
[
rdi
+
rbx
*
4
],
ecx
mov
eax
,(
-
8
)[
rax
]
mov
rcx
,
rdx
push
rsi
mov
eax
,
4
[
rax
]
call
near
ptr
rax
pop
rsi
pop
rdx
mov
qword
ptr
[
rsi
],
rcx
mov
rbx
,
qword
ptr
pointer_compare_address
mov
qword
ptr
(
-
8
)[
rdx
],
offset
e__system__nind
mov
qword
ptr
[
rdx
],
rcx
jmp
rmark_node_d1
endif
rmark_record_selector_node_1:
je
rmark_strict_record_selector_node_1
...
...
@@ -579,7 +548,6 @@ rmark_record_selector_node_1:
cmp
word
ptr
(
-
2
)[
rbx
],
258
jbe
rmark_small_tuple_or_record
ifdef
NEW_DESCRIPTORS
mov
d2
,
qword
ptr
16
[
rdx
]
mov
rbx
,
qword
ptr
neg_heap_p3
+
0
...
...
@@ -646,9 +614,6 @@ rmark_tuple_or_record_selector_node_2:
mov
qword
ptr
[
rbp
],
rcx
mov
rdx
,
rbp
jmp
rmark_node_d1
else
jmp
rmark_large_tuple_or_record
endif
rmark_strict_record_selector_node_1:
mov
rbp
,
rbx
...
...
@@ -701,12 +666,11 @@ rmark_select_from_small_record:
cmp
rcx
,
qword
ptr
pointer_compare_address
+
0
ja
rmark_selector_pointer_not_reversed
ifdef
NEW_DESCRIPTORS
ifdef
PIC
ifdef
PIC
movzx
eax
,
word
ptr
(
4
-
8
)[
rbx
]
else
else
movzx
eax
,
word
ptr
4
[
rbx
]
endif
endif
cmp
rax
,
16
jle
rmark_strict_record_selector_node_2
mov
rax
,
qword
ptr
(
-
24
)[
d2
+
rax
]
...
...
@@ -716,11 +680,11 @@ rmark_strict_record_selector_node_2:
rmark_strict_record_selector_node_3:
mov
qword
ptr
8
[
rcx
],
rax
ifdef
PIC
ifdef
PIC
movzx
eax
,
word
ptr
(
6
-
8
)[
rbx
]
else
else
movzx
eax
,
word
ptr
6
[
rbx
]
endif
endif
test
rax
,
rax
je
rmark_strict_record_selector_node_5
cmp
rax
,
16
...
...
@@ -732,34 +696,23 @@ rmark_strict_record_selector_node_4:
mov
qword
ptr
16
[
rcx
],
rax
rmark_strict_record_selector_node_5:
ifdef
PIC
ifdef
PIC
mov
rax
,
qword
ptr
((
-
8
)
-
8
)[
rbx
]
else
mov
rax
,
qword
ptr
(
-
8
)[
rbx
]
endif
else
mov
qword
ptr
[
rcx
],
rax
mov
qword
ptr
[
rsi
],
rcx
push
rsi
mov
ebx
,
4
[
rbx
]
call
near
ptr
rbx
pop
rsi
mov
rax
,
qword
ptr
[
rcx
]
mov
rax
,
qword
ptr
(
-
8
)[
rbx
]
endif
add
rsi
,
1
mov
qword
ptr
[
rcx
],
rsi
mov
qword
ptr
(
-
1
)[
rsi
],
rax
jmp
rmark_next_node
rmark_selector_pointer_not_reversed:
ifdef
NEW_DESCRIPTORS
ifdef
PIC
ifdef
PIC
movzx
eax
,
word
ptr
(
4
-
8
)[
rbx
]
else
else
movzx
eax
,
word
ptr
4
[
rbx
]
endif
endif
cmp
rax
,
16
jle
rmark_strict_record_selector_node_6
mov
rax
,
qword
ptr
(
-
24
)[
d2
+
rax
]
...
...
@@ -769,11 +722,11 @@ rmark_strict_record_selector_node_6:
rmark_strict_record_selector_node_7:
mov
qword
ptr
8
[
rcx
],
rax
ifdef
PIC
ifdef
PIC
movzx
eax
,
word
ptr
(
6
-
8
)[
rbx
]
else
else
movzx
eax
,
word
ptr
6
[
rbx
]
endif
endif
test
rax
,
rax
je
rmark_strict_record_selector_node_9
cmp
rax
,
16
...
...
@@ -785,16 +738,12 @@ rmark_strict_record_selector_node_8:
mov
qword
ptr
16
[
rcx
],
rax
rmark_strict_record_selector_node_9:
ifdef
PIC
ifdef
PIC
mov
rax
,
qword
ptr
((
-
8
)
-
8
)[
rbx
]
else
mov
rax
,
qword
ptr
(
-
8
)[
rbx
]
endif
mov
qword
ptr
[
rcx
],
rax
else
mov
ebx
,
4
[
rbx
]
call
near
ptr
rbx
mov
rax
,
qword
ptr
(
-
8
)[
rbx
]
endif
mov
qword
ptr
[
rcx
],
rax
jmp
rmark_next_node
rmark_reverse_and_mark_next_node:
...
...
@@ -898,11 +847,8 @@ rmark_hnf_0:
endif
and
dword
ptr
[
rdi
+
rbp
*
4
],
edx
ifdef
NEW_DESCRIPTORS
lea
rdx
,((
-
8
)
-
2
)[
rax
]
else
lea
rdx
,((
-
12
)
-
2
)[
rax
]
endif
mov
qword
ptr
[
rsi
],
rdx
cmp
rcx
,
rbx
ja
rmark_next_node
...
...
acompact_rmarkr.asm
View file @
4934d2a0
...
...
@@ -390,18 +390,17 @@ rmarkr_large_tuple_or_record:
pop
rax
jne
rmarkr_hnf_1
ifdef
NEW_DESCRIPTORS
mov
rbx
,
qword
ptr
neg_heap_p3
+
0
lea
rbx
,(
-
8
)[
rcx
+
rbx
]
push
rcx
ifdef
PIC
ifdef
PIC
movsxd
rcx
,
dword
ptr
(
-
8
)[
rax
]
add
rax
,
rcx
else
else
mov
eax
,
dword
ptr
(
-
8
)[
rax
]
endif
endif
mov
rcx
,
rbx
and
rcx
,
31
*
8
...
...
@@ -445,33 +444,6 @@ rmarkr_tuple_selector_node_2:
endif
mov
qword
ptr
[
rdx
],
rcx
jmp
rmarkr_node
else
rmarkr_small_tuple_or_record:
mov
rbx
,
qword
ptr
neg_heap_p3
+
0
lea
rbx
,(
-
8
)[
rcx
+
rbx
]
push
rcx
mov
rcx
,
rbx
and
rcx
,
31
*
8
shr
rbx
,
8
mov
ecx
,
dword
ptr
(
bit_clear_table2
)[
rcx
]
and
dword
ptr
[
rdi
+
rbx
*
4
],
ecx
mov
eax
,(
-
8
)[
rax
]
mov
rcx
,
rdx
push
rbp
mov
eax
,
4
[
rax
]
call
near
ptr
rax
pop
rbp
pop
rdx
mov
qword
ptr
(
-
8
)[
rdx
],
offset
e__system__nind
mov
qword
ptr
[
rdx
],
rcx
jmp
rmarkr_node
endif
rmarkr_record_selector_node_1:
je
rmarkr_strict_record_selector_node_1
...
...
@@ -499,7 +471,6 @@ rmarkr_record_selector_node_1:
je
rmarkr_hnf_1
cmp
word
ptr
(
-
2
)[
rbx
],
258
ifdef
NEW_DESCRIPTORS
jbe
rmarkr_small_tuple_or_record
mov
rbx
,
qword
ptr
16
[
rdx
]
...
...
@@ -565,10 +536,6 @@ rmarkr_tuple_or_record_selector_node_2:
endif
mov
qword
ptr
[
rdx
],
rcx
jmp
rmarkr_node
else
jbe
rmarkr_small_tuple_or_record
jmp
rmarkr_large_tuple_or_record
endif
rmarkr_strict_record_selector_node_1:
push
rax
...
...
@@ -626,12 +593,11 @@ rmarkr_select_from_small_record:
endif
sub
rcx
,
8
ifdef
NEW_DESCRIPTORS
ifdef
PIC
ifdef
PIC
movzx
ebx
,
word
ptr
(
4
-
8
)[
rax
]
else
else
movzx
ebx
,
word
ptr
4
[
rax
]
endif
endif
cmp
rbx
,
16
jle
rmarkr_strict_record_selector_node_2
add
rbx
,
qword
ptr
16
[
rdx
]
...
...
@@ -642,11 +608,11 @@ rmarkr_strict_record_selector_node_2:
rmarkr_strict_record_selector_node_3:
mov
qword
ptr
8
[
rcx
],
rbx
ifdef
PIC
ifdef
PIC
movzx
ebx
,
word
ptr
(
6
-
8
)[
rax
]
else
else
movzx
ebx
,
word
ptr
6
[
rax
]
endif
endif
test
rbx
,
rbx
je
rmarkr_strict_record_selector_node_5
cmp
rbx
,
16
...
...
@@ -658,16 +624,12 @@ rmarkr_strict_record_selector_node_4:
mov
qword
ptr
16
[
rcx
],
rbx
rmarkr_strict_record_selector_node_5:
ifdef
PIC
ifdef
PIC
mov
rax
,
qword
ptr
((
-
8
)
-
8
)[
rbx
]
else
mov
rax
,
qword
ptr
(
-
8
)[
rbx
]
endif
mov
qword
ptr
[
rcx
],
rax
else
mov
eax
,
4
[
rax
]
call
near
ptr
rax
mov
rax
,
qword
ptr
(
-
8
)[
rbx
]
endif
mov
qword
ptr
[
rcx
],
rax
jmp
rmarkr_next_node
; a2,d1: free
...
...
@@ -778,11 +740,7 @@ rmarkr_hnf_0:
endif
and
dword
ptr
[
rdi
+
rbx
*
4
],
ecx
ifdef
NEW_DESCRIPTORS
lea
rcx
,((
-
8
)
-
2
)[
rax
]
else
lea
rcx
,((
-
12
)
-
2
)[
rax
]
endif
jmp
rmarkr_next_node_after_static
rmarkr_int_3:
...
...
icompact_rmark.s
View file @
4934d2a0
...
...
@@ -491,7 +491,6 @@ rmark_large_tuple_or_record:
jc
rmark_hnf_1
#endif
#ifdef NEW_DESCRIPTORS
movl
neg_heap_p3
,
d1
lea
-
4
(
a0
,
d1
),
d1
...
...
@@ -526,39 +525,6 @@ rmark_tuple_selector_node_2:
movl
$e__system__nind
,-
4
(
a1
)
movl
a0
,(
a1
)
jmp
rmark_node_d1
#else
rmark_small_tuple_or_record
:
movl
neg_heap_p3
,
d1
lea
-
4
(
a0
,
d1
),
d1
pushl
a0
# ifdef NO_BIT_INSTRUCTIONS
movl
d1
,
a0
andl
$
31
*
4
,
a0
shrl
$
7
,
d1
movl
bit_clear_table
(
a0
),
a0
andl
a0
,(
a4
,
d1
,
4
)
# else
shrl
$
2
,
d1
btr
d1
,(
a4
)
# endif
movl
-
8
(
d0
),
d0
movl
a1
,
a0
pushl
a3
call
*
4
(
d0
)
pop
a3
pop
a1
movl
a0
,(
a3
)
movl
pointer_compare_address
,
d1
movl
$e__system__nind
,-
4
(
a1
)
movl
a0
,(
a1
)
jmp
rmark_node_d1
#endif
rmark_record_selector_node_1
:
je
rmark_strict_record_selector_node_1
...
...
@@ -580,7 +546,6 @@ rmark_record_selector_node_1:
je
rmark_hnf_1
cmpw
$
258
,-
2
(
d1
)
#ifdef NEW_DESCRIPTORS
jbe
rmark_small_tuple_or_record
movl
8
(
a1
),
d1
...
...
@@ -623,10 +588,6 @@ rmark_tuple_or_record_selector_node_2:
movl
$e__system__nind
,-
4
(
a1
)
movl
a0
,(
a1
)
jmp
rmark_node_d1
#else
jbe
rmark_small_tuple_or_record
jmp
rmark_large_tuple_or_record
#endif
rmark_strict_record_selector_node_1
:
#ifdef NO_BIT_INSTRUCTIONS
...
...
@@ -671,7 +632,6 @@ rmark_select_from_small_record:
cmpl
pointer_compare_address
,
a0
ja
rmark_selector_pointer_not_reversed
#ifdef NEW_DESCRIPTORS
movzwl
4
(
d1
),
d0
cmpl
$
8
,
d0
jle
rmark_strict_record_selector_node_2
...
...
@@ -696,23 +656,12 @@ rmark_strict_record_selector_node_4:
rmark_strict_record_selector_node_5
:
movl
-
4
(
d1
),
d0
#else
movl
d0
,(
a0
)
movl
a0
,(
a3
)
pushl
a3
call
*
4
(
d1
)
popl
a3
movl
(
a0
),
d0
#endif
addl
$
1
,
a3
movl
a3
,(
a0
)
movl
d0
,-
1
(
a3
)
jmp
rmark_next_node
rmark_selector_pointer_not_reversed
:
#ifdef NEW_DESCRIPTORS
movzwl
4
(
d1
),
d0
cmpl
$
8
,
d0
jle
rmark_strict_record_selector_node_6
...
...
@@ -738,9 +687,6 @@ rmark_strict_record_selector_node_9:
movl
-
4
(
d1
),
d0
movl
d0
,(
a0
)
#else
call
*
4
(
d1
)
#endif
jmp
rmark_next_node
rmark_reverse_and_mark_next_node
:
...
...
icompact_rmarkr.s
View file @
4934d2a0
...
...
@@ -395,7 +395,6 @@ rmarkr_large_tuple_or_record:
jc
rmarkr_hnf_1
#endif
#ifdef NEW_DESCRIPTORS
movl
neg_heap_p3
,
d1
lea
-
4
(
a0
,
d1
),
d1
...
...
@@ -426,36 +425,6 @@ rmarkr_tuple_selector_node_2:
movl
$e__system__nind
,-
4
(
a1
)
movl
a0
,(
a1
)
jmp
rmarkr_node
#else
rmarkr_small_tuple_or_record
:
movl
neg_heap_p3
,
d1
lea
-
4
(
a0
,
d1
),
d1
push
a0
#ifdef NO_BIT_INSTRUCTIONS
movl
d1
,
a0
andl
$
31
*
4
,
a0
shrl
$
7
,
d1
movl
bit_clear_table
(
a0
),
a0
andl
a0
,(
a4
,
d1
,
4
)
#else
shrl
$
2
,
d1
btr
d1
,(
a4
)
#endif
movl
-
8
(
d0
),
d0
movl
a1
,
a0
push
a2
call
*
4
(
d0
)
pop
a2
pop
a1
movl
$e__system__nind
,-
4
(
a1
)
movl
a0
,(
a1
)
jmp
rmarkr_node
#endif
rmarkr_record_selector_node_1
:
je
rmarkr_strict_record_selector_node_1
...
...
@@ -479,7 +448,6 @@ rmarkr_record_selector_node_1:
je
rmarkr_hnf_1
cmpw
$
258
,-
2
(
d1
)
#ifdef NEW_DESCRIPTORS
jbe
rmarkr_small_tuple_or_record
movl
8
(
a1
),
d1
...
...
@@ -521,10 +489,6 @@ rmarkr_tuple_or_record_selector_node_2:
movl
$e__system__nind
,-
4
(
a1
)
movl
a0
,(
a1
)
jmp
rmarkr_node
#else
jbe
rmarkr_small_tuple_or_record
jmp
rmarkr_large_tuple_or_record
#endif
rmarkr_strict_record_selector_node_1
:
#ifdef NO_BIT_INSTRUCTIONS
...
...
@@ -570,7 +534,6 @@ rmarkr_select_from_small_record:
movl
-
8
(
d0
),
d0
subl
$
4
,
a0
#ifdef NEW_DESCRIPTORS
movzwl
4
(
d0
),
d1
cmpl
$
8
,
d1
jle
rmarkr_strict_record_selector_node_2
...
...
@@ -596,9 +559,6 @@ rmarkr_strict_record_selector_node_5:
movl
-
4
(
d0
),
d0
movl
d0
,(
a0
)
#else
call
*
4
(
d0
)
#endif
jmp
rmarkr_next_node
/
a2
,
d1
:
free
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment