diff --git a/objc_msgSend.arm.S b/objc_msgSend.arm.S index b3d0fe6..928b453 100644 --- a/objc_msgSend.arm.S +++ b/objc_msgSend.arm.S @@ -46,9 +46,11 @@ and r6, r5, #0xff0000 ldr r4, [r4, r6, asr#14] + ldr r4, [r4, #DTABLE_OFFSET] 1: // dtable16 and r6, r5, #0xff00 ldr r4, [r4, r6, asr#6] + ldr r4, [r4, #DTABLE_OFFSET] 2: // dtable8 and r6, r5, #0xff ldr ip, [r4, r6, asl#2] diff --git a/objc_msgSend.x86-64.S b/objc_msgSend.x86-64.S index 5d74298..d435a86 100644 --- a/objc_msgSend.x86-64.S +++ b/objc_msgSend.x86-64.S @@ -32,12 +32,14 @@ shrl $13, %r13d # Right shift 16, but then left shift by 3 *sizeof(void*) add %r13, %r12 mov (%r12), %r12 + mov DATA_OFFSET(%r12), %r12 2: # dtable16: mov %r11, %r13 and $0xff00, %r13 shrl $5, %r13d add %r13, %r12 mov (%r12), %r12 + mov DATA_OFFSET(%r12), %r12 3: # dtable8: mov %r11, %r13 and $0xff, %r13