diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2011-01-17 11:32:56 -0800 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2011-01-17 11:32:56 -0800 |
commit | cf2e4f44afbfb208c5976786c96ec963930323cc (patch) | |
tree | 7e9ddac16d51490f1428abb610afd02eda98aacf /deps/v8/src/arm/lithium-codegen-arm.h | |
parent | 082a4b6033df22a68518c58d320e86f688db7bda (diff) | |
download | node-cf2e4f44afbfb208c5976786c96ec963930323cc.tar.gz |
Upgrade V8 to 3.0.8
Diffstat (limited to 'deps/v8/src/arm/lithium-codegen-arm.h')
-rw-r--r-- | deps/v8/src/arm/lithium-codegen-arm.h | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/deps/v8/src/arm/lithium-codegen-arm.h b/deps/v8/src/arm/lithium-codegen-arm.h index 541a69961..9eed64b45 100644 --- a/deps/v8/src/arm/lithium-codegen-arm.h +++ b/deps/v8/src/arm/lithium-codegen-arm.h @@ -1,4 +1,4 @@ -// Copyright 2010 the V8 project authors. All rights reserved. +// Copyright 2011 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: @@ -39,8 +39,30 @@ namespace internal { // Forward declarations. class LDeferredCode; +class LGapNode; class SafepointGenerator; +class LGapResolver BASE_EMBEDDED { + public: + LGapResolver(); + const ZoneList<LMoveOperands>* Resolve(const ZoneList<LMoveOperands>* moves, + LOperand* marker_operand); + + private: + LGapNode* LookupNode(LOperand* operand); + bool CanReach(LGapNode* a, LGapNode* b, int visited_id); + bool CanReach(LGapNode* a, LGapNode* b); + void RegisterMove(LMoveOperands move); + void AddResultMove(LOperand* from, LOperand* to); + void AddResultMove(LGapNode* from, LGapNode* to); + void ResolveCycle(LGapNode* start, LOperand* marker_operand); + + ZoneList<LGapNode*> nodes_; + ZoneList<LGapNode*> identified_cycles_; + ZoneList<LMoveOperands> result_; + int next_visited_id_; +}; + class LCodeGen BASE_EMBEDDED { public: @@ -71,6 +93,7 @@ class LCodeGen BASE_EMBEDDED { void FinishCode(Handle<Code> code); // Deferred code support. + void DoDeferredGenericBinaryStub(LBinaryOperation* instr, Token::Value op); void DoDeferredNumberTagD(LNumberTagD* instr); void DoDeferredNumberTagI(LNumberTagI* instr); void DoDeferredTaggedToI(LTaggedToI* instr); @@ -80,6 +103,9 @@ class LCodeGen BASE_EMBEDDED { // Parallel move support. void DoParallelMove(LParallelMove* move); + // Emit frame translation commands for an environment. + void WriteTranslation(LEnvironment* environment, Translation* translation); + // Declare methods that deal with the individual node types. #define DECLARE_DO(type) void Do##type(L##type* node); LITHIUM_CONCRETE_INSTRUCTION_LIST(DECLARE_DO) @@ -103,6 +129,9 @@ class LCodeGen BASE_EMBEDDED { HGraph* graph() const { return chunk_->graph(); } MacroAssembler* masm() const { return masm_; } + Register scratch0() { return r9; } + DwVfpRegister double_scratch0() { return d0; } + int GetNextEmittedBlock(int block); LInstruction* GetNextInstruction(); @@ -147,7 +176,7 @@ class LCodeGen BASE_EMBEDDED { int arity, LInstruction* instr); - void LoadPrototype(Register result, Handle<JSObject> prototype); + void LoadHeapObject(Register result, Handle<HeapObject> object); void RegisterLazyDeoptimization(LInstruction* instr); void RegisterEnvironmentForDeoptimization(LEnvironment* environment); @@ -192,6 +221,9 @@ class LCodeGen BASE_EMBEDDED { void RecordSafepointWithRegisters(LPointerMap* pointers, int arguments, int deoptimization_index); + void RecordSafepointWithRegistersAndDoubles(LPointerMap* pointers, + int arguments, + int deoptimization_index); void RecordPosition(int position); static Condition TokenToCondition(Token::Value op, bool is_unsigned); @@ -237,6 +269,9 @@ class LCodeGen BASE_EMBEDDED { // itself is emitted at the end of the generated code. SafepointTableBuilder safepoints_; + // Compiler from a set of parallel moves to a sequential list of moves. + LGapResolver resolver_; + friend class LDeferredCode; friend class LEnvironment; friend class SafepointGenerator; |