| OLD | NEW |
| 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 1413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1424 __ JumpIfSmi(value, &dont_record_write); | 1424 __ JumpIfSmi(value, &dont_record_write); |
| 1425 | 1425 |
| 1426 // Update write barrier for the elements array address. | 1426 // Update write barrier for the elements array address. |
| 1427 __ Mov(x10, value); // Preserve the value which is returned. | 1427 __ Mov(x10, value); // Preserve the value which is returned. |
| 1428 __ RecordWrite(elements, | 1428 __ RecordWrite(elements, |
| 1429 address, | 1429 address, |
| 1430 x10, | 1430 x10, |
| 1431 kLRHasNotBeenSaved, | 1431 kLRHasNotBeenSaved, |
| 1432 kDontSaveFPRegs, | 1432 kDontSaveFPRegs, |
| 1433 EMIT_REMEMBERED_SET, | 1433 EMIT_REMEMBERED_SET, |
| 1434 OMIT_SMI_CHECK, | 1434 OMIT_SMI_CHECK); |
| 1435 EXPECT_PREGENERATED); | |
| 1436 | 1435 |
| 1437 __ Bind(&dont_record_write); | 1436 __ Bind(&dont_record_write); |
| 1438 __ Ret(); | 1437 __ Ret(); |
| 1439 | 1438 |
| 1440 | 1439 |
| 1441 __ Bind(fast_double); | 1440 __ Bind(fast_double); |
| 1442 if (check_map == kCheckMap) { | 1441 if (check_map == kCheckMap) { |
| 1443 // Check for fast double array case. If this fails, call through to the | 1442 // Check for fast double array case. If this fails, call through to the |
| 1444 // runtime. | 1443 // runtime. |
| 1445 __ JumpIfNotRoot(elements_map, Heap::kFixedDoubleArrayMapRootIndex, slow); | 1444 __ JumpIfNotRoot(elements_map, Heap::kFixedDoubleArrayMapRootIndex, slow); |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1619 value, key, receiver, receiver_map, | 1618 value, key, receiver, receiver_map, |
| 1620 elements_map, elements); | 1619 elements_map, elements); |
| 1621 KeyedStoreGenerateGenericHelper(masm, &fast_object_grow, &fast_double_grow, | 1620 KeyedStoreGenerateGenericHelper(masm, &fast_object_grow, &fast_double_grow, |
| 1622 &slow, kDontCheckMap, kIncrementLength, | 1621 &slow, kDontCheckMap, kIncrementLength, |
| 1623 value, key, receiver, receiver_map, | 1622 value, key, receiver, receiver_map, |
| 1624 elements_map, elements); | 1623 elements_map, elements); |
| 1625 } | 1624 } |
| 1626 | 1625 |
| 1627 | 1626 |
| 1628 void StoreIC::GenerateMegamorphic(MacroAssembler* masm, | 1627 void StoreIC::GenerateMegamorphic(MacroAssembler* masm, |
| 1629 StrictModeFlag strict_mode) { | 1628 ExtraICState extra_ic_state) { |
| 1630 // ----------- S t a t e ------------- | 1629 // ----------- S t a t e ------------- |
| 1631 // -- x0 : value | 1630 // -- x0 : value |
| 1632 // -- x1 : receiver | 1631 // -- x1 : receiver |
| 1633 // -- x2 : name | 1632 // -- x2 : name |
| 1634 // -- lr : return address | 1633 // -- lr : return address |
| 1635 // ----------------------------------- | 1634 // ----------------------------------- |
| 1636 | 1635 |
| 1637 // Probe the stub cache. | 1636 // Probe the stub cache. |
| 1638 Code::Flags flags = Code::ComputeFlags( | 1637 Code::Flags flags = Code::ComputeFlags( |
| 1639 Code::HANDLER, MONOMORPHIC, strict_mode, | 1638 Code::HANDLER, MONOMORPHIC, extra_ic_state, |
| 1640 Code::NORMAL, Code::STORE_IC); | 1639 Code::NORMAL, Code::STORE_IC); |
| 1641 | 1640 |
| 1642 masm->isolate()->stub_cache()->GenerateProbe( | 1641 masm->isolate()->stub_cache()->GenerateProbe( |
| 1643 masm, flags, x1, x2, x3, x4, x5, x6); | 1642 masm, flags, x1, x2, x3, x4, x5, x6); |
| 1644 | 1643 |
| 1645 // Cache miss: Jump to runtime. | 1644 // Cache miss: Jump to runtime. |
| 1646 GenerateMiss(masm); | 1645 GenerateMiss(masm); |
| 1647 } | 1646 } |
| 1648 | 1647 |
| 1649 | 1648 |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1817 ASSERT(to_patch->Mask(TestBranchMask) == TBNZ); | 1816 ASSERT(to_patch->Mask(TestBranchMask) == TBNZ); |
| 1818 // This is JumpIfSmi(smi_reg, branch_imm). | 1817 // This is JumpIfSmi(smi_reg, branch_imm). |
| 1819 patcher.tbz(smi_reg, 0, branch_imm); | 1818 patcher.tbz(smi_reg, 0, branch_imm); |
| 1820 } | 1819 } |
| 1821 } | 1820 } |
| 1822 | 1821 |
| 1823 | 1822 |
| 1824 } } // namespace v8::internal | 1823 } } // namespace v8::internal |
| 1825 | 1824 |
| 1826 #endif // V8_TARGET_ARCH_A64 | 1825 #endif // V8_TARGET_ARCH_A64 |
| OLD | NEW |