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

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

Issue 131363008: A64: Synchronize with r15922. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/a64
Patch Set: Created 6 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/a64/deoptimizer-a64.cc ('k') | src/a64/lithium-a64.h » ('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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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 1322 matching lines...) Expand 10 before | Expand all | Expand 10 after
1333 __ Push(x2, x1, x0); 1333 __ Push(x2, x1, x0);
1334 1334
1335 // The slow case calls into the runtime to complete the store without causing 1335 // The slow case calls into the runtime to complete the store without causing
1336 // an IC miss that would otherwise cause a transition to the generic stub. 1336 // an IC miss that would otherwise cause a transition to the generic stub.
1337 ExternalReference ref = 1337 ExternalReference ref =
1338 ExternalReference(IC_Utility(kKeyedStoreIC_Slow), masm->isolate()); 1338 ExternalReference(IC_Utility(kKeyedStoreIC_Slow), masm->isolate());
1339 __ TailCallExternalReference(ref, 3, 1); 1339 __ TailCallExternalReference(ref, 3, 1);
1340 } 1340 }
1341 1341
1342 1342
1343 void KeyedStoreIC::GenerateTransitionElementsSmiToDouble(MacroAssembler* masm) {
1344 ASM_LOCATION("KeyedStoreIC::GenerateTransitionElementsSmiToDouble");
1345 // ---------- S t a t e --------------
1346 // -- lr : return address
1347 // -- x0 : value
1348 // -- x1 : key
1349 // -- x2 : receiver
1350 // -- x3 : target map
1351 // -----------------------------------
1352 // Must return the modified receiver in x0.
1353 Register receiver = x2;
1354
1355 if (!FLAG_trace_elements_transitions) {
1356 Label fail;
1357 AllocationSiteMode mode = AllocationSite::GetMode(FAST_SMI_ELEMENTS,
1358 FAST_DOUBLE_ELEMENTS);
1359 ElementsTransitionGenerator::GenerateSmiToDouble(masm, mode, &fail);
1360 __ Mov(x0, receiver);
1361 __ Ret();
1362 __ Bind(&fail);
1363 }
1364
1365 __ Push(receiver);
1366 __ TailCallRuntime(Runtime::kTransitionElementsSmiToDouble, 1, 1);
1367 }
1368
1369
1370 void KeyedStoreIC::GenerateTransitionElementsDoubleToObject(
1371 MacroAssembler* masm) {
1372 ASM_LOCATION("KeyedStoreIC::GenerateTransitionElementsDoubleToObject");
1373 // ---------- S t a t e --------------
1374 // -- x2 : receiver
1375 // -- x3 : target map
1376 // -- lr : return address
1377 // -----------------------------------
1378 // Must return the modified receiver in r0.
1379 Register receiver = x2;
1380
1381 if (!FLAG_trace_elements_transitions) {
1382 Label fail;
1383 AllocationSiteMode mode = AllocationSite::GetMode(FAST_DOUBLE_ELEMENTS,
1384 FAST_ELEMENTS);
1385 ElementsTransitionGenerator::GenerateDoubleToObject(masm, mode, &fail);
1386 __ Mov(x0, receiver);
1387 __ Ret();
1388 __ Bind(&fail);
1389 }
1390
1391 __ Push(receiver);
1392 __ TailCallRuntime(Runtime::kTransitionElementsDoubleToObject, 1, 1);
1393 }
1394
1395
1396 void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm, 1343 void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm,
1397 StrictModeFlag strict_mode) { 1344 StrictModeFlag strict_mode) {
1398 ASM_LOCATION("KeyedStoreIC::GenerateRuntimeSetProperty"); 1345 ASM_LOCATION("KeyedStoreIC::GenerateRuntimeSetProperty");
1399 // ---------- S t a t e -------------- 1346 // ---------- S t a t e --------------
1400 // -- x0 : value 1347 // -- x0 : value
1401 // -- x1 : key 1348 // -- x1 : key
1402 // -- x2 : receiver 1349 // -- x2 : receiver
1403 // -- lr : return address 1350 // -- lr : return address
1404 // ----------------------------------- 1351 // -----------------------------------
1405 1352
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
1849 ASSERT(to_patch->Mask(TestBranchMask) == TBNZ); 1796 ASSERT(to_patch->Mask(TestBranchMask) == TBNZ);
1850 // This is JumpIfSmi(smi_reg, branch_imm). 1797 // This is JumpIfSmi(smi_reg, branch_imm).
1851 patcher.tbz(smi_reg, 0, branch_imm); 1798 patcher.tbz(smi_reg, 0, branch_imm);
1852 } 1799 }
1853 } 1800 }
1854 1801
1855 1802
1856 } } // namespace v8::internal 1803 } } // namespace v8::internal
1857 1804
1858 #endif // V8_TARGET_ARCH_A64 1805 #endif // V8_TARGET_ARCH_A64
OLDNEW
« no previous file with comments | « src/a64/deoptimizer-a64.cc ('k') | src/a64/lithium-a64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698