Title: [201657] trunk/Source/_javascript_Core
Revision
201657
Author
[email protected]
Date
2016-06-03 14:26:52 -0700 (Fri, 03 Jun 2016)

Log Message

Clients of PolymorphicAccess::addCases shouldn't have to malloc
https://bugs.webkit.org/show_bug.cgi?id=158357

Reviewed by Keith Miller.

We only ever have 1 or 2 cases, so we can use inline Vector capacity.

This shows up a little in the JSBench profile.

* bytecode/PolymorphicAccess.cpp:
(JSC::PolymorphicAccess::addCases):
(JSC::PolymorphicAccess::addCase):
* bytecode/PolymorphicAccess.h:
* bytecode/StructureStubInfo.cpp:
(JSC::StructureStubInfo::addAccessCase):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (201656 => 201657)


--- trunk/Source/_javascript_Core/ChangeLog	2016-06-03 21:13:34 UTC (rev 201656)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-06-03 21:26:52 UTC (rev 201657)
@@ -1,3 +1,21 @@
+2016-06-03  Geoffrey Garen  <[email protected]>
+
+        Clients of PolymorphicAccess::addCases shouldn't have to malloc
+        https://bugs.webkit.org/show_bug.cgi?id=158357
+
+        Reviewed by Keith Miller.
+
+        We only ever have 1 or 2 cases, so we can use inline Vector capacity.
+
+        This shows up a little in the JSBench profile.
+
+        * bytecode/PolymorphicAccess.cpp:
+        (JSC::PolymorphicAccess::addCases):
+        (JSC::PolymorphicAccess::addCase):
+        * bytecode/PolymorphicAccess.h:
+        * bytecode/StructureStubInfo.cpp:
+        (JSC::StructureStubInfo::addAccessCase):
+
 2016-06-03  Benjamin Poulain  <[email protected]>
 
         Fix some more INFINITI->INFINITY typos

Modified: trunk/Source/_javascript_Core/bytecode/PolymorphicAccess.cpp (201656 => 201657)


--- trunk/Source/_javascript_Core/bytecode/PolymorphicAccess.cpp	2016-06-03 21:13:34 UTC (rev 201656)
+++ trunk/Source/_javascript_Core/bytecode/PolymorphicAccess.cpp	2016-06-03 21:26:52 UTC (rev 201657)
@@ -1421,7 +1421,7 @@
 
 AccessGenerationResult PolymorphicAccess::addCases(
     VM& vm, CodeBlock* codeBlock, StructureStubInfo& stubInfo, const Identifier& ident,
-    Vector<std::unique_ptr<AccessCase>> originalCasesToAdd)
+    Vector<std::unique_ptr<AccessCase>, 2> originalCasesToAdd)
 {
     SuperSamplerScope superSamplerScope(false);
     
@@ -1482,7 +1482,7 @@
     VM& vm, CodeBlock* codeBlock, StructureStubInfo& stubInfo, const Identifier& ident,
     std::unique_ptr<AccessCase> newAccess)
 {
-    Vector<std::unique_ptr<AccessCase>> newAccesses;
+    Vector<std::unique_ptr<AccessCase>, 2> newAccesses;
     newAccesses.append(WTFMove(newAccess));
     return addCases(vm, codeBlock, stubInfo, ident, WTFMove(newAccesses));
 }

Modified: trunk/Source/_javascript_Core/bytecode/PolymorphicAccess.h (201656 => 201657)


--- trunk/Source/_javascript_Core/bytecode/PolymorphicAccess.h	2016-06-03 21:13:34 UTC (rev 201656)
+++ trunk/Source/_javascript_Core/bytecode/PolymorphicAccess.h	2016-06-03 21:26:52 UTC (rev 201657)
@@ -383,7 +383,7 @@
     // When this fails (returns GaveUp), this will leave the old stub intact but you should not try
     // to call this method again for that PolymorphicAccess instance.
     AccessGenerationResult addCases(
-        VM&, CodeBlock*, StructureStubInfo&, const Identifier&, Vector<std::unique_ptr<AccessCase>>);
+        VM&, CodeBlock*, StructureStubInfo&, const Identifier&, Vector<std::unique_ptr<AccessCase>, 2>);
 
     AccessGenerationResult addCase(
         VM&, CodeBlock*, StructureStubInfo&, const Identifier&, std::unique_ptr<AccessCase>);

Modified: trunk/Source/_javascript_Core/bytecode/StructureStubInfo.cpp (201656 => 201657)


--- trunk/Source/_javascript_Core/bytecode/StructureStubInfo.cpp	2016-06-03 21:13:34 UTC (rev 201656)
+++ trunk/Source/_javascript_Core/bytecode/StructureStubInfo.cpp	2016-06-03 21:26:52 UTC (rev 201657)
@@ -134,7 +134,7 @@
     } else {
         std::unique_ptr<PolymorphicAccess> access = std::make_unique<PolymorphicAccess>();
         
-        Vector<std::unique_ptr<AccessCase>> accessCases;
+        Vector<std::unique_ptr<AccessCase>, 2> accessCases;
         
         std::unique_ptr<AccessCase> previousCase =
             AccessCase::fromStructureStubInfo(vm, codeBlock, *this);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to