Skip to content

Commit fa5a530

Browse files
committed
Inline as_nsstring
1 parent a38bf76 commit fa5a530

File tree

8 files changed

+179
-246
lines changed

8 files changed

+179
-246
lines changed

objc2-foundation/src/__string_macro.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ impl CFStringAscii {
4444
}
4545
}
4646

47+
#[inline]
4748
pub const fn as_nsstring(&self) -> &NSString {
4849
unsafe { &*(self as *const Self as *const NSString) }
4950
}
@@ -71,6 +72,7 @@ impl CFStringUtf16 {
7172
}
7273
}
7374

75+
#[inline]
7476
pub const fn as_nsstring(&self) -> &NSString {
7577
unsafe { &*(self as *const Self as *const NSString) }
7678
}

test-assembly/crates/test_ns_string/expected/apple-aarch64.s

Lines changed: 33 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,21 @@ Lloh1:
1010
add x0, x0, l___unnamed_1@PAGEOFF
1111
mov w1, #3
1212
bl SYM(objc2_foundation::__string_macro::is_ascii_no_nul::GENERATED_ID, 0)
13-
tbz w0, #0, LBB0_2
1413
Lloh2:
15-
adrp x0, SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 0)@PAGE
14+
adrp x8, SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 0)@PAGE
1615
Lloh3:
17-
add x0, x0, SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 0)@PAGEOFF
18-
ldp x29, x30, [sp], #16
19-
b SYM(objc2_foundation::__string_macro::CFStringAscii::as_nsstring::GENERATED_ID, 0)
20-
LBB0_2:
16+
add x8, x8, SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 0)@PAGEOFF
2117
Lloh4:
22-
adrp x0, SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 1)@PAGE
18+
adrp x9, SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 1)@PAGE
2319
Lloh5:
24-
add x0, x0, SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 1)@PAGEOFF
20+
add x9, x9, SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 1)@PAGEOFF
21+
cmp w0, #0
22+
csel x0, x9, x8, ne
2523
ldp x29, x30, [sp], #16
26-
b SYM(objc2_foundation::__string_macro::CFStringUtf16::as_nsstring::GENERATED_ID, 0)
27-
.loh AdrpAdd Lloh0, Lloh1
28-
.loh AdrpAdd Lloh2, Lloh3
24+
ret
2925
.loh AdrpAdd Lloh4, Lloh5
26+
.loh AdrpAdd Lloh2, Lloh3
27+
.loh AdrpAdd Lloh0, Lloh1
3028

3129
.globl _get_utf16
3230
.p2align 2
@@ -39,23 +37,21 @@ Lloh7:
3937
add x0, x0, l___unnamed_2@PAGEOFF
4038
mov w1, #5
4139
bl SYM(objc2_foundation::__string_macro::is_ascii_no_nul::GENERATED_ID, 0)
42-
tbz w0, #0, LBB1_2
4340
Lloh8:
44-
adrp x0, SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 0)@PAGE
41+
adrp x8, SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 0)@PAGE
4542
Lloh9:
46-
add x0, x0, SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 0)@PAGEOFF
47-
ldp x29, x30, [sp], #16
48-
b SYM(objc2_foundation::__string_macro::CFStringAscii::as_nsstring::GENERATED_ID, 0)
49-
LBB1_2:
43+
add x8, x8, SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 0)@PAGEOFF
5044
Lloh10:
51-
adrp x0, SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 1)@PAGE
45+
adrp x9, SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 1)@PAGE
5246
Lloh11:
53-
add x0, x0, SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 1)@PAGEOFF
47+
add x9, x9, SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 1)@PAGEOFF
48+
cmp w0, #0
49+
csel x0, x9, x8, ne
5450
ldp x29, x30, [sp], #16
55-
b SYM(objc2_foundation::__string_macro::CFStringUtf16::as_nsstring::GENERATED_ID, 0)
56-
.loh AdrpAdd Lloh6, Lloh7
57-
.loh AdrpAdd Lloh8, Lloh9
51+
ret
5852
.loh AdrpAdd Lloh10, Lloh11
53+
.loh AdrpAdd Lloh8, Lloh9
54+
.loh AdrpAdd Lloh6, Lloh7
5955

