Author: [email protected]
Date: Mon May 18 02:41:16 2009
New Revision: 1985
Modified:
branches/bleeding_edge/src/codegen.cc
branches/bleeding_edge/src/factory.cc
branches/bleeding_edge/src/factory.h
branches/bleeding_edge/src/func-name-inferrer.h
branches/bleeding_edge/src/globals.h
branches/bleeding_edge/src/heap.cc
branches/bleeding_edge/src/heap.h
branches/bleeding_edge/src/ia32/codegen-ia32.h
branches/bleeding_edge/src/scopeinfo.cc
branches/bleeding_edge/src/scopeinfo.h
branches/bleeding_edge/src/scopes.cc
Log:
Changed FuncNameInferrer and ScopeInfo to support zone allocation.
Yields a 2% speedup when running compiler-benchmark.
Review URL: http://codereview.chromium.org/113519
Modified: branches/bleeding_edge/src/codegen.cc
==============================================================================
--- branches/bleeding_edge/src/codegen.cc (original)
+++ branches/bleeding_edge/src/codegen.cc Mon May 18 02:41:16 2009
@@ -170,7 +170,7 @@
HistogramTimerScope timer(&Counters::code_creation);
CodeDesc desc;
cgen.masm()->GetCode(&desc);
- ScopeInfo<> sinfo(flit->scope());
+ ZoneScopeInfo sinfo(flit->scope());
Code::Flags flags = Code::ComputeFlags(Code::FUNCTION);
Handle<Code> code = Factory::NewCode(desc,
&sinfo,
Modified: branches/bleeding_edge/src/factory.cc
==============================================================================
--- branches/bleeding_edge/src/factory.cc (original)
+++ branches/bleeding_edge/src/factory.cc Mon May 18 02:41:16 2009
@@ -509,8 +509,10 @@
}
-Handle<Code> Factory::NewCode(const CodeDesc& desc, ScopeInfo<>* sinfo,
- Code::Flags flags, Handle<Object> self_ref) {
+Handle<Code> Factory::NewCode(const CodeDesc& desc,
+ ZoneScopeInfo* sinfo,
+ Code::Flags flags,
+ Handle<Object> self_ref) {
CALL_HEAP_FUNCTION(Heap::CreateCode(desc, sinfo, flags, self_ref), Code);
}
Modified: branches/bleeding_edge/src/factory.h
==============================================================================
--- branches/bleeding_edge/src/factory.h (original)
+++ branches/bleeding_edge/src/factory.h Mon May 18 02:41:16 2009
@@ -29,6 +29,7 @@
#define V8_FACTORY_H_
#include "heap.h"
+#include "zone-inl.h"
namespace v8 { namespace internal {
@@ -202,8 +203,10 @@
Handle<JSFunction> boilerplate,
Handle<Context> context);
- static Handle<Code> NewCode(const CodeDesc& desc, ScopeInfo<>* sinfo,
- Code::Flags flags, Handle<Object>
self_reference);
+ static Handle<Code> NewCode(const CodeDesc& desc,
+ ZoneScopeInfo* sinfo,
+ Code::Flags flags,
+ Handle<Object> self_reference);
static Handle<Code> CopyCode(Handle<Code> code);
Modified: branches/bleeding_edge/src/func-name-inferrer.h
==============================================================================
--- branches/bleeding_edge/src/func-name-inferrer.h (original)
+++ branches/bleeding_edge/src/func-name-inferrer.h Mon May 18 02:41:16 2009
@@ -82,9 +82,9 @@
Handle<String> MakeNameFromStackHelper(int pos, Handle<String> prev);
void InferFunctionsNames();
- List<int> entries_stack_;
- List<Handle<String> > names_stack_;
- List<FunctionLiteral*> funcs_to_infer_;
+ ZoneList<int> entries_stack_;
+ ZoneList<Handle<String> > names_stack_;
+ ZoneList<FunctionLiteral*> funcs_to_infer_;
Handle<String> dot_;
DISALLOW_COPY_AND_ASSIGN(FuncNameInferrer);
Modified: branches/bleeding_edge/src/globals.h
==============================================================================
--- branches/bleeding_edge/src/globals.h (original)
+++ branches/bleeding_edge/src/globals.h Mon May 18 02:41:16 2009
@@ -239,6 +239,7 @@
class TickSample;
class VirtualMemory;
class Mutex;
+class ZoneScopeInfo;
typedef bool (*WeakSlotCallback)(Object** pointer);
Modified: branches/bleeding_edge/src/heap.cc
==============================================================================
--- branches/bleeding_edge/src/heap.cc (original)
+++ branches/bleeding_edge/src/heap.cc Mon May 18 02:41:16 2009
@@ -1699,7 +1699,7 @@
Object* Heap::CreateCode(const CodeDesc& desc,
- ScopeInfo<>* sinfo,
+ ZoneScopeInfo* sinfo,
Code::Flags flags,
Handle<Object> self_reference) {
// Compute size
Modified: branches/bleeding_edge/src/heap.h
==============================================================================
--- branches/bleeding_edge/src/heap.h (original)
+++ branches/bleeding_edge/src/heap.h Mon May 18 02:41:16 2009
@@ -28,6 +28,8 @@
#ifndef V8_HEAP_H_
#define V8_HEAP_H_
+#include "zone-inl.h"
+
namespace v8 { namespace internal {
// Defines all the roots in Heap.
@@ -570,7 +572,7 @@
// object by containing this pointer.
// Please note this function does not perform a garbage collection.
static Object* CreateCode(const CodeDesc& desc,
- ScopeInfo<>* sinfo,
+ ZoneScopeInfo* sinfo,
Code::Flags flags,
Handle<Object> self_reference);
Modified: branches/bleeding_edge/src/ia32/codegen-ia32.h
==============================================================================
--- branches/bleeding_edge/src/ia32/codegen-ia32.h (original)
+++ branches/bleeding_edge/src/ia32/codegen-ia32.h Mon May 18 02:41:16 2009
@@ -588,7 +588,7 @@
bool is_eval_; // Tells whether code is generated for eval.
Handle<Script> script_;
- List<DeferredCode*> deferred_;
+ ZoneList<DeferredCode*> deferred_;
// Assembler
MacroAssembler* masm_; // to generate code
Modified: branches/bleeding_edge/src/scopeinfo.cc
==============================================================================
--- branches/bleeding_edge/src/scopeinfo.cc (original)
+++ branches/bleeding_edge/src/scopeinfo.cc Mon May 18 02:41:16 2009
@@ -566,5 +566,6 @@
// Make sure the classes get instantiated by the template system.
template class ScopeInfo<FreeStoreAllocationPolicy>;
template class ScopeInfo<PreallocatedStorage>;
+template class ScopeInfo<ZoneListAllocationPolicy>;
} } // namespace v8::internal
Modified: branches/bleeding_edge/src/scopeinfo.h
==============================================================================
--- branches/bleeding_edge/src/scopeinfo.h (original)
+++ branches/bleeding_edge/src/scopeinfo.h Mon May 18 02:41:16 2009
@@ -150,6 +150,18 @@
List<Variable::Mode, Allocator > context_modes_;
};
+class ZoneScopeInfo: public ScopeInfo<ZoneListAllocationPolicy> {
+ public:
+ // Create a ZoneScopeInfo instance from a scope.
+ explicit ZoneScopeInfo(Scope* scope)
+ : ScopeInfo<ZoneListAllocationPolicy>(scope) {}
+
+ // Create a ZoneScopeInfo instance from a Code object.
+ explicit ZoneScopeInfo(Code* code)
+ : ScopeInfo<ZoneListAllocationPolicy>(code) {}
+};
+
+
} } // namespace v8::internal
#endif // V8_SCOPEINFO_H_
Modified: branches/bleeding_edge/src/scopes.cc
==============================================================================
--- branches/bleeding_edge/src/scopes.cc (original)
+++ branches/bleeding_edge/src/scopes.cc Mon May 18 02:41:16 2009
@@ -301,6 +301,8 @@
List<Variable*, FreeStoreAllocationPolicy>* locals);
template void Scope::CollectUsedVariables(
List<Variable*, PreallocatedStorage>* locals);
+template void Scope::CollectUsedVariables(
+ List<Variable*, ZoneListAllocationPolicy>* locals);
void Scope::AllocateVariables(Handle<Context> context) {
--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---