ObjFW  Check-in [eb007abba9]

Overview
Comment:lookup-asm-arm-elf.S: Support tagged pointers
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | tagged-pointers
Files: files | file ages | folders
SHA3-256: eb007abba97dba76c5cf77f00a3ad1b4c33223288fc996260fd3717e47e764cc
User & Date: js on 2020-07-09 00:11:00
Other Links: branch diff | manifest | tags
Context
2020-07-12
10:54
Merge trunk into branch "tagged-pointers" check-in: be250b4fb3 user: js tags: tagged-pointers
2020-07-09
00:11
lookup-asm-arm-elf.S: Support tagged pointers check-in: eb007abba9 user: js tags: tagged-pointers
2020-07-08
19:52
lookup-asm-powerpc-elf.S: Support tagged pointers check-in: a0e61a4760 user: js tags: tagged-pointers
Changes

Modified src/runtime/lookup-asm/lookup-asm-arm-elf.S from [32240ae7d6] to [39632f0f84].

26
27
28
29
30
31
32



33
34
35
36
37
38
39

.section .text
.macro generate_lookup name not_found
\name:
	cmp	r0, #0
	beq	ret_nil




	ldr	r2, [r0, #0]
	ldr	r2, [r2, #32]

.Lmain_\name:
#ifndef OF_BIG_ENDIAN
# ifdef OF_SELUID24
	ldrb	r3, [r1, #2]







>
>
>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

.section .text
.macro generate_lookup name not_found
\name:
	cmp	r0, #0
	beq	ret_nil

	tst	r0, #1
	bne	.Ltagged_pointer_\name

	ldr	r2, [r0, #0]
	ldr	r2, [r2, #32]

.Lmain_\name:
#ifndef OF_BIG_ENDIAN
# ifdef OF_SELUID24
	ldrb	r3, [r1, #2]
55
56
57
58
59
60
61














62
63




64
65
66
67
68
69
70
#endif

	cmp	r2, #0
	beq	\not_found(PLT)

	mov	r0, r2
	bx	lr














.type \name, %function
.size \name, .-\name




.endm

.macro generate_lookup_super name lookup
\name:
	mov	r2, r0
	ldr	r0, [r0, #0]
	cmp	r0, #0







>
>
>
>
>
>
>
>
>
>
>
>
>
>


>
>
>
>







58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#endif

	cmp	r2, #0
	beq	\not_found(PLT)

	mov	r0, r2
	bx	lr

.Ltagged_pointer_\name:
	ldr	r3, .Lgot$indirect_.Ltagged_pointer_\name
	ldr	r2, .Lgot$indirect_.Ltagged_pointer_\name+4
	add	r3, pc, r3

	and	r0, r0, #0xE
	lsl	r0, r0, #1

	ldr	r2, [r3, r2]
	ldr	r2, [r2, r0]
	ldr	r2, [r2, #32]

	b	.Lmain_\name
.type \name, %function
.size \name, .-\name

.Lgot$indirect_.Ltagged_pointer_\name:
	.long	_GLOBAL_OFFSET_TABLE_-(.Ltagged_pointer_\name+16)
	.long	objc_tagged_pointer_classes(GOT)
.endm

.macro generate_lookup_super name lookup
\name:
	mov	r2, r0
	ldr	r0, [r0, #0]
	cmp	r0, #0