@@ -36,18 +36,20 @@ pushl %ebx subl $20, %esp call get_eip .L0: + movl 8(%ebp), %eax movl %eax, (%esp) call _object_getClass movl %eax, (%esp) movl L_sel_forwardingTargetForSelector_-.L0(%ebx), %eax movl %eax, 4(%esp) call _class_respondsToSelector + testl %eax, %eax jz fail movl 8(%ebp), %eax movl %eax, (%esp) @@ -57,11 +59,10 @@ movl %eax, 8(%esp) call _objc_msgSend testl %eax, %eax jz fail - cmpl 8(%ebp), %eax je fail movl %eax, 8(%ebp) @@ -85,18 +86,20 @@ pushl %ebx subl $20, %esp call get_eip .L1: + movl 12(%ebp), %eax movl %eax, (%esp) call _object_getClass movl %eax, (%esp) movl L_sel_forwardingTargetForSelector_-.L1(%ebx), %eax movl %eax, 4(%esp) call _class_respondsToSelector + testl %eax, %eax jz fail_stret movl 12(%ebp), %eax movl %eax, (%esp) @@ -106,11 +109,10 @@ movl %eax, 8(%esp) call _objc_msgSend testl %eax, %eax jz fail_stret - cmpl 12(%ebp), %eax je fail_stret movl %eax, 12(%ebp) @@ -119,19 +121,14 @@ popl %ebp jmp _objc_msgSend_stret fail_stret: - movl 12(%ebp), %eax - movl %eax, 8(%ebp) - movl 16(%ebp), %eax - movl %eax, 12(%ebp) - addl $20, %esp popl %ebx popl %ebp - jmp _of_method_not_found + jmp _of_method_not_found_stret get_eip: movl (%esp), %ebx ret