Revision: 18369
Author:   [email protected]
Date:     Wed Dec 18 22:51:23 2013 UTC
Log: Pretty printing for array code stubs. The minor keys encode things like specialized ElementsKind for each stub. This can be useful to see in disassembly traces.

[email protected]

Review URL: https://codereview.chromium.org/110103002
http://code.google.com/p/v8/source/detail?r=18369

Modified:
 /branches/bleeding_edge/src/code-stubs.cc
 /branches/bleeding_edge/src/code-stubs.h

=======================================
--- /branches/bleeding_edge/src/code-stubs.cc   Fri Dec 13 10:27:19 2013 UTC
+++ /branches/bleeding_edge/src/code-stubs.cc   Wed Dec 18 22:51:23 2013 UTC
@@ -583,6 +583,28 @@
   stream->Add("CallConstructStub");
   if (RecordCallTarget()) stream->Add("_Recording");
 }
+
+
+void ArrayConstructorStub::PrintName(StringStream* stream) {
+  stream->Add("ArrayConstructorStub");
+  switch (argument_count_) {
+    case ANY: stream->Add("_Any"); break;
+    case NONE: stream->Add("_None"); break;
+    case ONE: stream->Add("_One"); break;
+    case MORE_THAN_ONE: stream->Add("_More_Than_One"); break;
+  }
+}
+
+
+void ArrayConstructorStubBase::BasePrintName(const char* name,
+                                             StringStream* stream) {
+  stream->Add(name);
+  stream->Add("_");
+  stream->Add(ElementsKindToString(elements_kind()));
+  if (override_mode() == DISABLE_ALLOCATION_SITES) {
+    stream->Add("_DISABLE_ALLOCATION_SITES");
+  }
+}


 bool ToBooleanStub::UpdateStatus(Handle<Object> object) {
=======================================
--- /branches/bleeding_edge/src/code-stubs.h    Wed Dec 18 11:58:58 2013 UTC
+++ /branches/bleeding_edge/src/code-stubs.h    Wed Dec 18 22:51:23 2013 UTC
@@ -741,6 +741,7 @@
  private:
   void GenerateDispatchToArrayStub(MacroAssembler* masm,
                                    AllocationSiteOverrideMode mode);
+  virtual void PrintName(StringStream* stream);

   virtual CodeStub::Major MajorKey() { return ArrayConstructor; }
   virtual int MinorKey() { return argument_count_; }
@@ -1933,6 +1934,9 @@
   static const int kConstructor = 0;
   static const int kPropertyCell = 1;

+ protected:
+  void BasePrintName(const char* name, StringStream* stream);
+
  private:
   int NotMissMinorKey() { return bit_field_; }

@@ -1967,6 +1971,10 @@

  private:
   Major MajorKey() { return ArrayNoArgumentConstructor; }
+
+  virtual void PrintName(StringStream* stream) {
+    BasePrintName("ArrayNoArgumentConstructorStub", stream);
+  }

   DISALLOW_COPY_AND_ASSIGN(ArrayNoArgumentConstructorStub);
 };
@@ -1989,6 +1997,10 @@

  private:
   Major MajorKey() { return ArraySingleArgumentConstructor; }
+
+  virtual void PrintName(StringStream* stream) {
+    BasePrintName("ArraySingleArgumentConstructorStub", stream);
+  }

   DISALLOW_COPY_AND_ASSIGN(ArraySingleArgumentConstructorStub);
 };
@@ -2011,6 +2023,10 @@

  private:
   Major MajorKey() { return ArrayNArgumentsConstructor; }
+
+  virtual void PrintName(StringStream* stream) {
+    BasePrintName("ArrayNArgumentsConstructorStub", stream);
+  }

   DISALLOW_COPY_AND_ASSIGN(ArrayNArgumentsConstructorStub);
 };

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to