Differences From Artifact [33d9469129]:
- File src/runtime/lookup-asm/lookup-asm-x86-win32.S — part of check-in [b527914a91] at 2013-12-06 02:35:07 on branch trunk — Add x86/Win32 assembly lookup implementation. (user: js, size: 1784) [annotate] [blame] [check-ins using]
To Artifact [a61203a836]:
- File
src/runtime/lookup-asm/lookup-asm-x86-win32.S
— part of check-in
[0c332aa2d2]
at
2013-12-27 02:07:14
on branch trunk
— Rework forwarding API and ABI.
It matches the Apple API and ABI now and the forwarding handler itself
determines whether it should forward or not.This moves handling of +[resolve{Class,Instance}Method:] to the runtime
and allows adding new kinds of forwarding without changing the runtime.Also fixes a potential stack problem in the forwarding for MIPS. (user: js, size: 1766) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
18 19 20 21 22 23 24 | .globl _objc_msg_lookup .globl _objc_msg_lookup_stret .globl _objc_msg_lookup_super .globl _objc_msg_lookup_super_stret .section .text | | | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | .globl _objc_msg_lookup .globl _objc_msg_lookup_stret .globl _objc_msg_lookup_super .globl _objc_msg_lookup_super_stret .section .text .macro generate_lookup name not_found \name: movl 4(%esp), %edx testl %edx, %edx jz ret_nil movl (%edx), %edx movl 32(%edx), %edx |
︙ | ︙ | |||
47 48 49 50 51 52 53 | jz .forward_\name ret .forward_\name: call get_eip .forward_L0_\name: | | | | | 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | jz .forward_\name ret .forward_\name: call get_eip .forward_L0_\name: addl $\not_found-.forward_L0_\name, %eax jmp *%eax .endm .macro generate_lookup_super name lookup \name: movl 4(%esp), %edx cmpl $0, (%edx) je ret_nil movl 4(%edx), %edx movl 32(%edx), %edx jmp .main_\lookup .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: call get_eip .L0: addl $nil_method-.L0, %eax |
︙ | ︙ |