ObjFW  Check-in [c7b4e05b47]

Overview
Comment:lookup-asm-sparc-elf.S: Minor improvements
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: c7b4e05b478ce2c1473d025056950d7982a5be40e61c982eba633fa363aae4fe
User & Date: js on 2014-06-25 21:40:57
Other Links: manifest | tags
Context
2014-06-26
00:58
OFNumber: Remove methods for arithmetic check-in: 366681bebe user: js tags: trunk
2014-06-25
21:40
lookup-asm-sparc-elf.S: Minor improvements check-in: c7b4e05b47 user: js tags: trunk
17:55
Small Android fixes check-in: 05a247fbe4 user: js tags: trunk
Changes

Modified src/runtime/lookup-asm/lookup-asm-sparc-elf.S from [ef9b28568c] to [6b3c93ab22].

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
92
93
94
95
96
97
98
99
100
101
102
.size \name, .-\name
.endm

.macro generate_lookup_super name lookup
\name:
	ld	[%o0], %o2
	cmp	%o2, 0
	beq	ret_nil
	 nop

	ld	[%o0 + 4], %o2
	ba	.Lmain_\lookup
	 ld	[%o2 + 32], %o2
.type \name, %function
.size \name, .-\name
.endm

generate_lookup objc_msg_lookup objc_method_not_found
generate_lookup objc_msg_lookup_stret objc_method_not_found_stret
generate_lookup_super objc_msg_lookup_super objc_msg_lookup
generate_lookup_super objc_msg_lookup_super_stret objc_msg_lookup_stret

ret_nil:
#ifdef PIC
	or	%o7, %g0, %o2

	sethi	%hi(_GLOBAL_OFFSET_TABLE_ - 4), %o1
	call	0f
	 add	%o1, %lo(_GLOBAL_OFFSET_TABLE_ + 4), %o1
0:
	add	%o7, %o1, %o1

	sethi	%hi(nil_method), %o0
	or	%o0, %lo(nil_method), %o0

	jmpl	%o2 + 8, %g0
	 ld	[%o1 + %o0], %o0
#else
	sethi	%hi(nil_method), %o0
	retl
	 or	%o0, %lo(nil_method), %o0
#endif








|
















|










|







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
92
93
94
95
96
97
98
99
100
101
102
.size \name, .-\name
.endm

.macro generate_lookup_super name lookup
\name:
	ld	[%o0], %o2
	cmp	%o2, 0
	beq,a	ret_nil
	 nop

	ld	[%o0 + 4], %o2
	ba	.Lmain_\lookup
	 ld	[%o2 + 32], %o2
.type \name, %function
.size \name, .-\name
.endm

generate_lookup objc_msg_lookup objc_method_not_found
generate_lookup objc_msg_lookup_stret objc_method_not_found_stret
generate_lookup_super objc_msg_lookup_super objc_msg_lookup
generate_lookup_super objc_msg_lookup_super_stret objc_msg_lookup_stret

ret_nil:
#ifdef PIC
	mov	%o7, %g1

	sethi	%hi(_GLOBAL_OFFSET_TABLE_ - 4), %o1
	call	0f
	 add	%o1, %lo(_GLOBAL_OFFSET_TABLE_ + 4), %o1
0:
	add	%o7, %o1, %o1

	sethi	%hi(nil_method), %o0
	or	%o0, %lo(nil_method), %o0

	jmpl	%g1 + 8, %g0
	 ld	[%o1 + %o0], %o0
#else
	sethi	%hi(nil_method), %o0
	retl
	 or	%o0, %lo(nil_method), %o0
#endif