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

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

Issue 149413010: A64: Synchronize with r16024. (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/lithium-codegen-a64.cc ('k') | src/a64/macro-assembler-a64.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 // 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 686 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 AllowDeferredHandleDereference heap_object_check; 697 AllowDeferredHandleDereference heap_object_check;
698 if (object->IsHeapObject()) { 698 if (object->IsHeapObject()) {
699 LoadHeapObject(result, Handle<HeapObject>::cast(object)); 699 LoadHeapObject(result, Handle<HeapObject>::cast(object));
700 } else { 700 } else {
701 Mov(result, Operand(object)); 701 Mov(result, Operand(object));
702 } 702 }
703 } 703 }
704 704
705 static int SafepointRegisterStackIndex(int reg_code); 705 static int SafepointRegisterStackIndex(int reg_code);
706 706
707 void CheckForInvalidValuesInCalleeSavedRegs(RegList list);
708
709 // This is required for compatibility with architecture independant code. 707 // This is required for compatibility with architecture independant code.
710 // Remove if not needed. 708 // Remove if not needed.
711 inline void Move(Register dst, Register src) { Mov(dst, src); } 709 inline void Move(Register dst, Register src) { Mov(dst, src); }
712 710
713 void LoadInstanceDescriptors(Register map, 711 void LoadInstanceDescriptors(Register map,
714 Register descriptors); 712 Register descriptors);
715 void EnumLengthUntagged(Register dst, Register map); 713 void EnumLengthUntagged(Register dst, Register map);
716 void EnumLengthSmi(Register dst, Register map); 714 void EnumLengthSmi(Register dst, Register map);
717 void NumberOfOwnDescriptors(Register dst, Register map); 715 void NumberOfOwnDescriptors(Register dst, Register map);
718 716
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
754 Label* either_smi_label, 752 Label* either_smi_label,
755 Label* not_smi_label = NULL); 753 Label* not_smi_label = NULL);
756 inline void JumpIfEitherNotSmi(Register value1, 754 inline void JumpIfEitherNotSmi(Register value1,
757 Register value2, 755 Register value2,
758 Label* not_smi_label); 756 Label* not_smi_label);
759 inline void JumpIfBothNotSmi(Register value1, 757 inline void JumpIfBothNotSmi(Register value1,
760 Register value2, 758 Register value2,
761 Label* not_smi_label); 759 Label* not_smi_label);
762 760
763 // Abort execution if argument is a smi, enabled via --debug-code. 761 // Abort execution if argument is a smi, enabled via --debug-code.
764 void AssertNotSmi(Register object, 762 void AssertNotSmi(Register object, BailoutReason reason = kOperandIsASmi);
765 const char* fail_message = "Operand is a smi"); 763 void AssertSmi(Register object, BailoutReason reason = kOperandIsNotASmi);
766 void AssertSmi(Register object,
767 const char* fail_message = "Operand is not a smi");
768 764
769 // Abort execution if argument is not a name, enabled via --debug-code. 765 // Abort execution if argument is not a name, enabled via --debug-code.
770 void AssertName(Register object); 766 void AssertName(Register object);
771 767
772 // Abort execution if argument is not a string, enabled via --debug-code. 768 // Abort execution if argument is not a string, enabled via --debug-code.
773 void AssertString(Register object); 769 void AssertString(Register object);
774 770
775 // Abort execution if argument is not the root value with the given index,
776 // enabled via --debug-code.
777 void AssertRootValue(Register src,
778 Heap::RootListIndex root_value_index,
779 const char* message);
780
781 void JumpForHeapNumber(Register object, 771 void JumpForHeapNumber(Register object,
782 Register heap_number_map, 772 Register heap_number_map,
783 Label* on_heap_number, 773 Label* on_heap_number,
784 Label* on_not_heap_number = NULL); 774 Label* on_not_heap_number = NULL);
785 void JumpIfHeapNumber(Register object, 775 void JumpIfHeapNumber(Register object,
786 Label* on_heap_number, 776 Label* on_heap_number,
787 Register heap_number_map = NoReg); 777 Register heap_number_map = NoReg);
788 void JumpIfNotHeapNumber(Register object, 778 void JumpIfNotHeapNumber(Register object,
789 Label* on_not_heap_number, 779 Label* on_not_heap_number,
790 Register heap_number_map = NoReg); 780 Register heap_number_map = NoReg);
(...skipping 934 matching lines...) Expand 10 before | Expand all | Expand 10 after
1725 // from its load site. 1715 // from its load site.
1726 void GetRelocatedValueLocation(Register ldr_location, 1716 void GetRelocatedValueLocation(Register ldr_location,
1727 Register result); 1717 Register result);
1728 1718
1729 1719
1730 // --------------------------------------------------------------------------- 1720 // ---------------------------------------------------------------------------
1731 // Debugging. 1721 // Debugging.
1732 1722
1733 // Calls Abort(msg) if the condition cond is not satisfied. 1723 // Calls Abort(msg) if the condition cond is not satisfied.
1734 // Use --debug_code to enable. 1724 // Use --debug_code to enable.
1735 void Assert(Condition cond, const char* msg); 1725 void Assert(Condition cond, BailoutReason reason);
1736 void AssertRegisterIsClear(Register reg, const char* msg); 1726 void AssertRegisterIsClear(Register reg, BailoutReason reason);
1737 void AssertRegisterIsRoot(Register reg, Heap::RootListIndex index); 1727 void AssertRegisterIsRoot(Register reg, Heap::RootListIndex index);
1738 void AssertFastElements(Register elements); 1728 void AssertFastElements(Register elements);
1739 1729
1740 // Abort if the specified register contains the invalid color bit pattern. 1730 // Abort if the specified register contains the invalid color bit pattern.
1741 // The pattern must be in bits [1:0] of 'reg' register. 1731 // The pattern must be in bits [1:0] of 'reg' register.
1742 // 1732 //
1743 // If emit_debug_code() is false, this emits no code. 1733 // If emit_debug_code() is false, this emits no code.
1744 void AssertHasValidColor(const Register& reg); 1734 void AssertHasValidColor(const Register& reg);
1745 1735
1746 // Abort if 'object' register doesn't point to a string object. 1736 // Abort if 'object' register doesn't point to a string object.
1747 // 1737 //
1748 // If emit_debug_code() is false, this emits no code. 1738 // If emit_debug_code() is false, this emits no code.
1749 void AssertIsString(const Register& object); 1739 void AssertIsString(const Register& object);
1750 1740
1751 // Like Assert(), but always enabled. 1741 // Like Assert(), but always enabled.
1752 void Check(Condition cond, const char* msg); 1742 void Check(Condition cond, BailoutReason reason);
1753 void CheckRegisterIsClear(Register reg, const char* msg); 1743 void CheckRegisterIsClear(Register reg, BailoutReason reason);
1754 1744
1755 // Print a message to stderr and abort execution. 1745 // Print a message to stderr and abort execution.
1756 void Abort(const char* msg); 1746 void Abort(BailoutReason reason);
1757 1747
1758 // Conditionally load the cached Array transitioned map of type 1748 // Conditionally load the cached Array transitioned map of type
1759 // transitioned_kind from the native context if the map in register 1749 // transitioned_kind from the native context if the map in register
1760 // map_in_out is the cached Array map in the native context of 1750 // map_in_out is the cached Array map in the native context of
1761 // expected_kind. 1751 // expected_kind.
1762 void LoadTransitionedArrayMapConditional( 1752 void LoadTransitionedArrayMapConditional(
1763 ElementsKind expected_kind, 1753 ElementsKind expected_kind,
1764 ElementsKind transitioned_kind, 1754 ElementsKind transitioned_kind,
1765 Register map_in_out, 1755 Register map_in_out,
1766 Register scratch, 1756 Register scratch,
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
2144 #error "Unsupported option" 2134 #error "Unsupported option"
2145 #define CODE_COVERAGE_STRINGIFY(x) #x 2135 #define CODE_COVERAGE_STRINGIFY(x) #x
2146 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) 2136 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x)
2147 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 2137 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
2148 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 2138 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
2149 #else 2139 #else
2150 #define ACCESS_MASM(masm) masm-> 2140 #define ACCESS_MASM(masm) masm->
2151 #endif 2141 #endif
2152 2142
2153 #endif // V8_A64_MACRO_ASSEMBLER_A64_H_ 2143 #endif // V8_A64_MACRO_ASSEMBLER_A64_H_
OLDNEW
« no previous file with comments | « src/a64/lithium-codegen-a64.cc ('k') | src/a64/macro-assembler-a64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698