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);