Chromium Code Reviews| Index: src/lithium-codegen.h |
| diff --git a/src/typing.h b/src/lithium-codegen.h |
| similarity index 50% |
| copy from src/typing.h |
| copy to src/lithium-codegen.h |
| index c942b0063278708d4c4828652ebd7d9365943717..90e00fb1ad094f5f2041ef23d8bed15fb7c8f26c 100644 |
| --- a/src/typing.h |
| +++ b/src/lithium-codegen.h |
| @@ -25,78 +25,74 @@ |
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| -#ifndef V8_TYPING_H_ |
| -#define V8_TYPING_H_ |
| +#ifndef V8_LITHIUM_CODEGEN_H_ |
| +#define V8_LITHIUM_CODEGEN_H_ |
| #include "v8.h" |
| -#include "allocation.h" |
| -#include "ast.h" |
| #include "compiler.h" |
| -#include "type-info.h" |
| -#include "types.h" |
| -#include "effects.h" |
| -#include "zone.h" |
| -#include "scopes.h" |
| namespace v8 { |
| namespace internal { |
| +class LInstruction; |
| +class LPlatformChunk; |
| -class AstTyper: public AstVisitor { |
| +class LCodeGenBase V8_FINAL BASE_EMBEDDED { |
|
Michael Starzinger
2013/10/01 11:17:47
This V8_FINAL looks wrong because we actually inhe
danno
2013/10/23 11:46:51
Done.
|
| public: |
| - static void Run(CompilationInfo* info); |
| - |
| - void* operator new(size_t size, Zone* zone) { |
| - return zone->New(static_cast<int>(size)); |
| - } |
| - void operator delete(void* pointer, Zone* zone) { } |
| - void operator delete(void* pointer) { } |
| - |
| - DEFINE_AST_VISITOR_SUBCLASS_MEMBERS(); |
| - |
| - private: |
| - explicit AstTyper(CompilationInfo* info); |
| - |
| - static const int kNoVar = INT_MIN; |
| - typedef v8::internal::Effects<int, kNoVar> Effects; |
| - typedef v8::internal::NestedEffects<int, kNoVar> Store; |
| - |
| - CompilationInfo* info_; |
| - TypeFeedbackOracle oracle_; |
| - Store store_; |
| - |
| - TypeFeedbackOracle* oracle() { return &oracle_; } |
| - Zone* zone() const { return info_->zone(); } |
| - |
| - void NarrowType(Expression* e, Bounds b) { |
| - e->set_bounds(Bounds::Both(e->bounds(), b, isolate_)); |
| - } |
| - void NarrowLowerType(Expression* e, Handle<Type> t) { |
| - e->set_bounds(Bounds::NarrowLower(e->bounds(), t, isolate_)); |
| - } |
| - |
| - Effects EnterEffects() { |
| - store_ = store_.Push(); |
| - return store_.Top(); |
| - } |
| - void ExitEffects() { store_ = store_.Pop(); } |
| - |
| - int variable_index(Variable* var) { |
| - return var->IsStackLocal() ? var->index() : |
| - var->IsParameter() ? -var->index() : kNoVar; |
| - } |
| - |
| - void VisitDeclarations(ZoneList<Declaration*>* declarations); |
| - void VisitStatements(ZoneList<Statement*>* statements); |
| + LCodeGenBase(LChunk* chunk, |
| + MacroAssembler* assembler, |
| + CompilationInfo* info); |
| + virtual ~LCodeGenBase() {} |
| + |
| + // 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(); } |
| + Zone* zone() const { return zone_; } |
| + LPlatformChunk* chunk() const { return chunk_; } |
| + HGraph* graph() const; |
| + |
| + void FPRINTF_CHECKING Comment(const char* format, ...); |
| + |
| + bool GenerateBody(); |
| + virtual void GenerateBodyInstructionPre(LInstruction* instr) {} |
| + virtual void GenerateBodyInstructionPost(LInstruction* instr) {} |
| + |
| + virtual void EnsureSpaceForLazyDeopt(int space_needed) = 0; |
| + virtual void RecordAndUpdatePosition(int position) = 0; |
| + |
| + int GetNextEmittedBlock() const; |
| + |
| + protected: |
| + enum Status { |
| + UNUSED, |
| + GENERATING, |
| + DONE, |
| + ABORTED |
| + }; |
| + |
| + LPlatformChunk* const chunk_; |
| + MacroAssembler* const masm_; |
| + CompilationInfo* const info_; |
| + Zone* zone_; |
| + Status status_; |
| + int current_block_; |
| + int current_instruction_; |
| + const ZoneList<LInstruction*>* instructions_; |
| + int last_lazy_deopt_pc_; |
| + |
| + bool is_unused() const { return status_ == UNUSED; } |
| + bool is_generating() const { return status_ == GENERATING; } |
| + bool is_done() const { return status_ == DONE; } |
| + bool is_aborted() const { return status_ == ABORTED; } |
| +}; |
| -#define DECLARE_VISIT(type) virtual void Visit##type(type* node); |
| - AST_NODE_LIST(DECLARE_VISIT) |
| -#undef DECLARE_VISIT |
| - DISALLOW_COPY_AND_ASSIGN(AstTyper); |
| -}; |
| +#undef __ |
|
Michael Starzinger
2013/10/01 11:17:47
nit: Looks obsolete, let's drop it.
danno
2013/10/23 11:46:51
Done.
|
| } } // namespace v8::internal |
| -#endif // V8_TYPING_H_ |
| +#endif // V8_LITHIUM_CODEGEN_H_ |