6056
.globl _get_with_nul
6157
.p2align 2
@@ -68,23 +64,21 @@ Lloh13:
6864
add x0, x0, l___unnamed_3@PAGEOFF
6965
mov w1, #6
7066
bl SYM(objc2_foundation::__string_macro::is_ascii_no_nul::GENERATED_ID, 0)
71-
tbz w0, #0, LBB2_2
7267
Lloh14:
73-
adrp x0, SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 0)@PAGE
68+
adrp x8, SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 0)@PAGE
7469
Lloh15:
75-
add x0, x0, SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 0)@PAGEOFF
76-
ldp x29, x30, [sp], #16
77-
b SYM(objc2_foundation::__string_macro::CFStringAscii::as_nsstring::GENERATED_ID, 0)
78-
LBB2_2:
70+
add x8, x8, SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 0)@PAGEOFF
7971
Lloh16:
80-
adrp x0, SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 1)@PAGE
72+
adrp x9, SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 1)@PAGE
8173
Lloh17:
82-
add x0, x0, SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 1)@PAGEOFF
74+
add x9, x9, SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 1)@PAGEOFF
75+
cmp w0, #0
76+
csel x0, x9, x8, ne
8377
ldp x29, x30, [sp], #16
84-
b SYM(objc2_foundation::__string_macro::CFStringUtf16::as_nsstring::GENERATED_ID, 0)
85-
.loh AdrpAdd Lloh12, Lloh13
86-
.loh AdrpAdd Lloh14, Lloh15
78+
ret
8779
.loh AdrpAdd Lloh16, Lloh17
80+
.loh AdrpAdd Lloh14, Lloh15
81+
.loh AdrpAdd Lloh12, Lloh13
8882

8983
.section __DATA,__const
9084
.globl _EMPTY
@@ -166,7 +160,7 @@ l___unnamed_8:
166160

167161
.section __DATA,__cfstring
168162
.p2align 3
169-
SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 0):
163+
SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 1):
170164
.quad ___CFConstantStringClassReference
171165
.asciz "\310\007\000\000\000\000\000"
172166
.quad l___unnamed_8
@@ -179,7 +173,7 @@ l___unnamed_9:
179173

180174
.section __DATA,__cfstring
181175
.p2align 3
182-
SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 1):
176+
SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 0):
183177
.quad ___CFConstantStringClassReference
184178
.asciz "\320\007\000\000\000\000\000"
185179
.quad l___unnamed_9
@@ -191,7 +185,7 @@ l___unnamed_10:
191185

192186
.section __DATA,__cfstring
193187
.p2align 3
194-
SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 0):
188+
SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 1):
195189
.quad ___CFConstantStringClassReference
196190
.asciz "\310\007\000\000\000\000\000"
197191
.quad l___unnamed_10
@@ -204,7 +198,7 @@ l___unnamed_11:
204198

205199
.section __DATA,__cfstring
206200
.p2align 3
207-
SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 1):
201+
SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 0):
208202
.quad ___CFConstantStringClassReference
209203
.asciz "\320\007\000\000\000\000\000"
210204
.quad l___unnamed_11
@@ -216,7 +210,7 @@ l___unnamed_12:
216210

217211
.section __DATA,__cfstring
218212
.p2align 3
219-
SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 0):
213+
SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 1):
220214
.quad ___CFConstantStringClassReference
221215
.asciz "\310\007\000\000\000\000\000"
222216
.quad l___unnamed_12
@@ -229,7 +223,7 @@ l___unnamed_13:
229223

230224
.section __DATA,__cfstring
231225
.p2align 3
232-
SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 1):
226+
SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 0):
233227
.quad ___CFConstantStringClassReference
234228
.asciz "\320\007\000\000\000\000\000"
235229
.quad l___unnamed_13

test-assembly/crates/test_ns_string/expected/apple-armv7.s

Lines changed: 30 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,18 @@ _get_ascii:
1212
LPC0_0:
1313
add r0, pc, r0
1414
bl SYM(objc2_foundation::__string_macro::is_ascii_no_nul::GENERATED_ID, 0)
15+
movw r2, :lower16:(SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 0)-(LPC0_1+8))
1516
cmp r0, #0
16-
beq LBB0_2
17-
movw r0, :lower16:(SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 0)-(LPC0_2+8))
18-
movt r0, :upper16:(SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 0)-(LPC0_2+8))
19-
LPC0_2:
20-
add r0, pc, r0
21-
pop {r7, lr}
22-
b SYM(objc2_foundation::__string_macro::CFStringAscii::as_nsstring::GENERATED_ID, 0)
23-
LBB0_2:
24-
movw r0, :lower16:(SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 1)-(LPC0_1+8))
25-
movt r0, :upper16:(SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 1)-(LPC0_1+8))
17+
movt r2, :upper16:(SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 0)-(LPC0_1+8))
18+
movw r1, :lower16:(SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 1)-(LPC0_2+8))
19+
movt r1, :upper16:(SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 1)-(LPC0_2+8))
2620
LPC0_1:
27-
add r0, pc, r0
28-
pop {r7, lr}
29-
b SYM(objc2_foundation::__string_macro::CFStringUtf16::as_nsstring::GENERATED_ID, 0)
21+
add r2, pc, r2
22+
LPC0_2:
23+
add r1, pc, r1
24+
movne r1, r2
25+
mov r0, r1
26+
pop {r7, pc}
3027

