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

Side by Side Diff: src/x64/ic-x64.cc

Issue 575022: Eliminate unused function KeyedStoreIC::GenerateExtendStorage, and unused par... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 10 years, 10 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 | « src/stub-cache.h ('k') | src/x64/stub-cache-x64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 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 593 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 __ push(Operand(rsp, 1 * kPointerSize)); // receiver 604 __ push(Operand(rsp, 1 * kPointerSize)); // receiver
605 __ push(Operand(rsp, 1 * kPointerSize)); // key 605 __ push(Operand(rsp, 1 * kPointerSize)); // key
606 __ push(rax); // value 606 __ push(rax); // value
607 __ push(rcx); // return address 607 __ push(rcx); // return address
608 608
609 // Do tail-call to runtime routine. 609 // Do tail-call to runtime routine.
610 __ TailCallRuntime(ExternalReference(Runtime::kSetProperty), 3, 1); 610 __ TailCallRuntime(ExternalReference(Runtime::kSetProperty), 3, 1);
611 } 611 }
612 612
613 613
614 void KeyedStoreIC::GenerateExtendStorage(MacroAssembler* masm) {
615 // ----------- S t a t e -------------
616 // -- rax : value
617 // -- rcx : transition map
618 // -- rsp[0] : return address
619 // -- rsp[8] : key
620 // -- rsp[16] : receiver
621 // -----------------------------------
622
623 __ pop(rbx);
624 __ push(Operand(rsp, 1 * kPointerSize)); // receiver
625 __ push(rcx); // transition map
626 __ push(rax); // value
627 __ push(rbx); // return address
628
629 // Do tail-call to runtime routine.
630 __ TailCallRuntime(
631 ExternalReference(IC_Utility(kSharedStoreIC_ExtendStorage)), 3, 1);
632 }
633
634
635 void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm) { 614 void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm) {
636 // ----------- S t a t e ------------- 615 // ----------- S t a t e -------------
637 // -- rax : value 616 // -- rax : value
638 // -- rsp[0] : return address 617 // -- rsp[0] : return address
639 // -- rsp[8] : key 618 // -- rsp[8] : key
640 // -- rsp[16] : receiver 619 // -- rsp[16] : receiver
641 // ----------------------------------- 620 // -----------------------------------
642 Label slow, fast, array, extra, check_pixel_array; 621 Label slow, fast, array, extra, check_pixel_array;
643 622
644 // Get the receiver from the stack. 623 // Get the receiver from the stack.
(...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after
1301 Label miss; 1280 Label miss;
1302 1281
1303 __ movq(rax, Operand(rsp, kPointerSize)); 1282 __ movq(rax, Operand(rsp, kPointerSize));
1304 1283
1305 StubCompiler::GenerateLoadStringLength(masm, rax, rdx, rbx, &miss); 1284 StubCompiler::GenerateLoadStringLength(masm, rax, rdx, rbx, &miss);
1306 __ bind(&miss); 1285 __ bind(&miss);
1307 StubCompiler::GenerateLoadMiss(masm, Code::LOAD_IC); 1286 StubCompiler::GenerateLoadMiss(masm, Code::LOAD_IC);
1308 } 1287 }
1309 1288
1310 1289
1311
1312 bool LoadIC::PatchInlinedLoad(Address address, Object* map, int offset) { 1290 bool LoadIC::PatchInlinedLoad(Address address, Object* map, int offset) {
1313 // The address of the instruction following the call. 1291 // The address of the instruction following the call.
1314 Address test_instruction_address = 1292 Address test_instruction_address =
1315 address + Assembler::kCallTargetAddressOffset; 1293 address + Assembler::kCallTargetAddressOffset;
1316 // If the instruction following the call is not a test eax, nothing 1294 // If the instruction following the call is not a test eax, nothing
1317 // was inlined. 1295 // was inlined.
1318 if (*test_instruction_address != kTestEaxByte) return false; 1296 if (*test_instruction_address != kTestEaxByte) return false;
1319 1297
1320 Address delta_address = test_instruction_address + 1; 1298 Address delta_address = test_instruction_address + 1;
1321 // The delta to the start of the map check instruction. 1299 // The delta to the start of the map check instruction.
1322 int delta = *reinterpret_cast<int*>(delta_address); 1300 int delta = *reinterpret_cast<int*>(delta_address);
1323 1301
1324 // The map address is the last 8 bytes of the 10-byte 1302 // The map address is the last 8 bytes of the 10-byte
1325 // immediate move instruction, so we add 2 to get the 1303 // immediate move instruction, so we add 2 to get the
1326 // offset to the last 8 bytes. 1304 // offset to the last 8 bytes.
1327 Address map_address = test_instruction_address + delta + 2; 1305 Address map_address = test_instruction_address + delta + 2;
1328 *(reinterpret_cast<Object**>(map_address)) = map; 1306 *(reinterpret_cast<Object**>(map_address)) = map;
1329 1307
1330 // The offset is in the 32-bit displacement of a seven byte 1308 // The offset is in the 32-bit displacement of a seven byte
1331 // memory-to-register move instruction (REX.W 0x88 ModR/M disp32), 1309 // memory-to-register move instruction (REX.W 0x88 ModR/M disp32),
1332 // so we add 3 to get the offset of the displacement. 1310 // so we add 3 to get the offset of the displacement.
1333 Address offset_address = 1311 Address offset_address =
1334 test_instruction_address + delta + kOffsetToLoadInstruction + 3; 1312 test_instruction_address + delta + kOffsetToLoadInstruction + 3;
1335 *reinterpret_cast<int*>(offset_address) = offset - kHeapObjectTag; 1313 *reinterpret_cast<int*>(offset_address) = offset - kHeapObjectTag;
1336 return true; 1314 return true;
1337 } 1315 }
1338 1316
1317
1339 void StoreIC::GenerateMiss(MacroAssembler* masm) { 1318 void StoreIC::GenerateMiss(MacroAssembler* masm) {
1340 // ----------- S t a t e ------------- 1319 // ----------- S t a t e -------------
1341 // -- rax : value 1320 // -- rax : value
1342 // -- rcx : name 1321 // -- rcx : name
1343 // -- rdx : receiver 1322 // -- rdx : receiver
1344 // -- rsp[0] : return address 1323 // -- rsp[0] : return address
1345 // ----------------------------------- 1324 // -----------------------------------
1346 1325
1347 __ pop(rbx); 1326 __ pop(rbx);
1348 __ push(rdx); // receiver 1327 __ push(rdx); // receiver
1349 __ push(rcx); // name 1328 __ push(rcx); // name
1350 __ push(rax); // value 1329 __ push(rax); // value
1351 __ push(rbx); // return address 1330 __ push(rbx); // return address
1352 1331
1353 // Perform tail call to the entry. 1332 // Perform tail call to the entry.
1354 __ TailCallRuntime(ExternalReference(IC_Utility(kStoreIC_Miss)), 3, 1); 1333 __ TailCallRuntime(ExternalReference(IC_Utility(kStoreIC_Miss)), 3, 1);
1355 } 1334 }
1356 1335
1357 void StoreIC::GenerateExtendStorage(MacroAssembler* masm) {
1358 // ----------- S t a t e -------------
1359 // -- rax : value
1360 // -- rcx : Map (target of map transition)
1361 // -- rdx : receiver
1362 // -- rsp[0] : return address
1363 // -----------------------------------
1364
1365 __ pop(rbx);
1366 __ push(rdx); // receiver
1367 __ push(rcx); // transition map
1368 __ push(rax); // value
1369 __ push(rbx); // return address
1370
1371 // Perform tail call to the entry.
1372 __ TailCallRuntime(
1373 ExternalReference(IC_Utility(kSharedStoreIC_ExtendStorage)), 3, 1);
1374 }
1375 1336
1376 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) { 1337 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) {
1377 // ----------- S t a t e ------------- 1338 // ----------- S t a t e -------------
1378 // -- rax : value 1339 // -- rax : value
1379 // -- rcx : name 1340 // -- rcx : name
1380 // -- rdx : receiver 1341 // -- rdx : receiver
1381 // -- rsp[0] : return address 1342 // -- rsp[0] : return address
1382 // ----------------------------------- 1343 // -----------------------------------
1383 1344
1384 // Get the receiver from the stack and probe the stub cache. 1345 // Get the receiver from the stack and probe the stub cache.
1385 Code::Flags flags = Code::ComputeFlags(Code::STORE_IC, 1346 Code::Flags flags = Code::ComputeFlags(Code::STORE_IC,
1386 NOT_IN_LOOP, 1347 NOT_IN_LOOP,
1387 MONOMORPHIC); 1348 MONOMORPHIC);
1388 StubCache::GenerateProbe(masm, flags, rdx, rcx, rbx, no_reg); 1349 StubCache::GenerateProbe(masm, flags, rdx, rcx, rbx, no_reg);
1389 1350
1390 // Cache miss: Jump to runtime. 1351 // Cache miss: Jump to runtime.
1391 GenerateMiss(masm); 1352 GenerateMiss(masm);
1392 } 1353 }
1393 1354
1394 1355
1395 #undef __ 1356 #undef __
1396 1357
1397 1358
1398 } } // namespace v8::internal 1359 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/stub-cache.h ('k') | src/x64/stub-cache-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698