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

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

Issue 6322008: Version 3.0.10... (Closed) Base URL: http://v8.googlecode.com/svn/trunk/
Patch Set: Created 9 years, 11 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/arm/lithium-codegen-arm.cc ('k') | src/arm/macro-assembler-arm.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 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 Push(src2, src3, src4, cond); 227 Push(src2, src3, src4, cond);
228 } 228 }
229 } 229 }
230 230
231 // Push and pop the registers that can hold pointers, as defined by the 231 // Push and pop the registers that can hold pointers, as defined by the
232 // RegList constant kSafepointSavedRegisters. 232 // RegList constant kSafepointSavedRegisters.
233 void PushSafepointRegisters(); 233 void PushSafepointRegisters();
234 void PopSafepointRegisters(); 234 void PopSafepointRegisters();
235 void PushSafepointRegistersAndDoubles(); 235 void PushSafepointRegistersAndDoubles();
236 void PopSafepointRegistersAndDoubles(); 236 void PopSafepointRegistersAndDoubles();
237 237 void StoreToSafepointRegisterSlot(Register reg);
238 static int SafepointRegisterStackIndex(int reg_code); 238 static int SafepointRegisterStackIndex(int reg_code);
239 static MemOperand SafepointRegisterSlot(Register reg);
239 240
240 // Load two consecutive registers with two consecutive memory locations. 241 // Load two consecutive registers with two consecutive memory locations.
241 void Ldrd(Register dst1, 242 void Ldrd(Register dst1,
242 Register dst2, 243 Register dst2,
243 const MemOperand& src, 244 const MemOperand& src,
244 Condition cond = al); 245 Condition cond = al);
245 246
246 // Store two consecutive registers to two consecutive memory locations. 247 // Store two consecutive registers to two consecutive memory locations.
247 void Strd(Register src1, 248 void Strd(Register src1,
248 Register src2, 249 Register src2,
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 mov(reg, Operand(reg, ASR, kSmiTagSize)); 734 mov(reg, Operand(reg, ASR, kSmiTagSize));
734 } 735 }
735 736
736 // Jump if either of the registers contain a non-smi. 737 // Jump if either of the registers contain a non-smi.
737 void JumpIfNotBothSmi(Register reg1, Register reg2, Label* on_not_both_smi); 738 void JumpIfNotBothSmi(Register reg1, Register reg2, Label* on_not_both_smi);
738 // Jump if either of the registers contain a smi. 739 // Jump if either of the registers contain a smi.
739 void JumpIfEitherSmi(Register reg1, Register reg2, Label* on_either_smi); 740 void JumpIfEitherSmi(Register reg1, Register reg2, Label* on_either_smi);
740 741
741 // Abort execution if argument is a smi. Used in debug code. 742 // Abort execution if argument is a smi. Used in debug code.
742 void AbortIfSmi(Register object); 743 void AbortIfSmi(Register object);
744 void AbortIfNotSmi(Register object);
743 745
744 // --------------------------------------------------------------------------- 746 // ---------------------------------------------------------------------------
745 // String utilities 747 // String utilities
746 748
747 // Checks if both objects are sequential ASCII strings and jumps to label 749 // Checks if both objects are sequential ASCII strings and jumps to label
748 // if either is not. Assumes that neither object is a smi. 750 // if either is not. Assumes that neither object is a smi.
749 void JumpIfNonSmisNotBothSequentialAsciiStrings(Register object1, 751 void JumpIfNonSmisNotBothSequentialAsciiStrings(Register object1,
750 Register object2, 752 Register object2,
751 Register scratch1, 753 Register scratch1,
752 Register scratch2, 754 Register scratch2,
(...skipping 16 matching lines...) Expand all
769 Register scratch2, 771 Register scratch2,
770 Label* failure); 772 Label* failure);
771 773
772 // Check if instance type is sequential ASCII string and jump to label if 774 // Check if instance type is sequential ASCII string and jump to label if
773 // it is not. 775 // it is not.
774 void JumpIfInstanceTypeIsNotSequentialAscii(Register type, 776 void JumpIfInstanceTypeIsNotSequentialAscii(Register type,
775 Register scratch, 777 Register scratch,
776 Label* failure); 778 Label* failure);
777 779
778 780
781 // ---------------------------------------------------------------------------
782 // Patching helpers.
783
784 // Get the location of a relocated constant (its address in the constant pool)
785 // from its load site.
786 void GetRelocatedValueLocation(Register ldr_location,
787 Register result);
788
789
779 private: 790 private:
780 void Jump(intptr_t target, RelocInfo::Mode rmode, Condition cond = al); 791 void Jump(intptr_t target, RelocInfo::Mode rmode, Condition cond = al);
781 void Call(intptr_t target, RelocInfo::Mode rmode, Condition cond = al); 792 void Call(intptr_t target, RelocInfo::Mode rmode, Condition cond = al);
782 793
783 // Helper functions for generating invokes. 794 // Helper functions for generating invokes.
784 void InvokePrologue(const ParameterCount& expected, 795 void InvokePrologue(const ParameterCount& expected,
785 const ParameterCount& actual, 796 const ParameterCount& actual,
786 Handle<Code> code_constant, 797 Handle<Code> code_constant,
787 Register code_reg, 798 Register code_reg,
788 Label* done, 799 Label* done,
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
865 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 876 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
866 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 877 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
867 #else 878 #else
868 #define ACCESS_MASM(masm) masm-> 879 #define ACCESS_MASM(masm) masm->
869 #endif 880 #endif
870 881
871 882
872 } } // namespace v8::internal 883 } } // namespace v8::internal
873 884
874 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ 885 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « src/arm/lithium-codegen-arm.cc ('k') | src/arm/macro-assembler-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698