ObjFW  Diff

Differences From Artifact [32240ae7d6]:

To Artifact [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