Differences From Artifact [a34378a6db]:
- File src/forwarding/apple-forwarding-ppc.S — part of check-in [2566c341f3] at 2013-12-24 00:50:36 on branch trunk — Add forwarding for iOS/ARM64. (user: js, size: 4296) [annotate] [blame] [check-ins using]
To Artifact [744faa6cfb]:
- File
src/forwarding/apple-forwarding-ppc.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: 4321) [annotate] [blame] [check-ins using]
︙ | |||
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | + + - | bl _object_getClass bl L0 L0: mflr r13 addis r13, r13, ha16(L_sel_forwardingTargetForSelector_-L0) lwz r13, lo16(L_sel_forwardingTargetForSelector_-L0)(r13) mr r4, r13 bl _class_respondsToSelector cmpwi r3, 0 beq- fail lwz r3, 216(r1) mr r4, r13 lwz r5, 220(r1) bl _objc_msgSend cmpwi r3, 0 beq- fail |
︙ | |||
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 | 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 | + + - | bl _object_getClass bl L1 L1: mflr r13 addis r13, r13, ha16(L_sel_forwardingTargetForSelector_-L1) lwz r13, lo16(L_sel_forwardingTargetForSelector_-L1)(r13) mr r4, r13 bl _class_respondsToSelector cmpwi r3, 0 beq- fail_stret lwz r3, 212(r1) mr r4, r13 lwz r5, 216(r1) bl _objc_msgSend cmpwi r3, 0 beq- fail_stret |
︙ | |||
221 222 223 224 225 226 227 | 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 | - - + + + - + | addi r1, r1, 184 lwz r0, 8(r1) mtlr r0 b _objc_msgSend_stret fail_stret: |