diff options
Diffstat (limited to 'deps/v8/src/ia32/lithium-codegen-ia32.h')
-rw-r--r-- | deps/v8/src/ia32/lithium-codegen-ia32.h | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/deps/v8/src/ia32/lithium-codegen-ia32.h b/deps/v8/src/ia32/lithium-codegen-ia32.h index 681ea77e5b..defbcab0aa 100644 --- a/deps/v8/src/ia32/lithium-codegen-ia32.h +++ b/deps/v8/src/ia32/lithium-codegen-ia32.h @@ -56,7 +56,7 @@ class LCodeGen BASE_EMBEDDED { deoptimizations_(4), deoptimization_literals_(8), inlined_function_count_(0), - scope_(chunk->graph()->info()->scope()), + scope_(info->scope()), status_(UNUSED), deferred_(8), osr_pc_offset_(-1), @@ -68,6 +68,10 @@ class LCodeGen BASE_EMBEDDED { // Simple accessors. MacroAssembler* masm() const { return masm_; } + CompilationInfo* info() const { return info_; } + Isolate* isolate() const { return info_->isolate(); } + Factory* factory() const { return isolate()->factory(); } + Heap* heap() const { return isolate()->heap(); } // Support for converting LOperands to assembler types. Operand ToOperand(LOperand* op) const; @@ -93,13 +97,15 @@ class LCodeGen BASE_EMBEDDED { void DoDeferredNumberTagI(LNumberTagI* instr); void DoDeferredTaggedToI(LTaggedToI* instr); void DoDeferredMathAbsTaggedHeapNumber(LUnaryMathOperation* instr); - void DoDeferredStackCheck(LGoto* instr); + void DoDeferredStackCheck(LStackCheck* instr); void DoDeferredStringCharCodeAt(LStringCharCodeAt* instr); + void DoDeferredStringCharFromCode(LStringCharFromCode* instr); void DoDeferredLInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr, Label* map_check); // Parallel move support. void DoParallelMove(LParallelMove* move); + void DoGap(LGap* instr); // Emit frame translation commands for an environment. void WriteTranslation(LEnvironment* environment, Translation* translation); @@ -125,7 +131,7 @@ class LCodeGen BASE_EMBEDDED { bool is_aborted() const { return status_ == ABORTED; } int strict_mode_flag() const { - return info_->is_strict() ? kStrictMode : kNonStrictMode; + return info()->is_strict_mode() ? kStrictMode : kNonStrictMode; } LChunk* chunk() const { return chunk_; } @@ -142,8 +148,8 @@ class LCodeGen BASE_EMBEDDED { Register temporary, Register temporary2); - int StackSlotCount() const { return chunk()->spill_slot_count(); } - int ParameterCount() const { return scope()->num_parameters(); } + int GetStackSlotCount() const { return chunk()->spill_slot_count(); } + int GetParameterCount() const { return scope()->num_parameters(); } void Abort(const char* format, ...); void Comment(const char* format, ...); @@ -181,7 +187,7 @@ class LCodeGen BASE_EMBEDDED { ContextMode context_mode, SafepointMode safepoint_mode); - void CallRuntime(Runtime::Function* fun, + void CallRuntime(const Runtime::Function* fun, int argc, LInstruction* instr, ContextMode context_mode); @@ -190,7 +196,7 @@ class LCodeGen BASE_EMBEDDED { int argc, LInstruction* instr, ContextMode context_mode) { - Runtime::Function* function = Runtime::FunctionForId(id); + const Runtime::Function* function = Runtime::FunctionForId(id); CallRuntime(function, argc, instr, context_mode); } @@ -202,7 +208,8 @@ class LCodeGen BASE_EMBEDDED { // to be in edi. void CallKnownFunction(Handle<JSFunction> function, int arity, - LInstruction* instr); + LInstruction* instr, + CallKind call_kind); void LoadHeapObject(Register result, Handle<HeapObject> object); @@ -223,6 +230,9 @@ class LCodeGen BASE_EMBEDDED { Register ToRegister(int index) const; XMMRegister ToDoubleRegister(int index) const; int ToInteger32(LConstantOperand* op) const; + Operand BuildExternalArrayOperand(LOperand* external_pointer, + LOperand* key, + JSObject::ElementsKind elements_kind); // Specific math operations - used from DoUnaryMathOperation. void EmitIntegerMathAbs(LUnaryMathOperation* instr); @@ -248,10 +258,13 @@ class LCodeGen BASE_EMBEDDED { void RecordPosition(int position); static Condition TokenToCondition(Token::Value op, bool is_unsigned); - void EmitGoto(int block, LDeferredCode* deferred_stack_check = NULL); + void EmitGoto(int block); void EmitBranch(int left_block, int right_block, Condition cc); void EmitCmpI(LOperand* left, LOperand* right); - void EmitNumberUntagD(Register input, XMMRegister result, LEnvironment* env); + void EmitNumberUntagD(Register input, + XMMRegister result, + bool deoptimize_on_undefined, + LEnvironment* env); // Emits optimized code for typeof x == "y". Modifies input register. // Returns the condition on which a final split to @@ -264,7 +277,6 @@ class LCodeGen BASE_EMBEDDED { // true and false label should be made, to optimize fallthrough. Condition EmitIsObject(Register input, Register temp1, - Register temp2, Label* is_not_object, Label* is_object); @@ -272,6 +284,10 @@ class LCodeGen BASE_EMBEDDED { // Caller should branch on equal condition. void EmitIsConstructCall(Register temp); + void EmitLoadFieldOrConstantFunction(Register result, + Register object, + Handle<Map> type, + Handle<String> name); LChunk* const chunk_; MacroAssembler* const masm_; |