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
-~----------~----~----~----~------~----~------~--~---

Reply via email to