diff options
author | Timothy J Fontaine <tjfontaine@gmail.com> | 2013-10-22 15:14:25 -0700 |
---|---|---|
committer | Timothy J Fontaine <tjfontaine@gmail.com> | 2013-10-23 09:17:31 -0700 |
commit | a53c763c16eeabb0901a05dbcf38a72fa96d2f26 (patch) | |
tree | 309bf250e1521cedf0e945d7a7629db511e64498 /deps/v8/src/x64/codegen-x64.h | |
parent | 54910044b33a6405c72ad085915a55c575c027fc (diff) | |
download | node-a53c763c16eeabb0901a05dbcf38a72fa96d2f26.tar.gz |
v8: upgrade 3.21.18.3
Diffstat (limited to 'deps/v8/src/x64/codegen-x64.h')
-rw-r--r-- | deps/v8/src/x64/codegen-x64.h | 73 |
1 files changed, 70 insertions, 3 deletions
diff --git a/deps/v8/src/x64/codegen-x64.h b/deps/v8/src/x64/codegen-x64.h index 5747e0bc6..7d1f59ad5 100644 --- a/deps/v8/src/x64/codegen-x64.h +++ b/deps/v8/src/x64/codegen-x64.h @@ -44,8 +44,8 @@ enum TypeofState { INSIDE_TYPEOF, NOT_INSIDE_TYPEOF }; class CodeGenerator: public AstVisitor { public: - CodeGenerator() { - InitializeAstVisitor(); + explicit CodeGenerator(Isolate* isolate) { + InitializeAstVisitor(isolate); } static bool MakeCode(CompilationInfo* info); @@ -61,7 +61,7 @@ class CodeGenerator: public AstVisitor { // Print the code after compiling it. static void PrintCode(Handle<Code> code, CompilationInfo* info); - static bool ShouldGenerateLog(Expression* type); + static bool ShouldGenerateLog(Isolate* isolate, Expression* type); static bool RecordPositions(MacroAssembler* masm, int pos, @@ -103,6 +103,73 @@ class MathExpGenerator : public AllStatic { DISALLOW_COPY_AND_ASSIGN(MathExpGenerator); }; + +enum StackArgumentsAccessorReceiverMode { + ARGUMENTS_CONTAIN_RECEIVER, + ARGUMENTS_DONT_CONTAIN_RECEIVER +}; + + +class StackArgumentsAccessor BASE_EMBEDDED { + public: + StackArgumentsAccessor( + Register base_reg, + int argument_count_immediate, + StackArgumentsAccessorReceiverMode receiver_mode = + ARGUMENTS_CONTAIN_RECEIVER, + int extra_displacement_to_last_argument = 0) + : base_reg_(base_reg), + argument_count_reg_(no_reg), + argument_count_immediate_(argument_count_immediate), + receiver_mode_(receiver_mode), + extra_displacement_to_last_argument_( + extra_displacement_to_last_argument) { } + + StackArgumentsAccessor( + Register base_reg, + Register argument_count_reg, + StackArgumentsAccessorReceiverMode receiver_mode = + ARGUMENTS_CONTAIN_RECEIVER, + int extra_displacement_to_last_argument = 0) + : base_reg_(base_reg), + argument_count_reg_(argument_count_reg), + argument_count_immediate_(0), + receiver_mode_(receiver_mode), + extra_displacement_to_last_argument_( + extra_displacement_to_last_argument) { } + + StackArgumentsAccessor( + Register base_reg, + const ParameterCount& parameter_count, + StackArgumentsAccessorReceiverMode receiver_mode = + ARGUMENTS_CONTAIN_RECEIVER, + int extra_displacement_to_last_argument = 0) + : base_reg_(base_reg), + argument_count_reg_(parameter_count.is_reg() ? + parameter_count.reg() : no_reg), + argument_count_immediate_(parameter_count.is_immediate() ? + parameter_count.immediate() : 0), + receiver_mode_(receiver_mode), + extra_displacement_to_last_argument_( + extra_displacement_to_last_argument) { } + + Operand GetArgumentOperand(int index); + Operand GetReceiverOperand() { + ASSERT(receiver_mode_ == ARGUMENTS_CONTAIN_RECEIVER); + return GetArgumentOperand(0);; + } + + private: + const Register base_reg_; + const Register argument_count_reg_; + const int argument_count_immediate_; + const StackArgumentsAccessorReceiverMode receiver_mode_; + const int extra_displacement_to_last_argument_; + + DISALLOW_IMPLICIT_CONSTRUCTORS(StackArgumentsAccessor); +}; + + } } // namespace v8::internal #endif // V8_X64_CODEGEN_X64_H_ |