vendor/v8/src/arm/lithium-codegen-arm.h in mustang-0.0.1 vs vendor/v8/src/arm/lithium-codegen-arm.h in mustang-0.1.0

- old
+ new

@@ -51,21 +51,25 @@ current_instruction_(-1), instructions_(chunk->instructions()), 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), resolver_(this) { PopulateDeoptimizationLiteralsWithInlinedFunctions(); } // 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. // LOperand must be a register. Register ToRegister(LOperand* op) const; @@ -102,10 +106,11 @@ void DoDeferredNumberTagI(LNumberTagI* instr); void DoDeferredTaggedToI(LTaggedToI* instr); void DoDeferredMathAbsTaggedHeapNumber(LUnaryMathOperation* instr); void DoDeferredStackCheck(LGoto* instr); void DoDeferredStringCharCodeAt(LStringCharCodeAt* instr); + void DoDeferredStringCharFromCode(LStringCharFromCode* instr); void DoDeferredLInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr, Label* map_check); // Parallel move support. void DoParallelMove(LParallelMove* move); @@ -130,11 +135,11 @@ bool is_generating() const { return status_ == GENERATING; } bool is_done() const { return status_ == DONE; } bool is_aborted() const { return status_ == ABORTED; } int strict_mode_flag() const { - return info_->is_strict() ? kStrictMode : kNonStrictMode; + return info()->is_strict() ? kStrictMode : kNonStrictMode; } LChunk* chunk() const { return chunk_; } Scope* scope() const { return scope_; } HGraph* graph() const { return chunk_->graph(); } @@ -168,17 +173,17 @@ bool GenerateSafepointTable(); void CallCode(Handle<Code> code, RelocInfo::Mode mode, LInstruction* instr); - void CallRuntime(Runtime::Function* function, + void CallRuntime(const Runtime::Function* function, int num_arguments, LInstruction* instr); void CallRuntime(Runtime::FunctionId id, int num_arguments, LInstruction* instr) { - Runtime::Function* function = Runtime::FunctionForId(id); + const Runtime::Function* function = Runtime::FunctionForId(id); CallRuntime(function, num_arguments, instr); } // Generate a direct call to a known function. Expects the function // to be in edi. @@ -204,18 +209,17 @@ DoubleRegister ToDoubleRegister(int index) const; // Specific math operations - used from DoUnaryMathOperation. void EmitIntegerMathAbs(LUnaryMathOperation* instr); void DoMathAbs(LUnaryMathOperation* instr); - void EmitVFPTruncate(VFPRoundingMode rounding_mode, - SwVfpRegister result, - DwVfpRegister double_input, - Register scratch1, - Register scratch2); void DoMathFloor(LUnaryMathOperation* instr); void DoMathRound(LUnaryMathOperation* instr); void DoMathSqrt(LUnaryMathOperation* instr); + void DoMathPowHalf(LUnaryMathOperation* instr); + void DoMathLog(LUnaryMathOperation* instr); + void DoMathCos(LUnaryMathOperation* instr); + void DoMathSin(LUnaryMathOperation* instr); // Support for recording safepoint and position information. void RecordSafepoint(LPointerMap* pointers, Safepoint::Kind kind, int arguments, @@ -227,10 +231,13 @@ int deoptimization_index); void RecordSafepointWithRegistersAndDoubles(LPointerMap* pointers, int arguments, int deoptimization_index); void RecordPosition(int position); + int LastSafepointEnd() { + return static_cast<int>(safepoints_.GetPcAfterGap()); + } static Condition TokenToCondition(Token::Value op, bool is_unsigned); void EmitGoto(int block, LDeferredCode* deferred_stack_check = NULL); void EmitBranch(int left_block, int right_block, Condition cc); void EmitCmpI(LOperand* left, LOperand* right); @@ -254,9 +261,14 @@ Label* is_object); // Emits optimized code for %_IsConstructCall(). // Caller should branch on equal condition. void EmitIsConstructCall(Register temp1, Register temp2); + + void EmitLoadField(Register result, + Register object, + Handle<Map> type, + Handle<String> name); LChunk* const chunk_; MacroAssembler* const masm_; CompilationInfo* const info_;