From 6565243504964be8054f1548af45ca65225ab7d3 Mon Sep 17 00:00:00 2001 From: "kmillikin@chromium.org" Date: Fri, 20 Mar 2009 12:58:14 +0000 Subject: [PATCH] Inline the Result::Unuse member function and change the Result destructor to no longer invalidate the result. Review URL: http://codereview.chromium.org/50051 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1560 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/codegen-arm.cc | 3 ++- src/codegen-ia32.cc | 2 +- src/codegen.cc | 2 +- src/disassembler.cc | 2 +- src/jump-target-arm.cc | 4 ++-- src/jump-target-ia32.cc | 4 ++-- src/jump-target.cc | 4 ++-- src/register-allocator-arm.cc | 4 ++-- src/register-allocator-ia32.cc | 4 ++-- src/register-allocator-inl.h | 48 ++++++++++++++++++++++++++++++++++++++++++ src/register-allocator.cc | 12 ++--------- src/register-allocator.h | 4 ++-- src/virtual-frame-arm.cc | 2 +- src/virtual-frame-ia32.cc | 2 +- src/virtual-frame.cc | 3 +-- 15 files changed, 70 insertions(+), 30 deletions(-) create mode 100644 src/register-allocator-inl.h diff --git a/src/codegen-arm.cc b/src/codegen-arm.cc index 8c8f588..87fdfa0 100644 --- a/src/codegen-arm.cc +++ b/src/codegen-arm.cc @@ -30,9 +30,10 @@ #include "bootstrapper.h" #include "codegen-inl.h" #include "debug.h" +#include "register-allocator-inl.h" #include "runtime.h" #include "scopes.h" -#include "virtual-frame.h" + namespace v8 { namespace internal { diff --git a/src/codegen-ia32.cc b/src/codegen-ia32.cc index 7dd9e7f..a66e548 100644 --- a/src/codegen-ia32.cc +++ b/src/codegen-ia32.cc @@ -30,9 +30,9 @@ #include "bootstrapper.h" #include "codegen-inl.h" #include "debug.h" +#include "register-allocator-inl.h" #include "runtime.h" #include "scopes.h" -#include "virtual-frame.h" namespace v8 { namespace internal { diff --git a/src/codegen.cc b/src/codegen.cc index 13014d0..9d48ebf 100644 --- a/src/codegen.cc +++ b/src/codegen.cc @@ -31,10 +31,10 @@ #include "codegen-inl.h" #include "debug.h" #include "prettyprinter.h" +#include "register-allocator-inl.h" #include "runtime.h" #include "scopeinfo.h" #include "stub-cache.h" -#include "virtual-frame.h" namespace v8 { namespace internal { diff --git a/src/disassembler.cc b/src/disassembler.cc index 24765b3..a838a08 100644 --- a/src/disassembler.cc +++ b/src/disassembler.cc @@ -28,7 +28,7 @@ #include "v8.h" #include "code-stubs.h" -#include "codegen.h" +#include "codegen-inl.h" #include "debug.h" #include "disasm.h" #include "disassembler.h" diff --git a/src/jump-target-arm.cc b/src/jump-target-arm.cc index 282bebf..41b80e2 100644 --- a/src/jump-target-arm.cc +++ b/src/jump-target-arm.cc @@ -27,8 +27,8 @@ #include "v8.h" -#include "codegen.h" -#include "virtual-frame.h" +#include "codegen-inl.h" +#include "register-allocator-inl.h" namespace v8 { namespace internal { diff --git a/src/jump-target-ia32.cc b/src/jump-target-ia32.cc index 8f89f05..d2d35ca 100644 --- a/src/jump-target-ia32.cc +++ b/src/jump-target-ia32.cc @@ -27,8 +27,8 @@ #include "v8.h" -#include "codegen.h" -#include "virtual-frame.h" +#include "codegen-inl.h" +#include "register-allocator-inl.h" namespace v8 { namespace internal { diff --git a/src/jump-target.cc b/src/jump-target.cc index 0974efb..24f3965 100644 --- a/src/jump-target.cc +++ b/src/jump-target.cc @@ -27,8 +27,8 @@ #include "v8.h" -#include "codegen.h" -#include "virtual-frame.h" +#include "codegen-inl.h" +#include "register-allocator-inl.h" namespace v8 { namespace internal { diff --git a/src/register-allocator-arm.cc b/src/register-allocator-arm.cc index b48710a..36a4d20 100644 --- a/src/register-allocator-arm.cc +++ b/src/register-allocator-arm.cc @@ -27,8 +27,8 @@ #include "v8.h" -#include "codegen.h" -#include "register-allocator.h" +#include "codegen-inl.h" +#include "register-allocator-inl.h" namespace v8 { namespace internal { diff --git a/src/register-allocator-ia32.cc b/src/register-allocator-ia32.cc index 5b784f3..a898827 100644 --- a/src/register-allocator-ia32.cc +++ b/src/register-allocator-ia32.cc @@ -27,8 +27,8 @@ #include "v8.h" -#include "codegen.h" -#include "virtual-frame.h" +#include "codegen-inl.h" +#include "register-allocator-inl.h" namespace v8 { namespace internal { diff --git a/src/register-allocator-inl.h b/src/register-allocator-inl.h new file mode 100644 index 0000000..8611d6a --- /dev/null +++ b/src/register-allocator-inl.h @@ -0,0 +1,48 @@ +// Copyright 2009 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: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef V8_REGISTER_ALLOCATOR_INL_H_ +#define V8_REGISTER_ALLOCATOR_INL_H_ + +#include "virtual-frame.h" + +namespace v8 { namespace internal { + +Result::~Result() { + if (is_register()) cgen_->allocator()->Unuse(reg()); +} + + +void Result::Unuse() { + if (is_register()) cgen_->allocator()->Unuse(reg()); + type_ = INVALID; +} + + +} } // namespace v8::internal + +#endif // V8_REGISTER_ALLOCATOR_INL_H_ diff --git a/src/register-allocator.cc b/src/register-allocator.cc index 2d410c2..381aeb5 100644 --- a/src/register-allocator.cc +++ b/src/register-allocator.cc @@ -27,8 +27,8 @@ #include "v8.h" -#include "codegen.h" -#include "virtual-frame.h" +#include "codegen-inl.h" +#include "register-allocator-inl.h" namespace v8 { namespace internal { @@ -59,14 +59,6 @@ void Result::CopyTo(Result* destination) const { } -void Result::Unuse() { - if (is_register()) { - cgen_->allocator()->Unuse(reg()); - } - type_ = INVALID; -} - - // ------------------------------------------------------------------------- // RegisterFile implementation. diff --git a/src/register-allocator.h b/src/register-allocator.h index 42eb6e0..f6db62c 100644 --- a/src/register-allocator.h +++ b/src/register-allocator.h @@ -73,9 +73,9 @@ class Result BASE_EMBEDDED { return *this; } - ~Result() { Unuse(); } + inline ~Result(); - void Unuse(); + inline void Unuse(); Type type() const { return type_; } diff --git a/src/virtual-frame-arm.cc b/src/virtual-frame-arm.cc index b79ee00..4abc840 100644 --- a/src/virtual-frame-arm.cc +++ b/src/virtual-frame-arm.cc @@ -28,8 +28,8 @@ #include "v8.h" #include "codegen-inl.h" +#include "register-allocator-inl.h" #include "scopes.h" -#include "virtual-frame.h" namespace v8 { namespace internal { diff --git a/src/virtual-frame-ia32.cc b/src/virtual-frame-ia32.cc index ad956f3..ad1186a 100644 --- a/src/virtual-frame-ia32.cc +++ b/src/virtual-frame-ia32.cc @@ -28,8 +28,8 @@ #include "v8.h" #include "codegen-inl.h" +#include "register-allocator-inl.h" #include "scopes.h" -#include "virtual-frame.h" namespace v8 { namespace internal { diff --git a/src/virtual-frame.cc b/src/virtual-frame.cc index 531f986..2f97c38 100644 --- a/src/virtual-frame.cc +++ b/src/virtual-frame.cc @@ -27,9 +27,8 @@ #include "v8.h" -#include "codegen.h" #include "codegen-inl.h" -#include "virtual-frame.h" +#include "register-allocator-inl.h" namespace v8 { namespace internal { -- 2.7.4