| Index: src/codegen.h
|
| diff --git a/src/codegen.h b/src/codegen.h
|
| index aa3199972349bc5de33f22640e898ae511247362..e551abfb11a88d606cdd1829af6f82b12653cc1c 100644
|
| --- a/src/codegen.h
|
| +++ b/src/codegen.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:
|
| @@ -54,7 +54,6 @@
|
| // shared code:
|
| // CodeGenerator
|
| // ~CodeGenerator
|
| -// ProcessDeferred
|
| // Generate
|
| // ComputeLazyCompile
|
| // BuildFunctionInfo
|
| @@ -68,7 +67,6 @@
|
| // CodeForDoWhileConditionPosition
|
| // CodeForSourcePosition
|
|
|
| -enum InitState { CONST_INIT, NOT_CONST_INIT };
|
| enum TypeofState { INSIDE_TYPEOF, NOT_INSIDE_TYPEOF };
|
|
|
| #if V8_TARGET_ARCH_IA32
|
| @@ -83,163 +81,4 @@ enum TypeofState { INSIDE_TYPEOF, NOT_INSIDE_TYPEOF };
|
| #error Unsupported target architecture.
|
| #endif
|
|
|
| -#include "register-allocator.h"
|
| -
|
| -namespace v8 {
|
| -namespace internal {
|
| -
|
| -// Code generation can be nested. Code generation scopes form a stack
|
| -// of active code generators.
|
| -class CodeGeneratorScope BASE_EMBEDDED {
|
| - public:
|
| - explicit CodeGeneratorScope(Isolate* isolate, CodeGenerator* cgen)
|
| - : isolate_(isolate) {
|
| - previous_ = isolate->current_code_generator();
|
| - isolate->set_current_code_generator(cgen);
|
| - }
|
| -
|
| - ~CodeGeneratorScope() {
|
| - isolate_->set_current_code_generator(previous_);
|
| - }
|
| -
|
| - static CodeGenerator* Current(Isolate* isolate) {
|
| - ASSERT(isolate->current_code_generator() != NULL);
|
| - return isolate->current_code_generator();
|
| - }
|
| -
|
| - private:
|
| - CodeGenerator* previous_;
|
| - Isolate* isolate_;
|
| -};
|
| -
|
| -#if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X64
|
| -
|
| -// State of used registers in a virtual frame.
|
| -class FrameRegisterState {
|
| - public:
|
| - // Captures the current state of the given frame.
|
| - explicit FrameRegisterState(VirtualFrame* frame);
|
| -
|
| - // Saves the state in the stack.
|
| - void Save(MacroAssembler* masm) const;
|
| -
|
| - // Restores the state from the stack.
|
| - void Restore(MacroAssembler* masm) const;
|
| -
|
| - private:
|
| - // Constants indicating special actions. They should not be multiples
|
| - // of kPointerSize so they will not collide with valid offsets from
|
| - // the frame pointer.
|
| - static const int kIgnore = -1;
|
| - static const int kPush = 1;
|
| -
|
| - // This flag is ored with a valid offset from the frame pointer, so
|
| - // it should fit in the low zero bits of a valid offset.
|
| - static const int kSyncedFlag = 2;
|
| -
|
| - int registers_[RegisterAllocator::kNumRegisters];
|
| -};
|
| -
|
| -#elif V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS
|
| -
|
| -
|
| -class FrameRegisterState {
|
| - public:
|
| - inline FrameRegisterState(VirtualFrame frame) : frame_(frame) { }
|
| -
|
| - inline const VirtualFrame* frame() const { return &frame_; }
|
| -
|
| - private:
|
| - VirtualFrame frame_;
|
| -};
|
| -
|
| -#else
|
| -
|
| -#error Unsupported target architecture.
|
| -
|
| -#endif
|
| -
|
| -
|
| -// RuntimeCallHelper implementation that saves/restores state of a
|
| -// virtual frame.
|
| -class VirtualFrameRuntimeCallHelper : public RuntimeCallHelper {
|
| - public:
|
| - // Does not take ownership of |frame_state|.
|
| - explicit VirtualFrameRuntimeCallHelper(const FrameRegisterState* frame_state)
|
| - : frame_state_(frame_state) {}
|
| -
|
| - virtual void BeforeCall(MacroAssembler* masm) const;
|
| -
|
| - virtual void AfterCall(MacroAssembler* masm) const;
|
| -
|
| - private:
|
| - const FrameRegisterState* frame_state_;
|
| -};
|
| -
|
| -
|
| -// Deferred code objects are small pieces of code that are compiled
|
| -// out of line. They are used to defer the compilation of uncommon
|
| -// paths thereby avoiding expensive jumps around uncommon code parts.
|
| -class DeferredCode: public ZoneObject {
|
| - public:
|
| - DeferredCode();
|
| - virtual ~DeferredCode() { }
|
| -
|
| - virtual void Generate() = 0;
|
| -
|
| - MacroAssembler* masm() { return masm_; }
|
| -
|
| - int statement_position() const { return statement_position_; }
|
| - int position() const { return position_; }
|
| -
|
| - Label* entry_label() { return &entry_label_; }
|
| - Label* exit_label() { return &exit_label_; }
|
| -
|
| -#ifdef DEBUG
|
| - void set_comment(const char* comment) { comment_ = comment; }
|
| - const char* comment() const { return comment_; }
|
| -#else
|
| - void set_comment(const char* comment) { }
|
| - const char* comment() const { return ""; }
|
| -#endif
|
| -
|
| - inline void Jump();
|
| - inline void Branch(Condition cc);
|
| - void BindExit() { masm_->bind(&exit_label_); }
|
| -
|
| - const FrameRegisterState* frame_state() const { return &frame_state_; }
|
| -
|
| - void SaveRegisters();
|
| - void RestoreRegisters();
|
| - void Exit();
|
| -
|
| - // If this returns true then all registers will be saved for the duration
|
| - // of the Generate() call. Otherwise the registers are not saved and the
|
| - // Generate() call must bracket runtime any runtime calls with calls to
|
| - // SaveRegisters() and RestoreRegisters(). In this case the Generate
|
| - // method must also call Exit() in order to return to the non-deferred
|
| - // code.
|
| - virtual bool AutoSaveAndRestore() { return true; }
|
| -
|
| - protected:
|
| - MacroAssembler* masm_;
|
| -
|
| - private:
|
| - int statement_position_;
|
| - int position_;
|
| -
|
| - Label entry_label_;
|
| - Label exit_label_;
|
| -
|
| - FrameRegisterState frame_state_;
|
| -
|
| -#ifdef DEBUG
|
| - const char* comment_;
|
| -#endif
|
| - DISALLOW_COPY_AND_ASSIGN(DeferredCode);
|
| -};
|
| -
|
| -
|
| -} } // namespace v8::internal
|
| -
|
| #endif // V8_CODEGEN_H_
|
|
|