@ -1,6 +1,7 @@
.syntax unified
.fpu neon
# if ( ( _ _ A R M _ A R C H > = 7 ) | | d e f i n e d ( _ _ A R M _ A R C H _ 6 T 2 _ _ ) )
# define R E L O C _ O F F S E T 4
/ / If w e ' r e u s i n g a C P U t h a t s u p p o r t s T h u m b - 2 , u s e i t . T h i s m a k e s t h e
/ / objc_ m s g S e n d f u n c t i o n 1 3 0 b y t e s i n s t e a d o f 1 7 6 . T h e f a s t p a t h d r o p s f r o m 1 0 8
/ / bytes t o 8 2 , m e a n i n g t h a t i t w i l l f i t i n 3 3 2 - b y t e i - c a c h e l i n e s , r a t h e r
@ -18,6 +19,7 @@
ubfx \ d s t , \ s r c , #16 , #8
.endm
# else
# define R E L O C _ O F F S E T 8
.macro byte1 dst, s r c
and \ d s t , \ s r c , #0xff
.endm
@ -51,10 +53,12 @@
/ / directives f o r t h e m , b u t n o t f o r a n y o t h e r p u s h e s
tst \ r e c e i v e r , S M A L L O B J _ M A S K / / S e t s Z i f t h i s i s n o t a s m a l l i n t
ldr r4 , 7 f
6 :
add r4 , p c
itte n e
ldrne r4 , L S m a l l I n t C l a s s / / S m a l l I n t c l a s s - > r4 i f t h i s i s a s m a l l i n t
ldrne r4 , [ r4 ]
ldrne r4 , [ r4 ] / / S m a l l I n t c l a s s - > r4 i f t h i s i s a s m a l l i n t
ldreq r4 , [ \ r e c e i v e r ] / / L o a d c l a s s t o r4 i f n o t a s m a l l i n t
ldr r4 , [ r4 , #D T A B L E _ O F F S E T ] / / D t a b l e - > r 4
@ -122,6 +126,9 @@
# endif
# endif
bx l r
7 :
.long SmallObjectClasses( G O T _ P R E L ) - ( ( 6 b + R E L O C _ O F F S E T ) - 7 b )
.align 2
.fnend
.endm
@ -137,6 +144,3 @@ TYPE_DIRECTIVE(CDECL(objc_msgSend_stret), %function)
CDECL( o b j c _ m s g S e n d _ s t r e t ) :
MSGSEND r1 , r2
LSmallIntClass :
.long SmallObjectClasses
.align 2