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

Side by Side Diff: src/arm64/macro-assembler-arm64.h

Issue 2523473002: [cleanup] Drop handwritten KeyedStoreIC code (Closed)
Patch Set: rebased Created 4 years 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
« no previous file with comments | « src/arm64/codegen-arm64.cc ('k') | src/arm64/macro-assembler-arm64.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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ 5 #ifndef V8_ARM64_MACRO_ASSEMBLER_ARM64_H_
6 #define V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ 6 #define V8_ARM64_MACRO_ASSEMBLER_ARM64_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "src/arm64/assembler-arm64.h" 10 #include "src/arm64/assembler-arm64.h"
(...skipping 1548 matching lines...) Expand 10 before | Expand all | Expand 10 after
1559 Label* fall_through); 1559 Label* fall_through);
1560 1560
1561 // Test the bits of register defined by bit_pattern, and branch to 1561 // Test the bits of register defined by bit_pattern, and branch to
1562 // if_any_set, if_all_clear or fall_through accordingly. 1562 // if_any_set, if_all_clear or fall_through accordingly.
1563 void TestAndSplit(const Register& reg, 1563 void TestAndSplit(const Register& reg,
1564 uint64_t bit_pattern, 1564 uint64_t bit_pattern,
1565 Label* if_all_clear, 1565 Label* if_all_clear,
1566 Label* if_any_set, 1566 Label* if_any_set,
1567 Label* fall_through); 1567 Label* fall_through);
1568 1568
1569 // Check if a map for a JSObject indicates that the object can have both smi
1570 // and HeapObject elements. Jump to the specified label if it does not.
1571 void CheckFastObjectElements(Register map, Register scratch, Label* fail);
1572
1573 // Check to see if number can be stored as a double in FastDoubleElements.
1574 // If it can, store it at the index specified by key_reg in the array,
1575 // otherwise jump to fail.
1576 void StoreNumberToDoubleElements(Register value_reg,
1577 Register key_reg,
1578 Register elements_reg,
1579 Register scratch1,
1580 FPRegister fpscratch1,
1581 Label* fail,
1582 int elements_offset = 0);
1583
1584 // --------------------------------------------------------------------------- 1569 // ---------------------------------------------------------------------------
1585 // Inline caching support. 1570 // Inline caching support.
1586 1571
1587 void EmitSeqStringSetCharCheck(Register string, 1572 void EmitSeqStringSetCharCheck(Register string,
1588 Register index, 1573 Register index,
1589 SeqStringSetCharCheckIndexType index_type, 1574 SeqStringSetCharCheckIndexType index_type,
1590 Register scratch, 1575 Register scratch,
1591 uint32_t encoding_mask); 1576 uint32_t encoding_mask);
1592 1577
1593 // Hash the interger value in 'key' register. 1578 // Hash the interger value in 'key' register.
(...skipping 23 matching lines...) Expand all
1617 // AllocationMemento object that can be checked for in order to pretransition 1602 // AllocationMemento object that can be checked for in order to pretransition
1618 // to another type. 1603 // to another type.
1619 // On entry, receiver should point to the array object. 1604 // On entry, receiver should point to the array object.
1620 // If allocation info is present, the Z flag is set (so that the eq 1605 // If allocation info is present, the Z flag is set (so that the eq
1621 // condition will pass). 1606 // condition will pass).
1622 void TestJSArrayForAllocationMemento(Register receiver, 1607 void TestJSArrayForAllocationMemento(Register receiver,
1623 Register scratch1, 1608 Register scratch1,
1624 Register scratch2, 1609 Register scratch2,
1625 Label* no_memento_found); 1610 Label* no_memento_found);
1626 1611
1627 void JumpIfJSArrayHasAllocationMemento(Register receiver,
1628 Register scratch1,
1629 Register scratch2,
1630 Label* memento_found) {
1631 Label no_memento_found;
1632 TestJSArrayForAllocationMemento(receiver, scratch1, scratch2,
1633 &no_memento_found);
1634 B(eq, memento_found);
1635 Bind(&no_memento_found);
1636 }
1637
1638 // The stack pointer has to switch between csp and jssp when setting up and 1612 // The stack pointer has to switch between csp and jssp when setting up and
1639 // destroying the exit frame. Hence preserving/restoring the registers is 1613 // destroying the exit frame. Hence preserving/restoring the registers is
1640 // slightly more complicated than simple push/pop operations. 1614 // slightly more complicated than simple push/pop operations.
1641 void ExitFramePreserveFPRegs(); 1615 void ExitFramePreserveFPRegs();
1642 void ExitFrameRestoreFPRegs(); 1616 void ExitFrameRestoreFPRegs();
1643 1617
1644 // Generates function and stub prologue code. 1618 // Generates function and stub prologue code.
1645 void StubPrologue(StackFrame::Type type, int frame_slots); 1619 void StubPrologue(StackFrame::Type type, int frame_slots);
1646 void Prologue(bool code_pre_aging); 1620 void Prologue(bool code_pre_aging);
1647 1621
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
1895 // If emit_debug_code() is false, this emits no code. 1869 // If emit_debug_code() is false, this emits no code.
1896 void AssertIsString(const Register& object); 1870 void AssertIsString(const Register& object);
1897 1871
1898 // Like Assert(), but always enabled. 1872 // Like Assert(), but always enabled.
1899 void Check(Condition cond, BailoutReason reason); 1873 void Check(Condition cond, BailoutReason reason);
1900 void CheckRegisterIsClear(Register reg, BailoutReason reason); 1874 void CheckRegisterIsClear(Register reg, BailoutReason reason);
1901 1875
1902 // Print a message to stderr and abort execution. 1876 // Print a message to stderr and abort execution.
1903 void Abort(BailoutReason reason); 1877 void Abort(BailoutReason reason);
1904 1878
1905 // Conditionally load the cached Array transitioned map of type
1906 // transitioned_kind from the native context if the map in register
1907 // map_in_out is the cached Array map in the native context of
1908 // expected_kind.
1909 void LoadTransitionedArrayMapConditional(
1910 ElementsKind expected_kind,
1911 ElementsKind transitioned_kind,
1912 Register map_in_out,
1913 Register scratch1,
1914 Register scratch2,
1915 Label* no_map_match);
1916
1917 void LoadNativeContextSlot(int index, Register dst); 1879 void LoadNativeContextSlot(int index, Register dst);
1918 1880
1919 // Load the initial map from the global function. The registers function and 1881 // Load the initial map from the global function. The registers function and
1920 // map can be the same, function is then overwritten. 1882 // map can be the same, function is then overwritten.
1921 void LoadGlobalFunctionInitialMap(Register function, 1883 void LoadGlobalFunctionInitialMap(Register function,
1922 Register map, 1884 Register map,
1923 Register scratch); 1885 Register scratch);
1924 1886
1925 CPURegList* TmpList() { return &tmp_list_; } 1887 CPURegList* TmpList() { return &tmp_list_; }
1926 CPURegList* FPTmpList() { return &fptmp_list_; } 1888 CPURegList* FPTmpList() { return &fptmp_list_; }
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
1995 static void EmitCodeAgeSequence(Assembler* assm, Code* stub); 1957 static void EmitCodeAgeSequence(Assembler* assm, Code* stub);
1996 1958
1997 // Call EmitCodeAgeSequence from a MacroAssembler context. 1959 // Call EmitCodeAgeSequence from a MacroAssembler context.
1998 void EmitCodeAgeSequence(Code* stub); 1960 void EmitCodeAgeSequence(Code* stub);
1999 1961
2000 // Return true if the sequence is a young sequence geneated by 1962 // Return true if the sequence is a young sequence geneated by
2001 // EmitFrameSetupForCodeAgePatching. Otherwise, this method asserts that the 1963 // EmitFrameSetupForCodeAgePatching. Otherwise, this method asserts that the
2002 // sequence is a code age sequence (emitted by EmitCodeAgeSequence). 1964 // sequence is a code age sequence (emitted by EmitCodeAgeSequence).
2003 static bool IsYoungSequence(Isolate* isolate, byte* sequence); 1965 static bool IsYoungSequence(Isolate* isolate, byte* sequence);
2004 1966
2005 // Jumps to found label if a prototype map has dictionary elements.
2006 void JumpIfDictionaryInPrototypeChain(Register object, Register scratch0,
2007 Register scratch1, Label* found);
2008
2009 // Perform necessary maintenance operations before a push or after a pop. 1967 // Perform necessary maintenance operations before a push or after a pop.
2010 // 1968 //
2011 // Note that size is specified in bytes. 1969 // Note that size is specified in bytes.
2012 void PushPreamble(Operand total_size); 1970 void PushPreamble(Operand total_size);
2013 void PopPostamble(Operand total_size); 1971 void PopPostamble(Operand total_size);
2014 1972
2015 void PushPreamble(int count, int size) { PushPreamble(count * size); } 1973 void PushPreamble(int count, int size) { PushPreamble(count * size); }
2016 void PopPostamble(int count, int size) { PopPostamble(count * size); } 1974 void PopPostamble(int count, int size) { PopPostamble(count * size); }
2017 1975
2018 private: 1976 private:
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
2271 class RegisterBits : public BitField<unsigned, 0, 5> {}; 2229 class RegisterBits : public BitField<unsigned, 0, 5> {};
2272 class DeltaBits : public BitField<uint32_t, 5, 32-5> {}; 2230 class DeltaBits : public BitField<uint32_t, 5, 32-5> {};
2273 }; 2231 };
2274 2232
2275 } // namespace internal 2233 } // namespace internal
2276 } // namespace v8 2234 } // namespace v8
2277 2235
2278 #define ACCESS_MASM(masm) masm-> 2236 #define ACCESS_MASM(masm) masm->
2279 2237
2280 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ 2238 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_
OLDNEW
« no previous file with comments | « src/arm64/codegen-arm64.cc ('k') | src/arm64/macro-assembler-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698