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

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

Issue 196473021: A64: Handle a few TODOs. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 9 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
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 520 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 // 531 //
532 // Even if the current stack pointer is not the system stack pointer (csp), 532 // Even if the current stack pointer is not the system stack pointer (csp),
533 // Push (and derived methods) will still modify the system stack pointer in 533 // Push (and derived methods) will still modify the system stack pointer in
534 // order to comply with ABI rules about accessing memory below the system 534 // order to comply with ABI rules about accessing memory below the system
535 // stack pointer. 535 // stack pointer.
536 // 536 //
537 // Other than the registers passed into Pop, the stack pointer and (possibly) 537 // Other than the registers passed into Pop, the stack pointer and (possibly)
538 // the system stack pointer, these methods do not modify any other registers. 538 // the system stack pointer, these methods do not modify any other registers.
539 void Push(const CPURegister& src0, const CPURegister& src1 = NoReg, 539 void Push(const CPURegister& src0, const CPURegister& src1 = NoReg,
540 const CPURegister& src2 = NoReg, const CPURegister& src3 = NoReg); 540 const CPURegister& src2 = NoReg, const CPURegister& src3 = NoReg);
541 void Push(const CPURegister& src0, const CPURegister& src1,
542 const CPURegister& src2, const CPURegister& src3,
543 const CPURegister& src4, const CPURegister& src5 = NoReg,
544 const CPURegister& src6 = NoReg, const CPURegister& src7 = NoReg);
541 void Pop(const CPURegister& dst0, const CPURegister& dst1 = NoReg, 545 void Pop(const CPURegister& dst0, const CPURegister& dst1 = NoReg,
542 const CPURegister& dst2 = NoReg, const CPURegister& dst3 = NoReg); 546 const CPURegister& dst2 = NoReg, const CPURegister& dst3 = NoReg);
543 547
544 // Alternative forms of Push and Pop, taking a RegList or CPURegList that 548 // Alternative forms of Push and Pop, taking a RegList or CPURegList that
545 // specifies the registers that are to be pushed or popped. Higher-numbered 549 // specifies the registers that are to be pushed or popped. Higher-numbered
546 // registers are associated with higher memory addresses (as in the A32 push 550 // registers are associated with higher memory addresses (as in the A32 push
547 // and pop instructions). 551 // and pop instructions).
548 // 552 //
549 // (Push|Pop)SizeRegList allow you to specify the register size as a 553 // (Push|Pop)SizeRegList allow you to specify the register size as a
550 // parameter. Only kXRegSizeInBits, kWRegSizeInBits, kDRegSizeInBits and 554 // parameter. Only kXRegSizeInBits, kWRegSizeInBits, kDRegSizeInBits and
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
784 // Push the system stack pointer (csp) down to allow the same to be done to 788 // Push the system stack pointer (csp) down to allow the same to be done to
785 // the current stack pointer (according to StackPointer()). This must be 789 // the current stack pointer (according to StackPointer()). This must be
786 // called _before_ accessing the memory. 790 // called _before_ accessing the memory.
787 // 791 //
788 // This is necessary when pushing or otherwise adding things to the stack, to 792 // This is necessary when pushing or otherwise adding things to the stack, to
789 // satisfy the AAPCS64 constraint that the memory below the system stack 793 // satisfy the AAPCS64 constraint that the memory below the system stack
790 // pointer is not accessed. 794 // pointer is not accessed.
791 // 795 //
792 // This method asserts that StackPointer() is not csp, since the call does 796 // This method asserts that StackPointer() is not csp, since the call does
793 // not make sense in that context. 797 // not make sense in that context.
794 //
795 // TODO(jbramley): Currently, this method can only accept values of 'space'
796 // that can be encoded in one instruction. Refer to the implementation for
797 // details.
798 inline void BumpSystemStackPointer(const Operand& space); 798 inline void BumpSystemStackPointer(const Operand& space);
799 799
800 // Helpers ------------------------------------------------------------------ 800 // Helpers ------------------------------------------------------------------
801 // Root register. 801 // Root register.
802 inline void InitializeRootRegister(); 802 inline void InitializeRootRegister();
803 803
804 // Load an object from the root table. 804 // Load an object from the root table.
805 void LoadRoot(Register destination, 805 void LoadRoot(Register destination,
806 Heap::RootListIndex index); 806 Heap::RootListIndex index);
807 // Store an object to the root table. 807 // Store an object to the root table.
(...skipping 1481 matching lines...) Expand 10 before | Expand all | Expand 10 after
2289 #error "Unsupported option" 2289 #error "Unsupported option"
2290 #define CODE_COVERAGE_STRINGIFY(x) #x 2290 #define CODE_COVERAGE_STRINGIFY(x) #x
2291 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) 2291 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x)
2292 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 2292 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
2293 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 2293 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
2294 #else 2294 #else
2295 #define ACCESS_MASM(masm) masm-> 2295 #define ACCESS_MASM(masm) masm->
2296 #endif 2296 #endif
2297 2297
2298 #endif // V8_A64_MACRO_ASSEMBLER_A64_H_ 2298 #endif // V8_A64_MACRO_ASSEMBLER_A64_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698