55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
andb $0xE, %dl
movzbl %dl, %edx
movl _objc_tagged_pointer_classes(,%edx,2), %edx
movl 32(%edx), %edx
jmp .Lmain_\name
.endm
.macro generate_lookup_super name lookup
\name:
movl 4(%esp), %edx
movl (%edx), %eax
test %eax, %eax
jz ret_nil
movl %eax, 4(%esp)
movl 4(%edx), %edx
movl 32(%edx), %edx
jmp .Lmain_\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
|
>
>
>
>
>
>
>
>
|
55
56
57
58
59
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
|
andb $0xE, %dl
movzbl %dl, %edx
movl _objc_tagged_pointer_classes(,%edx,2), %edx
movl 32(%edx), %edx
jmp .Lmain_\name
.def \name
.scl 2
.type 32
.endef
.endm
.macro generate_lookup_super name lookup
\name:
movl 4(%esp), %edx
movl (%edx), %eax
test %eax, %eax
jz ret_nil
movl %eax, 4(%esp)
movl 4(%edx), %edx
movl 32(%edx), %edx
jmp .Lmain_\lookup
.def \name
.scl 2
.type 32
.endef
.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
|