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
This commit is contained in:
fschneider@chromium.org 2010-02-08 14:33:34 +00:00
parent e7fbf99b17
commit 4acaded36c
5 changed files with 43 additions and 15 deletions

View File

@ -28,8 +28,10 @@
#ifndef V8_COMPILER_H_
#define V8_COMPILER_H_
#include "ast.h"
#include "frame-element.h"
#include "parser.h"
#include "register-allocator.h"
#include "zone.h"
namespace v8 {

View File

@ -31,6 +31,7 @@
#include "arguments.h"
#include "bootstrapper.h"
#include "code-stubs.h"
#include "codegen.h"
#include "compilation-cache.h"
#include "compiler.h"
#include "debug.h"

View File

@ -28,7 +28,7 @@
#ifndef V8_FRAME_ELEMENT_H_
#define V8_FRAME_ELEMENT_H_
#include "register-allocator-inl.h"
#include "macro-assembler.h"
namespace v8 {
namespace internal {

View File

@ -48,6 +48,20 @@
namespace v8 {
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() {
if (is_register()) {
CodeGeneratorScope::Current()->allocator()->Unuse(reg());
@ -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
#endif // V8_REGISTER_ALLOCATOR_INL_H_

View File

@ -75,17 +75,9 @@ class Result BASE_EMBEDDED {
// The copy constructor and assignment operators could each create a new
// register reference.
Result(const Result& other) {
other.CopyTo(this);
}
inline Result(const Result& other);
Result& operator=(const Result& other) {
if (this != &other) {
Unuse();
other.CopyTo(this);
}
return *this;
}
inline Result& operator=(const Result& other);
inline ~Result();
@ -237,18 +229,18 @@ class RegisterAllocator BASE_EMBEDDED {
// Predicates and accessors for the registers' reference counts.
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(Register reg) { return registers_.count(ToNumber(reg)); }
inline int count(Register reg);
// Explicitly record a reference to a register.
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.
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.
void Reset() { registers_.Reset(); }