Overview
Comment: | More -[forwardingTargetForSelector:] tests. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
37ea76ea9da15fcce3a3d20d2299a419 |
User & Date: | js on 2013-07-25 22:54:09 |
Other Links: | manifest | tags |
Context
2013-07-25
| ||
23:21 | Forwarding: Save FP args when using MIPS/EABI. check-in: 3d98184cc2 user: js tags: trunk | |
22:54 | More -[forwardingTargetForSelector:] tests. check-in: 37ea76ea9d user: js tags: trunk | |
22:41 | Fix -[forwardingTargetForSelector:] on AMD64. check-in: a7409be2c4 user: js tags: trunk | |
Changes
Modified src/forwarding-mips-elf.S from [53faa6cc87] to [39560a8c6a].
︙ | |||
20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | + + + + + + + | of_forward: #ifdef __PIC__ lui $gp, %hi(_gp_disp) addiu $gp, $gp, %lo(_gp_disp) addu $gp, $gp, $t9 #endif /* * The registers for floating point arguments don't need to be saved, * as the ABI specifies that all remaining arguments are passed in * integer registers if the first argument is passed in an integer * register. This is always the case, as the first argument is always * self. */ addiu $sp, -48 sw $gp, 0($sp) sw $ra, 4($sp) sw $a0, 8($sp) sw $a1, 12($sp) sw $a2, 16($sp) sw $a3, 20($sp) |
︙ |
Modified tests/ForwardingTests.m from [821ca2e4ae] to [9c077ad9ee].
︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | + + + + + + + + + + + - + + + | #include <string.h> #import "OFString.h" #import "OFAutoreleasePool.h" #import "macros.h" #import "OFNotImplementedException.h" #import "TestsAppDelegate.h" #define FMT @"%@ %@ %@ %@ %@ %@ %@ %@ %@ %g %g %g %g %g %g %g %g %g" #define ARGS @"a", @"b", @"c", @"d", @"e", @"f", @"g", @"h", @"i", \ 1.5, 2.25, 3.125, 4.0625, 5.03125, 6.5, 7.25, 8.0, 9.0 #define RESULT @"a b c d e f g h i 1.5 2.25 3.125 4.0625 5.03125 6.5 7.25 8 9" static OFString *module = @"Forwarding"; static size_t forwardings = 0; static bool success = false; static id target = nil; struct stret_test { char s[27]; }; @interface ForwardingTest: OFObject @end @interface ForwardingTest (Test) + (void)test; - (void)test; - (bool)forwardingTargetTest: (intptr_t)a0 : (intptr_t)a1 : (double)a2 : (double)a3; |
︙ | |||
81 82 83 84 85 86 87 | 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | + + + + + + + + + + + + - + + - + + + + + + + + + + + + + + + + + + + + - + | } return false; } - (id)forwardingTargetForSelector: (SEL)selector { /* * Do some useless calculations in as many registers as possible to * check if the arguments are properly saved and restored. */ volatile register intptr_t r0 = 0, r1 = 1, r2 = 2, r3 = 3, r4 = 4, r5 = 5, r6 = 6, r7 = 7, r8 = 8, r9 = 9, r10 = 10, r11 = 11; volatile register double f0 = 0.5, f1 = 1.5, f2 = 2.5, f3 = 3.5, f4 = 4.5, f5 = 5.5, f6 = 6.5, f7 = 7.5, f8 = 8.5, f9 = 9.5, f10 = 10.5, f11 = 11.5; double add = r0 * r1 * r2 * r3 * r4 * r5 * r6 * r7 * r8 * r9 * r10 * r11 * f0 * f1 * f2 * f3 * f4 * f5 * f6 * f7 * f8 * f9 * f10 * f11; |
︙ | |||
145 146 147 148 149 150 151 | 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 | - - - + + + + + + + + + + + + | TEST(@"Forwarding a message and adding an instance method", R([t test]) && success && R([t test]) && forwardings == 1); #ifdef OF_HAVE_FORWARDING_TARGET_FOR_SELECTOR target = [[[ForwardingTarget alloc] init] autorelease]; TEST(@"-[forwardingTargetForSelector:]", |