Eliminate unnecessary depencencies in some header files.

1. Eliminate unnecessary include of register-allocator-inl.h in frame-element.h.
2. Move functions register-allocator.h to the -inl.h file if they use other inline functions.
3. Add missing includes that resulted from the above changes.


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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3816 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent e7fbf99b
...@@ -28,8 +28,10 @@ ...@@ -28,8 +28,10 @@
#ifndef V8_COMPILER_H_ #ifndef V8_COMPILER_H_
#define V8_COMPILER_H_ #define V8_COMPILER_H_
#include "ast.h"
#include "frame-element.h" #include "frame-element.h"
#include "parser.h" #include "parser.h"
#include "register-allocator.h"
#include "zone.h" #include "zone.h"
namespace v8 { namespace v8 {
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include "arguments.h" #include "arguments.h"
#include "bootstrapper.h" #include "bootstrapper.h"
#include "code-stubs.h" #include "code-stubs.h"
#include "codegen.h"
#include "compilation-cache.h" #include "compilation-cache.h"
#include "compiler.h" #include "compiler.h"
#include "debug.h" #include "debug.h"
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#ifndef V8_FRAME_ELEMENT_H_ #ifndef V8_FRAME_ELEMENT_H_
#define V8_FRAME_ELEMENT_H_ #define V8_FRAME_ELEMENT_H_
#include "register-allocator-inl.h" #include "macro-assembler.h"
namespace v8 { namespace v8 {
namespace internal { namespace internal {
......
...@@ -48,6 +48,20 @@ ...@@ -48,6 +48,20 @@
namespace v8 { namespace v8 {
namespace internal { namespace internal {
Result::Result(const Result& other) {
other.CopyTo(this);
}
Result& Result::operator=(const Result& other) {
if (this != &other) {
Unuse();
other.CopyTo(this);
}
return *this;
}
Result::~Result() { Result::~Result() {
if (is_register()) { if (is_register()) {
CodeGeneratorScope::Current()->allocator()->Unuse(reg()); CodeGeneratorScope::Current()->allocator()->Unuse(reg());
...@@ -71,6 +85,25 @@ void Result::CopyTo(Result* destination) const { ...@@ -71,6 +85,25 @@ void Result::CopyTo(Result* destination) const {
} }
bool RegisterAllocator::is_used(Register reg) {
return registers_.is_used(ToNumber(reg));
}
int RegisterAllocator::count(Register reg) {
return registers_.count(ToNumber(reg));
}
void RegisterAllocator::Use(Register reg) {
registers_.Use(ToNumber(reg));
}
void RegisterAllocator::Unuse(Register reg) {
registers_.Unuse(ToNumber(reg));
}
} } // namespace v8::internal } } // namespace v8::internal
#endif // V8_REGISTER_ALLOCATOR_INL_H_ #endif // V8_REGISTER_ALLOCATOR_INL_H_
...@@ -75,17 +75,9 @@ class Result BASE_EMBEDDED { ...@@ -75,17 +75,9 @@ class Result BASE_EMBEDDED {
// The copy constructor and assignment operators could each create a new // The copy constructor and assignment operators could each create a new
// register reference. // register reference.
Result(const Result& other) { inline Result(const Result& other);
other.CopyTo(this);
}
Result& operator=(const Result& other) { inline Result& operator=(const Result& other);
if (this != &other) {
Unuse();
other.CopyTo(this);
}
return *this;
}
inline ~Result(); inline ~Result();
...@@ -237,18 +229,18 @@ class RegisterAllocator BASE_EMBEDDED { ...@@ -237,18 +229,18 @@ class RegisterAllocator BASE_EMBEDDED {
// Predicates and accessors for the registers' reference counts. // Predicates and accessors for the registers' reference counts.
bool is_used(int num) { return registers_.is_used(num); } bool is_used(int num) { return registers_.is_used(num); }
bool is_used(Register reg) { return registers_.is_used(ToNumber(reg)); } inline bool is_used(Register reg);
int count(int num) { return registers_.count(num); } int count(int num) { return registers_.count(num); }
int count(Register reg) { return registers_.count(ToNumber(reg)); } inline int count(Register reg);
// Explicitly record a reference to a register. // Explicitly record a reference to a register.
void Use(int num) { registers_.Use(num); } void Use(int num) { registers_.Use(num); }
void Use(Register reg) { registers_.Use(ToNumber(reg)); } inline void Use(Register reg);
// Explicitly record that a register will no longer be used. // Explicitly record that a register will no longer be used.
void Unuse(int num) { registers_.Unuse(num); } void Unuse(int num) { registers_.Unuse(num); }
void Unuse(Register reg) { registers_.Unuse(ToNumber(reg)); } inline void Unuse(Register reg);
// Reset the register reference counts to free all non-reserved registers. // Reset the register reference counts to free all non-reserved registers.
void Reset() { registers_.Reset(); } void Reset() { registers_.Reset(); }
......
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