3128
.globl _get_utf16
3229
.p2align 2
@@ -40,21 +37,18 @@ _get_utf16:
4037
LPC1_0:
4138
add r0, pc, r0
4239
bl SYM(objc2_foundation::__string_macro::is_ascii_no_nul::GENERATED_ID, 0)
40+
movw r2, :lower16:(SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 0)-(LPC1_1+8))
4341
cmp r0, #0
44-
beq LBB1_2
45-
movw r0, :lower16:(SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 0)-(LPC1_2+8))
46-
movt r0, :upper16:(SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 0)-(LPC1_2+8))
47-
LPC1_2:
48-
add r0, pc, r0
49-
pop {r7, lr}
50-
b SYM(objc2_foundation::__string_macro::CFStringAscii::as_nsstring::GENERATED_ID, 0)
51-
LBB1_2:
52-
movw r0, :lower16:(SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 1)-(LPC1_1+8))
53-
movt r0, :upper16:(SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 1)-(LPC1_1+8))
42+
movt r2, :upper16:(SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 0)-(LPC1_1+8))
43+
movw r1, :lower16:(SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 1)-(LPC1_2+8))
44+
movt r1, :upper16:(SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 1)-(LPC1_2+8))
5445
LPC1_1:
55-
add r0, pc, r0
56-
pop {r7, lr}
57-
b SYM(objc2_foundation::__string_macro::CFStringUtf16::as_nsstring::GENERATED_ID, 0)
46+
add r2, pc, r2
47+
LPC1_2:
48+
add r1, pc, r1
49+
movne r1, r2
50+
mov r0, r1
51+
pop {r7, pc}
5852

5953
.globl _get_with_nul
6054
.p2align 2
@@ -68,21 +62,18 @@ _get_with_nul:
6862
LPC2_0:
6963
add r0, pc, r0
7064
bl SYM(objc2_foundation::__string_macro::is_ascii_no_nul::GENERATED_ID, 0)
65+
movw r2, :lower16:(SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 0)-(LPC2_1+8))
7166
cmp r0, #0
72-
beq LBB2_2
73-
movw r0, :lower16:(SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 0)-(LPC2_2+8))
74-
movt r0, :upper16:(SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 0)-(LPC2_2+8))
75-
LPC2_2:
76-
add r0, pc, r0
77-
pop {r7, lr}
78-
b SYM(objc2_foundation::__string_macro::CFStringAscii::as_nsstring::GENERATED_ID, 0)
79-
LBB2_2:
80-
movw r0, :lower16:(SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 1)-(LPC2_1+8))
81-
movt r0, :upper16:(SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 1)-(LPC2_1+8))
67+
movt r2, :upper16:(SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 0)-(LPC2_1+8))
68+
movw r1, :lower16:(SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 1)-(LPC2_2+8))
69+
movt r1, :upper16:(SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 1)-(LPC2_2+8))
8270
LPC2_1:
83-
add r0, pc, r0
84-
pop {r7, lr}
85-
b SYM(objc2_foundation::__string_macro::CFStringUtf16::as_nsstring::GENERATED_ID, 0)
71+
add r2, pc, r2
72+
LPC2_2:
73+
add r1, pc, r1
74+
movne r1, r2
75+
mov r0, r1
76+
pop {r7, pc}
8677

8778
.section __DATA,__const
8879
.globl _EMPTY

test-assembly/crates/test_ns_string/expected/apple-armv7s.s

Lines changed: 27 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,17 @@ _get_ascii:
1212
LPC0_0:
1313
add r0, pc, r0
1414
bl SYM(objc2_foundation::__string_macro::is_ascii_no_nul::GENERATED_ID, 0)
15+
movw r2, :lower16:(SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 0)-(LPC0_1+8))
1516
cmp r0, #0
16-
beq LBB0_2
17-
movw r0, :lower16:(SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 0)-(LPC0_2+8))
18-
movt r0, :upper16:(SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 0)-(LPC0_2+8))
19-
LPC0_2:
20-
add r0, pc, r0
21-
bl SYM(objc2_foundation::__string_macro::CFStringAscii::as_nsstring::GENERATED_ID, 0)
22-
pop {r7, pc}
23-
LBB0_2:
24-
movw r0, :lower16:(SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 1)-(LPC0_1+8))
25-
movt r0, :upper16:(SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 1)-(LPC0_1+8))
17+
movt r2, :upper16:(SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 0)-(LPC0_1+8))
18+
movw r1, :lower16:(SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 1)-(LPC0_2+8))
19+
movt r1, :upper16:(SYM(test_ns_string[CRATE_ID]::get_ascii::CFSTRING, 1)-(LPC0_2+8))
2620
LPC0_1:
27-
add r0, pc, r0
28-
bl SYM(objc2_foundation::__string_macro::CFStringUtf16::as_nsstring::GENERATED_ID, 0)
21+
add r2, pc, r2
22+
LPC0_2:
23+
add r1, pc, r1
24+
movne r1, r2
25+
mov r0, r1
2926
pop {r7, pc}
3027

3128
.globl _get_utf16
@@ -40,20 +37,17 @@ _get_utf16:
4037
LPC1_0:
4138
add r0, pc, r0
4239
bl SYM(objc2_foundation::__string_macro::is_ascii_no_nul::GENERATED_ID, 0)
40+
movw r2, :lower16:(SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 0)-(LPC1_1+8))
4341
cmp r0, #0
44-
beq LBB1_2
45-
movw r0, :lower16:(SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 0)-(LPC1_2+8))
46-
movt r0, :upper16:(SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 0)-(LPC1_2+8))
47-
LPC1_2:
48-
add r0, pc, r0
49-
bl SYM(objc2_foundation::__string_macro::CFStringAscii::as_nsstring::GENERATED_ID, 0)
50-
pop {r7, pc}
51-
LBB1_2:
52-
movw r0, :lower16:(SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 1)-(LPC1_1+8))
53-
movt r0, :upper16:(SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 1)-(LPC1_1+8))
42+
movt r2, :upper16:(SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 0)-(LPC1_1+8))
43+
movw r1, :lower16:(SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 1)-(LPC1_2+8))
44+
movt r1, :upper16:(SYM(test_ns_string[CRATE_ID]::get_utf16::CFSTRING, 1)-(LPC1_2+8))
5445
LPC1_1:
55-
add r0, pc, r0
56-
bl SYM(objc2_foundation::__string_macro::CFStringUtf16::as_nsstring::GENERATED_ID, 0)
46+
add r2, pc, r2
47+
LPC1_2:
48+
add r1, pc, r1
49+
movne r1, r2
50+
mov r0, r1
5751
pop {r7, pc}
5852

5953
.globl _get_with_nul
@@ -68,20 +62,17 @@ _get_with_nul:
6862
LPC2_0:
6963
add r0, pc, r0
7064
bl SYM(objc2_foundation::__string_macro::is_ascii_no_nul::GENERATED_ID, 0)
65+
movw r2, :lower16:(SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 0)-(LPC2_1+8))
7166
cmp r0, #0
72-
beq LBB2_2
73-
movw r0, :lower16:(SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 0)-(LPC2_2+8))
74-
movt r0, :upper16:(SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 0)-(LPC2_2+8))
75-
LPC2_2:
76-
add r0, pc, r0
77-
bl SYM(objc2_foundation::__string_macro::CFStringAscii::as_nsstring::GENERATED_ID, 0)
78-
pop {r7, pc}
79-
LBB2_2:
80-
movw r0, :lower16:(SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 1)-(LPC2_1+8))
81-
movt r0, :upper16:(SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 1)-(LPC2_1+8))
67+
movt r2, :upper16:(SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 0)-(LPC2_1+8))
68+
movw r1, :lower16:(SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 1)-(LPC2_2+8))
69+
movt r1, :upper16:(SYM(test_ns_string[CRATE_ID]::get_with_nul::CFSTRING, 1)-(LPC2_2+8))
8270
LPC2_1:
83-
add r0, pc, r0
84-
bl SYM(objc2_foundation::__string_macro::CFStringUtf16::as_nsstring::GENERATED_ID, 0)
71+
add r2, pc, r2
72+
LPC2_2:
73+
add r1, pc, r1
74+
movne r1, r2
75+
mov r0, r1
8576
pop {r7, pc}
8677

8778
.section __DATA,__const

0 commit comments

Comments
 (0)