From 4acaded36c3dba62e2d5e503e6ee2c7877006645 Mon Sep 17 00:00:00 2001 From: "fschneider@chromium.org" Date: Mon, 8 Feb 2010 14:33:34 +0000 Subject: [PATCH] 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 --- src/compiler.h | 2 ++ src/debug.cc | 1 + src/frame-element.h | 2 +- src/register-allocator-inl.h | 33 +++++++++++++++++++++++++++++++++ src/register-allocator.h | 20 ++++++-------------- 5 files changed, 43 insertions(+), 15 deletions(-) diff --git a/src/compiler.h b/src/compiler.h index 72abb6ac4..21affdf56 100644 --- a/src/compiler.h +++ b/src/compiler.h @@ -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 { diff --git a/src/debug.cc b/src/debug.cc index 4e27b0f2a..019081fb8 100644 --- a/src/debug.cc +++ b/src/debug.cc @@ -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" diff --git a/src/frame-element.h b/src/frame-element.h index ccdecf1d6..d1807f647 100644 --- a/src/frame-element.h +++ b/src/frame-element.h @@ -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 { diff --git a/src/register-allocator-inl.h b/src/register-allocator-inl.h index b3fa4747b..a99f45508 100644 --- a/src/register-allocator-inl.h +++ b/src/register-allocator-inl.h @@ -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_ diff --git a/src/register-allocator.h b/src/register-allocator.h index 0f46996cf..9f0132286 100644 --- a/src/register-allocator.h +++ b/src/register-allocator.h @@ -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(); } -- 2.34.1