Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1051)

Side by Side Diff: test/cctest/test-macro-assembler-x64.cc

Issue 6647015: X64: Change kSmiConstantRegister to r12. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « test/cctest/test-assembler-x64.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 using v8::internal::rbx; 50 using v8::internal::rbx;
51 using v8::internal::rsi; 51 using v8::internal::rsi;
52 using v8::internal::rdi; 52 using v8::internal::rdi;
53 using v8::internal::rcx; 53 using v8::internal::rcx;
54 using v8::internal::rdx; 54 using v8::internal::rdx;
55 using v8::internal::rbp; 55 using v8::internal::rbp;
56 using v8::internal::rsp; 56 using v8::internal::rsp;
57 using v8::internal::r8; 57 using v8::internal::r8;
58 using v8::internal::r9; 58 using v8::internal::r9;
59 using v8::internal::r11; 59 using v8::internal::r11;
60 using v8::internal::r12;
61 using v8::internal::r13; 60 using v8::internal::r13;
62 using v8::internal::r14; 61 using v8::internal::r14;
62 using v8::internal::r15;
63 using v8::internal::times_pointer_size; 63 using v8::internal::times_pointer_size;
64 using v8::internal::FUNCTION_CAST; 64 using v8::internal::FUNCTION_CAST;
65 using v8::internal::CodeDesc; 65 using v8::internal::CodeDesc;
66 using v8::internal::less_equal; 66 using v8::internal::less_equal;
67 using v8::internal::not_equal; 67 using v8::internal::not_equal;
68 using v8::internal::not_zero; 68 using v8::internal::not_zero;
69 using v8::internal::greater; 69 using v8::internal::greater;
70 using v8::internal::greater_equal; 70 using v8::internal::greater_equal;
71 using v8::internal::carry; 71 using v8::internal::carry;
72 using v8::internal::not_carry; 72 using v8::internal::not_carry;
(...skipping 1040 matching lines...) Expand 10 before | Expand all | Expand 10 after
1113 bool overflow = (x == Smi::kMinValue && y < 0); // Safe approx. used. 1113 bool overflow = (x == Smi::kMinValue && y < 0); // Safe approx. used.
1114 #else 1114 #else
1115 bool overflow = (x == Smi::kMinValue && y == -1); 1115 bool overflow = (x == Smi::kMinValue && y == -1);
1116 #endif 1116 #endif
1117 bool fraction = !division_by_zero && !overflow && (x % y != 0); 1117 bool fraction = !division_by_zero && !overflow && (x % y != 0);
1118 __ Move(r11, Smi::FromInt(x)); 1118 __ Move(r11, Smi::FromInt(x));
1119 __ Move(r14, Smi::FromInt(y)); 1119 __ Move(r14, Smi::FromInt(y));
1120 if (!fraction && !overflow && !negative_zero && !division_by_zero) { 1120 if (!fraction && !overflow && !negative_zero && !division_by_zero) {
1121 // Division succeeds 1121 // Division succeeds
1122 __ movq(rcx, r11); 1122 __ movq(rcx, r11);
1123 __ movq(r12, Immediate(id)); 1123 __ movq(r15, Immediate(id));
1124 int result = x / y; 1124 int result = x / y;
1125 __ Move(r8, Smi::FromInt(result)); 1125 __ Move(r8, Smi::FromInt(result));
1126 __ SmiDiv(r9, rcx, r14, exit); 1126 __ SmiDiv(r9, rcx, r14, exit);
1127 // Might have destroyed rcx and r14. 1127 // Might have destroyed rcx and r14.
1128 __ incq(r12); 1128 __ incq(r15);
1129 __ SmiCompare(r9, r8); 1129 __ SmiCompare(r9, r8);
1130 __ j(not_equal, exit); 1130 __ j(not_equal, exit);
1131 1131
1132 __ incq(r12); 1132 __ incq(r15);
1133 __ movq(rcx, r11); 1133 __ movq(rcx, r11);
1134 __ Move(r14, Smi::FromInt(y)); 1134 __ Move(r14, Smi::FromInt(y));
1135 __ SmiCompare(rcx, r11); 1135 __ SmiCompare(rcx, r11);
1136 __ j(not_equal, exit); 1136 __ j(not_equal, exit);
1137 1137
1138 __ incq(r12); 1138 __ incq(r15);
1139 __ SmiDiv(rcx, rcx, r14, exit); 1139 __ SmiDiv(rcx, rcx, r14, exit);
1140 1140
1141 __ incq(r12); 1141 __ incq(r15);
1142 __ SmiCompare(rcx, r8); 1142 __ SmiCompare(rcx, r8);
1143 __ j(not_equal, exit); 1143 __ j(not_equal, exit);
1144 } else { 1144 } else {
1145 // Division fails. 1145 // Division fails.
1146 __ movq(r12, Immediate(id + 8)); 1146 __ movq(r15, Immediate(id + 8));
1147 1147
1148 Label fail_ok, fail_ok2; 1148 Label fail_ok, fail_ok2;
1149 __ movq(rcx, r11); 1149 __ movq(rcx, r11);
1150 __ SmiDiv(r9, rcx, r14, &fail_ok); 1150 __ SmiDiv(r9, rcx, r14, &fail_ok);
1151 __ jmp(exit); 1151 __ jmp(exit);
1152 __ bind(&fail_ok); 1152 __ bind(&fail_ok);
1153 1153
1154 __ incq(r12); 1154 __ incq(r15);
1155 __ SmiCompare(rcx, r11); 1155 __ SmiCompare(rcx, r11);
1156 __ j(not_equal, exit); 1156 __ j(not_equal, exit);
1157 1157
1158 __ incq(r12); 1158 __ incq(r15);
1159 __ SmiDiv(rcx, rcx, r14, &fail_ok2); 1159 __ SmiDiv(rcx, rcx, r14, &fail_ok2);
1160 __ jmp(exit); 1160 __ jmp(exit);
1161 __ bind(&fail_ok2); 1161 __ bind(&fail_ok2);
1162 1162
1163 __ incq(r12); 1163 __ incq(r15);
1164 __ SmiCompare(rcx, r11); 1164 __ SmiCompare(rcx, r11);
1165 __ j(not_equal, exit); 1165 __ j(not_equal, exit);
1166 } 1166 }
1167 } 1167 }
1168 1168
1169 1169
1170 TEST(SmiDiv) { 1170 TEST(SmiDiv) {
1171 // Allocate an executable page of memory. 1171 // Allocate an executable page of memory.
1172 size_t actual_size; 1172 size_t actual_size;
1173 byte* buffer = 1173 byte* buffer =
1174 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, 1174 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2,
1175 &actual_size, 1175 &actual_size,
1176 true)); 1176 true));
1177 CHECK(buffer); 1177 CHECK(buffer);
1178 HandleScope handles; 1178 HandleScope handles;
1179 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); 1179 MacroAssembler assembler(buffer, static_cast<int>(actual_size));
1180 1180
1181 MacroAssembler* masm = &assembler; 1181 MacroAssembler* masm = &assembler;
1182 masm->set_allow_stub_calls(false); 1182 masm->set_allow_stub_calls(false);
1183 EntryCode(masm); 1183 EntryCode(masm);
1184 Label exit; 1184 Label exit;
1185 1185
1186 __ push(r14); 1186 __ push(r14);
1187 __ push(r12); 1187 __ push(r15);
1188 TestSmiDiv(masm, &exit, 0x10, 1, 1); 1188 TestSmiDiv(masm, &exit, 0x10, 1, 1);
1189 TestSmiDiv(masm, &exit, 0x20, 1, 0); 1189 TestSmiDiv(masm, &exit, 0x20, 1, 0);
1190 TestSmiDiv(masm, &exit, 0x30, -1, 0); 1190 TestSmiDiv(masm, &exit, 0x30, -1, 0);
1191 TestSmiDiv(masm, &exit, 0x40, 0, 1); 1191 TestSmiDiv(masm, &exit, 0x40, 0, 1);
1192 TestSmiDiv(masm, &exit, 0x50, 0, -1); 1192 TestSmiDiv(masm, &exit, 0x50, 0, -1);
1193 TestSmiDiv(masm, &exit, 0x60, 4, 2); 1193 TestSmiDiv(masm, &exit, 0x60, 4, 2);
1194 TestSmiDiv(masm, &exit, 0x70, -4, 2); 1194 TestSmiDiv(masm, &exit, 0x70, -4, 2);
1195 TestSmiDiv(masm, &exit, 0x80, 4, -2); 1195 TestSmiDiv(masm, &exit, 0x80, 4, -2);
1196 TestSmiDiv(masm, &exit, 0x90, -4, -2); 1196 TestSmiDiv(masm, &exit, 0x90, -4, -2);
1197 TestSmiDiv(masm, &exit, 0xa0, 3, 2); 1197 TestSmiDiv(masm, &exit, 0xa0, 3, 2);
1198 TestSmiDiv(masm, &exit, 0xb0, 3, 4); 1198 TestSmiDiv(masm, &exit, 0xb0, 3, 4);
1199 TestSmiDiv(masm, &exit, 0xc0, 1, Smi::kMaxValue); 1199 TestSmiDiv(masm, &exit, 0xc0, 1, Smi::kMaxValue);
1200 TestSmiDiv(masm, &exit, 0xd0, -1, Smi::kMaxValue); 1200 TestSmiDiv(masm, &exit, 0xd0, -1, Smi::kMaxValue);
1201 TestSmiDiv(masm, &exit, 0xe0, Smi::kMaxValue, 1); 1201 TestSmiDiv(masm, &exit, 0xe0, Smi::kMaxValue, 1);
1202 TestSmiDiv(masm, &exit, 0xf0, Smi::kMaxValue, Smi::kMaxValue); 1202 TestSmiDiv(masm, &exit, 0xf0, Smi::kMaxValue, Smi::kMaxValue);
1203 TestSmiDiv(masm, &exit, 0x100, Smi::kMaxValue, -Smi::kMaxValue); 1203 TestSmiDiv(masm, &exit, 0x100, Smi::kMaxValue, -Smi::kMaxValue);
1204 TestSmiDiv(masm, &exit, 0x110, Smi::kMaxValue, -1); 1204 TestSmiDiv(masm, &exit, 0x110, Smi::kMaxValue, -1);
1205 TestSmiDiv(masm, &exit, 0x120, Smi::kMinValue, 1); 1205 TestSmiDiv(masm, &exit, 0x120, Smi::kMinValue, 1);
1206 TestSmiDiv(masm, &exit, 0x130, Smi::kMinValue, Smi::kMinValue); 1206 TestSmiDiv(masm, &exit, 0x130, Smi::kMinValue, Smi::kMinValue);
1207 TestSmiDiv(masm, &exit, 0x140, Smi::kMinValue, -1); 1207 TestSmiDiv(masm, &exit, 0x140, Smi::kMinValue, -1);
1208 1208
1209 __ xor_(r12, r12); // Success. 1209 __ xor_(r15, r15); // Success.
1210 __ bind(&exit); 1210 __ bind(&exit);
1211 __ movq(rax, r12); 1211 __ movq(rax, r15);
1212 __ pop(r12); 1212 __ pop(r15);
1213 __ pop(r14); 1213 __ pop(r14);
1214 ExitCode(masm); 1214 ExitCode(masm);
1215 __ ret(0); 1215 __ ret(0);
1216 1216
1217 CodeDesc desc; 1217 CodeDesc desc;
1218 masm->GetCode(&desc); 1218 masm->GetCode(&desc);
1219 // Call the function from C++. 1219 // Call the function from C++.
1220 int result = FUNCTION_CAST<F0>(buffer)(); 1220 int result = FUNCTION_CAST<F0>(buffer)();
1221 CHECK_EQ(0, result); 1221 CHECK_EQ(0, result);
1222 } 1222 }
1223 1223
1224 1224
1225 void TestSmiMod(MacroAssembler* masm, Label* exit, int id, int x, int y) { 1225 void TestSmiMod(MacroAssembler* masm, Label* exit, int id, int x, int y) {
1226 bool division_by_zero = (y == 0); 1226 bool division_by_zero = (y == 0);
1227 bool division_overflow = (x == Smi::kMinValue) && (y == -1); 1227 bool division_overflow = (x == Smi::kMinValue) && (y == -1);
1228 bool fraction = !division_by_zero && !division_overflow && ((x % y) != 0); 1228 bool fraction = !division_by_zero && !division_overflow && ((x % y) != 0);
1229 bool negative_zero = (!fraction && x < 0); 1229 bool negative_zero = (!fraction && x < 0);
1230 __ Move(rcx, Smi::FromInt(x)); 1230 __ Move(rcx, Smi::FromInt(x));
1231 __ movq(r11, rcx); 1231 __ movq(r11, rcx);
1232 __ Move(r14, Smi::FromInt(y)); 1232 __ Move(r14, Smi::FromInt(y));
1233 if (!division_overflow && !negative_zero && !division_by_zero) { 1233 if (!division_overflow && !negative_zero && !division_by_zero) {
1234 // Modulo succeeds 1234 // Modulo succeeds
1235 __ movq(r12, Immediate(id)); 1235 __ movq(r15, Immediate(id));
1236 int result = x % y; 1236 int result = x % y;
1237 __ Move(r8, Smi::FromInt(result)); 1237 __ Move(r8, Smi::FromInt(result));
1238 __ SmiMod(r9, rcx, r14, exit); 1238 __ SmiMod(r9, rcx, r14, exit);
1239 1239
1240 __ incq(r12); 1240 __ incq(r15);
1241 __ SmiCompare(r9, r8); 1241 __ SmiCompare(r9, r8);
1242 __ j(not_equal, exit); 1242 __ j(not_equal, exit);
1243 1243
1244 __ incq(r12); 1244 __ incq(r15);
1245 __ SmiCompare(rcx, r11); 1245 __ SmiCompare(rcx, r11);
1246 __ j(not_equal, exit); 1246 __ j(not_equal, exit);
1247 1247
1248 __ incq(r12); 1248 __ incq(r15);
1249 __ SmiMod(rcx, rcx, r14, exit); 1249 __ SmiMod(rcx, rcx, r14, exit);
1250 1250
1251 __ incq(r12); 1251 __ incq(r15);
1252 __ SmiCompare(rcx, r8); 1252 __ SmiCompare(rcx, r8);
1253 __ j(not_equal, exit); 1253 __ j(not_equal, exit);
1254 } else { 1254 } else {
1255 // Modulo fails. 1255 // Modulo fails.
1256 __ movq(r12, Immediate(id + 8)); 1256 __ movq(r15, Immediate(id + 8));
1257 1257
1258 Label fail_ok, fail_ok2; 1258 Label fail_ok, fail_ok2;
1259 __ SmiMod(r9, rcx, r14, &fail_ok); 1259 __ SmiMod(r9, rcx, r14, &fail_ok);
1260 __ jmp(exit); 1260 __ jmp(exit);
1261 __ bind(&fail_ok); 1261 __ bind(&fail_ok);
1262 1262
1263 __ incq(r12); 1263 __ incq(r15);
1264 __ SmiCompare(rcx, r11); 1264 __ SmiCompare(rcx, r11);
1265 __ j(not_equal, exit); 1265 __ j(not_equal, exit);
1266 1266
1267 __ incq(r12); 1267 __ incq(r15);
1268 __ SmiMod(rcx, rcx, r14, &fail_ok2); 1268 __ SmiMod(rcx, rcx, r14, &fail_ok2);
1269 __ jmp(exit); 1269 __ jmp(exit);
1270 __ bind(&fail_ok2); 1270 __ bind(&fail_ok2);
1271 1271
1272 __ incq(r12); 1272 __ incq(r15);
1273 __ SmiCompare(rcx, r11); 1273 __ SmiCompare(rcx, r11);
1274 __ j(not_equal, exit); 1274 __ j(not_equal, exit);
1275 } 1275 }
1276 } 1276 }
1277 1277
1278 1278
1279 TEST(SmiMod) { 1279 TEST(SmiMod) {
1280 // Allocate an executable page of memory. 1280 // Allocate an executable page of memory.
1281 size_t actual_size; 1281 size_t actual_size;
1282 byte* buffer = 1282 byte* buffer =
1283 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, 1283 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2,
1284 &actual_size, 1284 &actual_size,
1285 true)); 1285 true));
1286 CHECK(buffer); 1286 CHECK(buffer);
1287 HandleScope handles; 1287 HandleScope handles;
1288 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); 1288 MacroAssembler assembler(buffer, static_cast<int>(actual_size));
1289 1289
1290 MacroAssembler* masm = &assembler; 1290 MacroAssembler* masm = &assembler;
1291 masm->set_allow_stub_calls(false); 1291 masm->set_allow_stub_calls(false);
1292 EntryCode(masm); 1292 EntryCode(masm);
1293 Label exit; 1293 Label exit;
1294 1294
1295 __ push(r14); 1295 __ push(r14);
1296 __ push(r12); 1296 __ push(r15);
1297 TestSmiMod(masm, &exit, 0x10, 1, 1); 1297 TestSmiMod(masm, &exit, 0x10, 1, 1);
1298 TestSmiMod(masm, &exit, 0x20, 1, 0); 1298 TestSmiMod(masm, &exit, 0x20, 1, 0);
1299 TestSmiMod(masm, &exit, 0x30, -1, 0); 1299 TestSmiMod(masm, &exit, 0x30, -1, 0);
1300 TestSmiMod(masm, &exit, 0x40, 0, 1); 1300 TestSmiMod(masm, &exit, 0x40, 0, 1);
1301 TestSmiMod(masm, &exit, 0x50, 0, -1); 1301 TestSmiMod(masm, &exit, 0x50, 0, -1);
1302 TestSmiMod(masm, &exit, 0x60, 4, 2); 1302 TestSmiMod(masm, &exit, 0x60, 4, 2);
1303 TestSmiMod(masm, &exit, 0x70, -4, 2); 1303 TestSmiMod(masm, &exit, 0x70, -4, 2);
1304 TestSmiMod(masm, &exit, 0x80, 4, -2); 1304 TestSmiMod(masm, &exit, 0x80, 4, -2);
1305 TestSmiMod(masm, &exit, 0x90, -4, -2); 1305 TestSmiMod(masm, &exit, 0x90, -4, -2);
1306 TestSmiMod(masm, &exit, 0xa0, 3, 2); 1306 TestSmiMod(masm, &exit, 0xa0, 3, 2);
1307 TestSmiMod(masm, &exit, 0xb0, 3, 4); 1307 TestSmiMod(masm, &exit, 0xb0, 3, 4);
1308 TestSmiMod(masm, &exit, 0xc0, 1, Smi::kMaxValue); 1308 TestSmiMod(masm, &exit, 0xc0, 1, Smi::kMaxValue);
1309 TestSmiMod(masm, &exit, 0xd0, -1, Smi::kMaxValue); 1309 TestSmiMod(masm, &exit, 0xd0, -1, Smi::kMaxValue);
1310 TestSmiMod(masm, &exit, 0xe0, Smi::kMaxValue, 1); 1310 TestSmiMod(masm, &exit, 0xe0, Smi::kMaxValue, 1);
1311 TestSmiMod(masm, &exit, 0xf0, Smi::kMaxValue, Smi::kMaxValue); 1311 TestSmiMod(masm, &exit, 0xf0, Smi::kMaxValue, Smi::kMaxValue);
1312 TestSmiMod(masm, &exit, 0x100, Smi::kMaxValue, -Smi::kMaxValue); 1312 TestSmiMod(masm, &exit, 0x100, Smi::kMaxValue, -Smi::kMaxValue);
1313 TestSmiMod(masm, &exit, 0x110, Smi::kMaxValue, -1); 1313 TestSmiMod(masm, &exit, 0x110, Smi::kMaxValue, -1);
1314 TestSmiMod(masm, &exit, 0x120, Smi::kMinValue, 1); 1314 TestSmiMod(masm, &exit, 0x120, Smi::kMinValue, 1);
1315 TestSmiMod(masm, &exit, 0x130, Smi::kMinValue, Smi::kMinValue); 1315 TestSmiMod(masm, &exit, 0x130, Smi::kMinValue, Smi::kMinValue);
1316 TestSmiMod(masm, &exit, 0x140, Smi::kMinValue, -1); 1316 TestSmiMod(masm, &exit, 0x140, Smi::kMinValue, -1);
1317 1317
1318 __ xor_(r12, r12); // Success. 1318 __ xor_(r15, r15); // Success.
1319 __ bind(&exit); 1319 __ bind(&exit);
1320 __ movq(rax, r12); 1320 __ movq(rax, r15);
1321 __ pop(r12); 1321 __ pop(r15);
1322 __ pop(r14); 1322 __ pop(r14);
1323 ExitCode(masm); 1323 ExitCode(masm);
1324 __ ret(0); 1324 __ ret(0);
1325 1325
1326 CodeDesc desc; 1326 CodeDesc desc;
1327 masm->GetCode(&desc); 1327 masm->GetCode(&desc);
1328 // Call the function from C++. 1328 // Call the function from C++.
1329 int result = FUNCTION_CAST<F0>(buffer)(); 1329 int result = FUNCTION_CAST<F0>(buffer)();
1330 CHECK_EQ(0, result); 1330 CHECK_EQ(0, result);
1331 } 1331 }
(...skipping 811 matching lines...) Expand 10 before | Expand all | Expand 10 after
2143 __ push(Immediate(0x101)); 2143 __ push(Immediate(0x101));
2144 __ push(Immediate(0x102)); 2144 __ push(Immediate(0x102));
2145 __ push(Immediate(0x103)); 2145 __ push(Immediate(0x103));
2146 __ push(Immediate(0x104)); 2146 __ push(Immediate(0x104));
2147 __ push(Immediate(0x105)); // <-- rbx 2147 __ push(Immediate(0x105)); // <-- rbx
2148 __ push(Immediate(0x106)); 2148 __ push(Immediate(0x106));
2149 __ push(Immediate(0x107)); 2149 __ push(Immediate(0x107));
2150 __ push(Immediate(0x108)); 2150 __ push(Immediate(0x108));
2151 __ push(Immediate(0x109)); // <-- rsp 2151 __ push(Immediate(0x109)); // <-- rsp
2152 // rbp = rsp[9] 2152 // rbp = rsp[9]
2153 // r12 = rsp[3] 2153 // r15 = rsp[3]
2154 // rbx = rsp[5] 2154 // rbx = rsp[5]
2155 // r13 = rsp[7] 2155 // r13 = rsp[7]
2156 __ lea(r14, Operand(rsp, 3 * kPointerSize)); 2156 __ lea(r14, Operand(rsp, 3 * kPointerSize));
2157 __ lea(r13, Operand(rbp, -3 * kPointerSize)); 2157 __ lea(r13, Operand(rbp, -3 * kPointerSize));
2158 __ lea(rbx, Operand(rbp, -5 * kPointerSize)); 2158 __ lea(rbx, Operand(rbp, -5 * kPointerSize));
2159 __ movl(rcx, Immediate(2)); 2159 __ movl(rcx, Immediate(2));
2160 __ movq(r8, reinterpret_cast<uintptr_t>(&data[128]), RelocInfo::NONE); 2160 __ movq(r8, reinterpret_cast<uintptr_t>(&data[128]), RelocInfo::NONE);
2161 __ movl(rax, Immediate(1)); 2161 __ movl(rax, Immediate(1));
2162 2162
2163 Operand sp0 = Operand(rsp, 0); 2163 Operand sp0 = Operand(rsp, 0);
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
2465 CodeDesc desc; 2465 CodeDesc desc;
2466 masm->GetCode(&desc); 2466 masm->GetCode(&desc);
2467 // Call the function from C++. 2467 // Call the function from C++.
2468 int result = FUNCTION_CAST<F0>(buffer)(); 2468 int result = FUNCTION_CAST<F0>(buffer)();
2469 CHECK_EQ(0, result); 2469 CHECK_EQ(0, result);
2470 } 2470 }
2471 2471
2472 2472
2473 2473
2474 #undef __ 2474 #undef __
OLDNEW
« no previous file with comments | « test/cctest/test-assembler-x64.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698