Remove a bunch of unnecessary includes from header files in favor of

forward declarations.

Review URL: http://codereview.chromium.org/42389

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1559 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 32de098e
...@@ -30,8 +30,9 @@ ...@@ -30,8 +30,9 @@
#include "bootstrapper.h" #include "bootstrapper.h"
#include "codegen-inl.h" #include "codegen-inl.h"
#include "debug.h" #include "debug.h"
#include "scopes.h"
#include "runtime.h" #include "runtime.h"
#include "scopes.h"
#include "virtual-frame.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
...@@ -376,6 +377,22 @@ MemOperand CodeGenerator::ContextSlotOperandCheckExtensions( ...@@ -376,6 +377,22 @@ MemOperand CodeGenerator::ContextSlotOperandCheckExtensions(
} }
void CodeGenerator::LoadConditionAndSpill(Expression* expression,
TypeofState typeof_state,
JumpTarget* true_target,
JumpTarget* false_target,
bool force_control) {
ASSERT(in_spilled_code());
set_in_spilled_code(false);
LoadCondition(expression, typeof_state, true_target, false_target,
force_control);
if (frame_ != NULL) {
frame_->SpillAll();
}
set_in_spilled_code(true);
}
// Loads a value on TOS. If it is a boolean value, the result may have been // Loads a value on TOS. If it is a boolean value, the result may have been
// (partially) translated into branches, or it may have set the condition // (partially) translated into branches, or it may have set the condition
// code register. If force_cc is set, the value is forced to set the // code register. If force_cc is set, the value is forced to set the
...@@ -421,6 +438,16 @@ void CodeGenerator::LoadCondition(Expression* x, ...@@ -421,6 +438,16 @@ void CodeGenerator::LoadCondition(Expression* x,
} }
void CodeGenerator::LoadAndSpill(Expression* expression,
TypeofState typeof_state) {
ASSERT(in_spilled_code());
set_in_spilled_code(false);
Load(expression, typeof_state);
frame_->SpillAll();
set_in_spilled_code(true);
}
void CodeGenerator::Load(Expression* x, TypeofState typeof_state) { void CodeGenerator::Load(Expression* x, TypeofState typeof_state) {
#ifdef DEBUG #ifdef DEBUG
int original_height = frame_->height(); int original_height = frame_->height();
...@@ -1113,6 +1140,28 @@ void CodeGenerator::CheckStack() { ...@@ -1113,6 +1140,28 @@ void CodeGenerator::CheckStack() {
} }
void CodeGenerator::VisitAndSpill(Statement* statement) {
ASSERT(in_spilled_code());
set_in_spilled_code(false);
Visit(statement);
if (frame_ != NULL) {
frame_->SpillAll();
}
set_in_spilled_code(true);
}
void CodeGenerator::VisitStatementsAndSpill(ZoneList<Statement*>* statements) {
ASSERT(in_spilled_code());
set_in_spilled_code(false);
VisitStatements(statements);
if (frame_ != NULL) {
frame_->SpillAll();
}
set_in_spilled_code(true);
}
void CodeGenerator::VisitStatements(ZoneList<Statement*>* statements) { void CodeGenerator::VisitStatements(ZoneList<Statement*>* statements) {
#ifdef DEBUG #ifdef DEBUG
int original_height = frame_->height(); int original_height = frame_->height();
...@@ -3974,6 +4023,15 @@ Handle<String> Reference::GetName() { ...@@ -3974,6 +4023,15 @@ Handle<String> Reference::GetName() {
} }
void Reference::GetValueAndSpill(TypeofState typeof_state) {
ASSERT(cgen_->in_spilled_code());
cgen_->set_in_spilled_code(false);
GetValue(typeof_state);
cgen_->frame()->SpillAll();
cgen_->set_in_spilled_code(true);
}
void Reference::GetValue(TypeofState typeof_state) { void Reference::GetValue(TypeofState typeof_state) {
ASSERT(!cgen_->in_spilled_code()); ASSERT(!cgen_->in_spilled_code());
ASSERT(cgen_->HasValidEntryRegisters()); ASSERT(cgen_->HasValidEntryRegisters());
......
...@@ -28,12 +28,12 @@ ...@@ -28,12 +28,12 @@
#ifndef V8_CODEGEN_ARM_H_ #ifndef V8_CODEGEN_ARM_H_
#define V8_CODEGEN_ARM_H_ #define V8_CODEGEN_ARM_H_
#include "scopes.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
// Forward declarations // Forward declarations
class DeferredCode; class DeferredCode;
class RegisterAllocator;
class RegisterFile;
// Mode to overwrite BinaryExpression values. // Mode to overwrite BinaryExpression values.
enum OverwriteMode { NO_OVERWRITE, OVERWRITE_LEFT, OVERWRITE_RIGHT }; enum OverwriteMode { NO_OVERWRITE, OVERWRITE_LEFT, OVERWRITE_RIGHT };
...@@ -220,27 +220,11 @@ class CodeGenerator: public AstVisitor { ...@@ -220,27 +220,11 @@ class CodeGenerator: public AstVisitor {
// reach the end of the statement (ie, it does not exit via break, // reach the end of the statement (ie, it does not exit via break,
// continue, return, or throw). This function is used temporarily while // continue, return, or throw). This function is used temporarily while
// the code generator is being transformed. // the code generator is being transformed.
void VisitAndSpill(Statement* statement) { void VisitAndSpill(Statement* statement);
ASSERT(in_spilled_code());
set_in_spilled_code(false);
Visit(statement);
if (frame_ != NULL) {
frame_->SpillAll();
}
set_in_spilled_code(true);
}
// Visit a list of statements and then spill the virtual frame if control // Visit a list of statements and then spill the virtual frame if control
// flow can reach the end of the list. // flow can reach the end of the list.
void VisitStatementsAndSpill(ZoneList<Statement*>* statements) { void VisitStatementsAndSpill(ZoneList<Statement*>* statements);
ASSERT(in_spilled_code());
set_in_spilled_code(false);
VisitStatements(statements);
if (frame_ != NULL) {
frame_->SpillAll();
}
set_in_spilled_code(true);
}
// Main code generation function // Main code generation function
void GenCode(FunctionLiteral* fun); void GenCode(FunctionLiteral* fun);
...@@ -278,13 +262,7 @@ class CodeGenerator: public AstVisitor { ...@@ -278,13 +262,7 @@ class CodeGenerator: public AstVisitor {
// and then spill the frame fully to memory. This function is used // and then spill the frame fully to memory. This function is used
// temporarily while the code generator is being transformed. // temporarily while the code generator is being transformed.
void LoadAndSpill(Expression* expression, void LoadAndSpill(Expression* expression,
TypeofState typeof_state = NOT_INSIDE_TYPEOF) { TypeofState typeof_state = NOT_INSIDE_TYPEOF);
ASSERT(in_spilled_code());
set_in_spilled_code(false);
Load(expression, typeof_state);
frame_->SpillAll();
set_in_spilled_code(true);
}
// Call LoadCondition and then spill the virtual frame unless control flow // Call LoadCondition and then spill the virtual frame unless control flow
// cannot reach the end of the expression (ie, by emitting only // cannot reach the end of the expression (ie, by emitting only
...@@ -293,16 +271,7 @@ class CodeGenerator: public AstVisitor { ...@@ -293,16 +271,7 @@ class CodeGenerator: public AstVisitor {
TypeofState typeof_state, TypeofState typeof_state,
JumpTarget* true_target, JumpTarget* true_target,
JumpTarget* false_target, JumpTarget* false_target,
bool force_control) { bool force_control);
ASSERT(in_spilled_code());
set_in_spilled_code(false);
LoadCondition(expression, typeof_state, true_target, false_target,
force_control);
if (frame_ != NULL) {
frame_->SpillAll();
}
set_in_spilled_code(true);
}
// Read a value from a slot and leave it on top of the expression stack. // Read a value from a slot and leave it on top of the expression stack.
void LoadFromSlot(Slot* slot, TypeofState typeof_state); void LoadFromSlot(Slot* slot, TypeofState typeof_state);
...@@ -470,15 +439,6 @@ class CodeGenerator: public AstVisitor { ...@@ -470,15 +439,6 @@ class CodeGenerator: public AstVisitor {
}; };
void Reference::GetValueAndSpill(TypeofState typeof_state) {
ASSERT(cgen_->in_spilled_code());
cgen_->set_in_spilled_code(false);
GetValue(typeof_state);
cgen_->frame()->SpillAll();
cgen_->set_in_spilled_code(true);
}
} } // namespace v8::internal } } // namespace v8::internal
#endif // V8_CODEGEN_ARM_H_ #endif // V8_CODEGEN_ARM_H_
...@@ -30,8 +30,9 @@ ...@@ -30,8 +30,9 @@
#include "bootstrapper.h" #include "bootstrapper.h"
#include "codegen-inl.h" #include "codegen-inl.h"
#include "debug.h" #include "debug.h"
#include "scopes.h"
#include "runtime.h" #include "runtime.h"
#include "scopes.h"
#include "virtual-frame.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
...@@ -439,6 +440,16 @@ void CodeGenerator::LoadCondition(Expression* x, ...@@ -439,6 +440,16 @@ void CodeGenerator::LoadCondition(Expression* x,
} }
void CodeGenerator::LoadAndSpill(Expression* expression,
TypeofState typeof_state) {
ASSERT(in_spilled_code());
set_in_spilled_code(false);
Load(expression, typeof_state);
frame_->SpillAll();
set_in_spilled_code(true);
}
void CodeGenerator::Load(Expression* x, TypeofState typeof_state) { void CodeGenerator::Load(Expression* x, TypeofState typeof_state) {
#ifdef DEBUG #ifdef DEBUG
int original_height = frame_->height(); int original_height = frame_->height();
...@@ -1553,6 +1564,28 @@ void CodeGenerator::CheckStack() { ...@@ -1553,6 +1564,28 @@ void CodeGenerator::CheckStack() {
} }
void CodeGenerator::VisitAndSpill(Statement* statement) {
ASSERT(in_spilled_code());
set_in_spilled_code(false);
Visit(statement);
if (frame_ != NULL) {
frame_->SpillAll();
}
set_in_spilled_code(true);
}
void CodeGenerator::VisitStatementsAndSpill(ZoneList<Statement*>* statements) {
ASSERT(in_spilled_code());
set_in_spilled_code(false);
VisitStatements(statements);
if (frame_ != NULL) {
frame_->SpillAll();
}
set_in_spilled_code(true);
}
void CodeGenerator::VisitStatements(ZoneList<Statement*>* statements) { void CodeGenerator::VisitStatements(ZoneList<Statement*>* statements) {
ASSERT(!in_spilled_code()); ASSERT(!in_spilled_code());
for (int i = 0; has_valid_frame() && i < statements->length(); i++) { for (int i = 0; has_valid_frame() && i < statements->length(); i++) {
......
...@@ -28,13 +28,12 @@ ...@@ -28,13 +28,12 @@
#ifndef V8_CODEGEN_IA32_H_ #ifndef V8_CODEGEN_IA32_H_
#define V8_CODEGEN_IA32_H_ #define V8_CODEGEN_IA32_H_
#include "scopes.h"
#include "register-allocator.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
// Forward declarations // Forward declarations
class DeferredCode; class DeferredCode;
class RegisterAllocator;
class RegisterFile;
// Mode to overwrite BinaryExpression values. // Mode to overwrite BinaryExpression values.
enum OverwriteMode { NO_OVERWRITE, OVERWRITE_LEFT, OVERWRITE_RIGHT }; enum OverwriteMode { NO_OVERWRITE, OVERWRITE_LEFT, OVERWRITE_RIGHT };
...@@ -82,11 +81,6 @@ class Reference BASE_EMBEDDED { ...@@ -82,11 +81,6 @@ class Reference BASE_EMBEDDED {
// the expression stack, and it is left in place with its value above it. // the expression stack, and it is left in place with its value above it.
void GetValue(TypeofState typeof_state); void GetValue(TypeofState typeof_state);
// Generate code to push the value of a reference on top of the expression
// stack and then spill the stack frame. This function is used temporarily
// while the code generator is being transformed.
inline void GetValueAndSpill(TypeofState typeof_state);
// Like GetValue except that the slot is expected to be written to before // Like GetValue except that the slot is expected to be written to before
// being read from again. Thae value of the reference may be invalidated, // being read from again. Thae value of the reference may be invalidated,
// causing subsequent attempts to read it to fail. // causing subsequent attempts to read it to fail.
...@@ -368,27 +362,11 @@ class CodeGenerator: public AstVisitor { ...@@ -368,27 +362,11 @@ class CodeGenerator: public AstVisitor {
// reach the end of the statement (ie, it does not exit via break, // reach the end of the statement (ie, it does not exit via break,
// continue, return, or throw). This function is used temporarily while // continue, return, or throw). This function is used temporarily while
// the code generator is being transformed. // the code generator is being transformed.
void VisitAndSpill(Statement* statement) { void VisitAndSpill(Statement* statement);
ASSERT(in_spilled_code());
set_in_spilled_code(false);
Visit(statement);
if (frame_ != NULL) {
frame_->SpillAll();
}
set_in_spilled_code(true);
}
// Visit a list of statements and then spill the virtual frame if control // Visit a list of statements and then spill the virtual frame if control
// flow can reach the end of the list. // flow can reach the end of the list.
void VisitStatementsAndSpill(ZoneList<Statement*>* statements) { void VisitStatementsAndSpill(ZoneList<Statement*>* statements);
ASSERT(in_spilled_code());
set_in_spilled_code(false);
VisitStatements(statements);
if (frame_ != NULL) {
frame_->SpillAll();
}
set_in_spilled_code(true);
}
// Main code generation function // Main code generation function
void GenCode(FunctionLiteral* fun); void GenCode(FunctionLiteral* fun);
...@@ -430,29 +408,7 @@ class CodeGenerator: public AstVisitor { ...@@ -430,29 +408,7 @@ class CodeGenerator: public AstVisitor {
// and then spill the frame fully to memory. This function is used // and then spill the frame fully to memory. This function is used
// temporarily while the code generator is being transformed. // temporarily while the code generator is being transformed.
void LoadAndSpill(Expression* expression, void LoadAndSpill(Expression* expression,
TypeofState typeof_state = NOT_INSIDE_TYPEOF) { TypeofState typeof_state = NOT_INSIDE_TYPEOF);
ASSERT(in_spilled_code());
set_in_spilled_code(false);
Load(expression, typeof_state);
frame_->SpillAll();
set_in_spilled_code(true);
}
// Call LoadCondition and then spill the virtual frame unless control flow
// cannot reach the end of the expression (ie, by emitting only
// unconditional jumps to the control targets).
void LoadConditionAndSpill(Expression* expression,
TypeofState typeof_state,
ControlDestination* destination,
bool force_control) {
ASSERT(in_spilled_code());
set_in_spilled_code(false);
LoadCondition(expression, typeof_state, destination, force_control);
if (frame_ != NULL) {
frame_->SpillAll();
}
set_in_spilled_code(true);
}
// Read a value from a slot and leave it on top of the expression stack. // Read a value from a slot and leave it on top of the expression stack.
void LoadFromSlot(Slot* slot, TypeofState typeof_state); void LoadFromSlot(Slot* slot, TypeofState typeof_state);
...@@ -644,15 +600,6 @@ class CodeGenerator: public AstVisitor { ...@@ -644,15 +600,6 @@ class CodeGenerator: public AstVisitor {
}; };
void Reference::GetValueAndSpill(TypeofState typeof_state) {
ASSERT(cgen_->in_spilled_code());
cgen_->set_in_spilled_code(false);
GetValue(typeof_state);
cgen_->frame()->SpillAll();
cgen_->set_in_spilled_code(true);
}
} } // namespace v8::internal } } // namespace v8::internal
#endif // V8_CODEGEN_IA32_H_ #endif // V8_CODEGEN_IA32_H_
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include "codegen.h" #include "codegen.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
......
...@@ -31,9 +31,10 @@ ...@@ -31,9 +31,10 @@
#include "codegen-inl.h" #include "codegen-inl.h"
#include "debug.h" #include "debug.h"
#include "prettyprinter.h" #include "prettyprinter.h"
#include "scopeinfo.h"
#include "runtime.h" #include "runtime.h"
#include "scopeinfo.h"
#include "stub-cache.h" #include "stub-cache.h"
#include "virtual-frame.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#include "v8.h" #include "v8.h"
#include "codegen.h" #include "codegen.h"
#include "jump-target.h" #include "virtual-frame.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#include "v8.h" #include "v8.h"
#include "codegen.h" #include "codegen.h"
#include "jump-target.h" #include "virtual-frame.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#include "v8.h" #include "v8.h"
#include "codegen.h" #include "codegen.h"
#include "jump-target.h" #include "virtual-frame.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
......
...@@ -28,10 +28,14 @@ ...@@ -28,10 +28,14 @@
#ifndef V8_JUMP_TARGET_H_ #ifndef V8_JUMP_TARGET_H_
#define V8_JUMP_TARGET_H_ #define V8_JUMP_TARGET_H_
#include "virtual-frame.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
// Forward declarations.
class FrameElement;
class Result;
class VirtualFrame;
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// Jump targets // Jump targets
// //
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#include "v8.h" #include "v8.h"
#include "codegen.h" #include "codegen.h"
#include "register-allocator.h" #include "virtual-frame.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#include "v8.h" #include "v8.h"
#include "codegen.h" #include "codegen.h"
#include "register-allocator.h" #include "virtual-frame.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
......
...@@ -27,8 +27,8 @@ ...@@ -27,8 +27,8 @@
#include "v8.h" #include "v8.h"
#include "codegen.h"
#include "codegen-inl.h" #include "codegen-inl.h"
#include "scopes.h"
#include "virtual-frame.h" #include "virtual-frame.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
......
...@@ -28,6 +28,8 @@ ...@@ -28,6 +28,8 @@
#ifndef V8_VIRTUAL_FRAME_ARM_H_ #ifndef V8_VIRTUAL_FRAME_ARM_H_
#define V8_VIRTUAL_FRAME_ARM_H_ #define V8_VIRTUAL_FRAME_ARM_H_
#include "register-allocator.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
......
...@@ -27,8 +27,8 @@ ...@@ -27,8 +27,8 @@
#include "v8.h" #include "v8.h"
#include "codegen.h"
#include "codegen-inl.h" #include "codegen-inl.h"
#include "scopes.h"
#include "virtual-frame.h" #include "virtual-frame.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
......
...@@ -28,6 +28,8 @@ ...@@ -28,6 +28,8 @@
#ifndef V8_VIRTUAL_FRAME_IA32_H_ #ifndef V8_VIRTUAL_FRAME_IA32_H_
#define V8_VIRTUAL_FRAME_IA32_H_ #define V8_VIRTUAL_FRAME_IA32_H_
#include "register-allocator.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
......
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
#define V8_VIRTUAL_FRAME_H_ #define V8_VIRTUAL_FRAME_H_
#include "macro-assembler.h" #include "macro-assembler.h"
#include "register-allocator.h"
namespace v8 { namespace internal { namespace v8 { namespace internal {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment