JSC should build successfully even with -DENABLE_UNIFIED_BUILDS=OFF
authorross.kirsling@sony.com <ross.kirsling@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 9 Apr 2019 18:50:00 +0000 (18:50 +0000)
committerross.kirsling@sony.com <ross.kirsling@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 9 Apr 2019 18:50:00 +0000 (18:50 +0000)
https://bugs.webkit.org/show_bug.cgi?id=193073

Reviewed by Keith Miller.

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitEqualityOpImpl):
(JSC::BytecodeGenerator::emitEqualityOp): Deleted.
* bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::emitEqualityOp):
Factor out the logic that uses the template parameter and keep it in the header.

* jit/JITPropertyAccess.cpp:
List off the template specializations needed by JITOperations.cpp.
This is unfortunate but at least there are only two (x2) by definition?
Trying to do away with this incurs a severe domino effect...

* API/JSValueRef.cpp:
* b3/B3OptimizeAssociativeExpressionTrees.cpp:
* b3/air/AirHandleCalleeSaves.cpp:
* builtins/BuiltinNames.cpp:
* bytecode/AccessCase.cpp:
* bytecode/BytecodeIntrinsicRegistry.cpp:
* bytecode/BytecodeIntrinsicRegistry.h:
* bytecode/BytecodeRewriter.cpp:
* bytecode/BytecodeUseDef.h:
* bytecode/CodeBlock.cpp:
* bytecode/InstanceOfAccessCase.cpp:
* bytecode/MetadataTable.cpp:
* bytecode/PolyProtoAccessChain.cpp:
* bytecode/StructureSet.cpp:
* bytecompiler/NodesCodegen.cpp:
* dfg/DFGCFAPhase.cpp:
* dfg/DFGPureValue.cpp:
* heap/GCSegmentedArray.h:
* heap/HeapInlines.h:
* heap/IsoSubspace.cpp:
* heap/LocalAllocator.cpp:
* heap/LocalAllocator.h:
* heap/LocalAllocatorInlines.h:
* heap/MarkingConstraintSolver.cpp:
* inspector/ScriptArguments.cpp:
(Inspector::ScriptArguments::isEqual const):
* inspector/ScriptCallStackFactory.cpp:
* interpreter/CallFrame.h:
* interpreter/Interpreter.cpp:
* interpreter/StackVisitor.cpp:
* llint/LLIntEntrypoint.cpp:
* runtime/ArrayIteratorPrototype.cpp:
* runtime/BigIntPrototype.cpp:
* runtime/CachedTypes.cpp:
* runtime/ErrorType.cpp:
* runtime/IndexingType.cpp:
* runtime/JSCellInlines.h:
* runtime/JSImmutableButterfly.h:
* runtime/Operations.h:
* runtime/RegExpCachedResult.cpp:
* runtime/RegExpConstructor.cpp:
* runtime/RegExpGlobalData.cpp:
* runtime/StackFrame.h:
* wasm/WasmSignature.cpp:
* wasm/js/JSToWasm.cpp:
* wasm/js/JSToWasmICCallee.cpp:
* wasm/js/WebAssemblyFunction.h:
Fix includes / forward declarations (and a couple of nearby clang warnings).

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@244088 268f45cc-cd09-0410-ab3c-d52691b4dbfc

50 files changed:
Source/JavaScriptCore/API/JSValueRef.cpp
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/b3/B3OptimizeAssociativeExpressionTrees.cpp
Source/JavaScriptCore/b3/air/AirHandleCalleeSaves.cpp
Source/JavaScriptCore/builtins/BuiltinNames.cpp
Source/JavaScriptCore/bytecode/AccessCase.cpp
Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.cpp
Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.h
Source/JavaScriptCore/bytecode/BytecodeRewriter.cpp
Source/JavaScriptCore/bytecode/BytecodeUseDef.h
Source/JavaScriptCore/bytecode/CodeBlock.cpp
Source/JavaScriptCore/bytecode/InstanceOfAccessCase.cpp
Source/JavaScriptCore/bytecode/MetadataTable.cpp
Source/JavaScriptCore/bytecode/PolyProtoAccessChain.cpp
Source/JavaScriptCore/bytecode/StructureSet.cpp
Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h
Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
Source/JavaScriptCore/dfg/DFGCFAPhase.cpp
Source/JavaScriptCore/dfg/DFGPureValue.cpp
Source/JavaScriptCore/heap/GCSegmentedArray.h
Source/JavaScriptCore/heap/HeapInlines.h
Source/JavaScriptCore/heap/IsoSubspace.cpp
Source/JavaScriptCore/heap/LocalAllocator.cpp
Source/JavaScriptCore/heap/LocalAllocator.h
Source/JavaScriptCore/heap/LocalAllocatorInlines.h
Source/JavaScriptCore/heap/MarkingConstraintSolver.cpp
Source/JavaScriptCore/inspector/ScriptArguments.cpp
Source/JavaScriptCore/inspector/ScriptCallStackFactory.cpp
Source/JavaScriptCore/interpreter/CallFrame.h
Source/JavaScriptCore/interpreter/Interpreter.cpp
Source/JavaScriptCore/interpreter/StackVisitor.cpp
Source/JavaScriptCore/jit/JITPropertyAccess.cpp
Source/JavaScriptCore/llint/LLIntEntrypoint.cpp
Source/JavaScriptCore/runtime/ArrayIteratorPrototype.cpp
Source/JavaScriptCore/runtime/BigIntPrototype.cpp
Source/JavaScriptCore/runtime/CachedTypes.cpp
Source/JavaScriptCore/runtime/ErrorType.cpp
Source/JavaScriptCore/runtime/IndexingType.cpp
Source/JavaScriptCore/runtime/JSCellInlines.h
Source/JavaScriptCore/runtime/JSImmutableButterfly.h
Source/JavaScriptCore/runtime/Operations.h
Source/JavaScriptCore/runtime/RegExpCachedResult.cpp
Source/JavaScriptCore/runtime/RegExpConstructor.cpp
Source/JavaScriptCore/runtime/RegExpGlobalData.cpp
Source/JavaScriptCore/runtime/StackFrame.h
Source/JavaScriptCore/wasm/WasmSignature.cpp
Source/JavaScriptCore/wasm/js/JSToWasm.cpp
Source/JavaScriptCore/wasm/js/JSToWasmICCallee.cpp
Source/JavaScriptCore/wasm/js/WebAssemblyFunction.h

index 4c12b96..dd64d26 100644 (file)
@@ -36,6 +36,7 @@
 #include "JSCallbackObject.h"
 #include "JSGlobalObject.h"
 #include "JSONObject.h"
+#include "JSObjectRefPrivate.h"
 #include "JSString.h"
 #include "LiteralParser.h"
 #include "Protect.h"
index 8c23d94..781d681 100644 (file)
@@ -1,3 +1,71 @@
+2019-04-09  Ross Kirsling  <ross.kirsling@sony.com>
+
+        JSC should build successfully even with -DENABLE_UNIFIED_BUILDS=OFF
+        https://bugs.webkit.org/show_bug.cgi?id=193073
+
+        Reviewed by Keith Miller.
+
+        * bytecompiler/BytecodeGenerator.cpp:
+        (JSC::BytecodeGenerator::emitEqualityOpImpl):
+        (JSC::BytecodeGenerator::emitEqualityOp): Deleted.
+        * bytecompiler/BytecodeGenerator.h:
+        (JSC::BytecodeGenerator::emitEqualityOp):
+        Factor out the logic that uses the template parameter and keep it in the header.
+
+        * jit/JITPropertyAccess.cpp:
+        List off the template specializations needed by JITOperations.cpp.
+        This is unfortunate but at least there are only two (x2) by definition?
+        Trying to do away with this incurs a severe domino effect...
+
+        * API/JSValueRef.cpp:
+        * b3/B3OptimizeAssociativeExpressionTrees.cpp:
+        * b3/air/AirHandleCalleeSaves.cpp:
+        * builtins/BuiltinNames.cpp:
+        * bytecode/AccessCase.cpp:
+        * bytecode/BytecodeIntrinsicRegistry.cpp:
+        * bytecode/BytecodeIntrinsicRegistry.h:
+        * bytecode/BytecodeRewriter.cpp:
+        * bytecode/BytecodeUseDef.h:
+        * bytecode/CodeBlock.cpp:
+        * bytecode/InstanceOfAccessCase.cpp:
+        * bytecode/MetadataTable.cpp:
+        * bytecode/PolyProtoAccessChain.cpp:
+        * bytecode/StructureSet.cpp:
+        * bytecompiler/NodesCodegen.cpp:
+        * dfg/DFGCFAPhase.cpp:
+        * dfg/DFGPureValue.cpp:
+        * heap/GCSegmentedArray.h:
+        * heap/HeapInlines.h:
+        * heap/IsoSubspace.cpp:
+        * heap/LocalAllocator.cpp:
+        * heap/LocalAllocator.h:
+        * heap/LocalAllocatorInlines.h:
+        * heap/MarkingConstraintSolver.cpp:
+        * inspector/ScriptArguments.cpp:
+        (Inspector::ScriptArguments::isEqual const):
+        * inspector/ScriptCallStackFactory.cpp:
+        * interpreter/CallFrame.h:
+        * interpreter/Interpreter.cpp:
+        * interpreter/StackVisitor.cpp:
+        * llint/LLIntEntrypoint.cpp:
+        * runtime/ArrayIteratorPrototype.cpp:
+        * runtime/BigIntPrototype.cpp:
+        * runtime/CachedTypes.cpp:
+        * runtime/ErrorType.cpp:
+        * runtime/IndexingType.cpp:
+        * runtime/JSCellInlines.h:
+        * runtime/JSImmutableButterfly.h:
+        * runtime/Operations.h:
+        * runtime/RegExpCachedResult.cpp:
+        * runtime/RegExpConstructor.cpp:
+        * runtime/RegExpGlobalData.cpp:
+        * runtime/StackFrame.h:
+        * wasm/WasmSignature.cpp:
+        * wasm/js/JSToWasm.cpp:
+        * wasm/js/JSToWasmICCallee.cpp:
+        * wasm/js/WebAssemblyFunction.h:
+        Fix includes / forward declarations (and a couple of nearby clang warnings).
+
 2019-04-09  Don Olmstead  <don.olmstead@sony.com>
 
         [CMake] Apple builds should use ICU_INCLUDE_DIRS
index 8125a3c..e313e1d 100644 (file)
@@ -31,7 +31,7 @@
 #include "B3BasicBlock.h"
 #include "B3Const32Value.h"
 #include "B3Const64Value.h"
-#include "B3InsertionSet.h"
+#include "B3InsertionSetInlines.h"
 #include "B3Opcode.h"
 #include "B3PhaseScope.h"
 #include "B3Procedure.h"
index 7c9f378..547bb6e 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "AirCode.h"
 #include "AirInstInlines.h"
+#include "RegisterSet.h"
 
 namespace JSC { namespace B3 { namespace Air {
 
index ad79fed..6d505ac 100644 (file)
@@ -26,6 +26,8 @@
 #include "config.h"
 #include "BuiltinNames.h"
 
+#include "IdentifierInlines.h"
+
 #if COMPILER(MSVC)
 #pragma warning(push)
 #pragma warning(disable:4307)
index 9059811..c10859a 100644 (file)
 #include "DirectArguments.h"
 #include "GetterSetter.h"
 #include "GetterSetterAccessCase.h"
-#include "HeapInlines.h"
 #include "InstanceOfAccessCase.h"
 #include "IntrinsicGetterAccessCase.h"
-#include "JSCJSValueInlines.h"
+#include "JSCInlines.h"
 #include "JSModuleEnvironment.h"
 #include "JSModuleNamespaceObject.h"
 #include "LinkBuffer.h"
@@ -45,7 +44,6 @@
 #include "PolymorphicAccess.h"
 #include "ScopedArguments.h"
 #include "ScratchRegisterAllocator.h"
-#include "SlotVisitorInlines.h"
 #include "StructureStubInfo.h"
 #include "SuperSampler.h"
 #include "ThunkGenerators.h"
index d1ef009..18a1970 100644 (file)
@@ -32,7 +32,7 @@
 #include "BytecodeGenerator.h"
 #include "IterationKind.h"
 #include "JSAsyncGeneratorFunction.h"
-#include "JSCJSValueInlines.h"
+#include "JSCInlines.h"
 #include "JSGeneratorFunction.h"
 #include "JSGlobalObject.h"
 #include "JSModuleLoader.h"
index 42f8e12..69b64f6 100644 (file)
@@ -35,7 +35,6 @@ class CommonIdentifiers;
 class BytecodeGenerator;
 class BytecodeIntrinsicNode;
 class RegisterID;
-class Identifier;
 
 #define JSC_COMMON_BYTECODE_INTRINSIC_FUNCTIONS_EACH_NAME(macro) \
     macro(argument) \
index 26a3b42..4bbd113 100644 (file)
@@ -27,7 +27,7 @@
 #include "config.h"
 #include "BytecodeRewriter.h"
 
-#include "HeapInlines.h"
+#include "JSCInlines.h"
 #include "PreciseJumpTargetsInlines.h"
 #include <wtf/BubbleSort.h>
 
index 93aa2de..5718b5b 100644 (file)
@@ -25,6 +25,7 @@
 
 #pragma once
 
+#include "BytecodeStructs.h"
 #include "CodeBlock.h"
 #include "Instruction.h"
 #include <wtf/Forward.h>
index 0a9ecf1..0ab756c 100644 (file)
 #endif
 
 namespace JSC {
-namespace CodeBlockInternal {
-static constexpr bool verbose = false;
-} // namespace CodeBlockInternal
 
 const ClassInfo CodeBlock::s_info = {
     "CodeBlock", nullptr, nullptr, nullptr,
index cfd33a0..7e9d9f7 100644 (file)
@@ -28,6 +28,8 @@
 
 #if ENABLE(JIT)
 
+#include "JSCInlines.h"
+
 namespace JSC {
 
 std::unique_ptr<AccessCase> InstanceOfAccessCase::create(
index 6868dc4..5fdc8ad 100644 (file)
@@ -27,6 +27,7 @@
 #include "MetadataTable.h"
 
 #include "CodeBlock.h"
+#include "JSCInlines.h"
 #include "OpcodeInlines.h"
 #include "UnlinkedMetadataTableInlines.h"
 #include <wtf/FastMalloc.h>
index 27ce7e0..65f46b9 100644 (file)
@@ -26,6 +26,7 @@
 #include "config.h"
 #include "PolyProtoAccessChain.h"
 
+#include "JSCInlines.h"
 #include "JSObject.h"
 
 namespace JSC {
index 928b82c..4324168 100644 (file)
@@ -26,6 +26,7 @@
 #include "config.h"
 #include "StructureSet.h"
 
+#include "JSCInlines.h"
 #include "TrackedReferences.h"
 #include <wtf/CommaPrinter.h>
 
index dc7ec64..ba9b815 100644 (file)
@@ -1728,8 +1728,7 @@ RegisterID* BytecodeGenerator::emitDec(RegisterID* srcDst)
     return srcDst;
 }
 
-template<typename EqOp>
-RegisterID* BytecodeGenerator::emitEqualityOp(RegisterID* dst, RegisterID* src1, RegisterID* src2)
+bool BytecodeGenerator::emitEqualityOpImpl(RegisterID* dst, RegisterID* src1, RegisterID* src2)
 {
     if (m_lastInstruction->is<OpTypeof>()) {
         auto op = m_lastInstruction->as<OpTypeof>();
@@ -1741,48 +1740,47 @@ RegisterID* BytecodeGenerator::emitEqualityOp(RegisterID* dst, RegisterID* src1,
             if (value == "undefined") {
                 rewind();
                 OpIsUndefined::emit(this, dst, op.m_value);
-                return dst;
+                return true;
             }
             if (value == "boolean") {
                 rewind();
                 OpIsBoolean::emit(this, dst, op.m_value);
-                return dst;
+                return true;
             }
             if (value == "number") {
                 rewind();
                 OpIsNumber::emit(this, dst, op.m_value);
-                return dst;
+                return true;
             }
             if (value == "string") {
                 rewind();
                 OpIsCellWithType::emit(this, dst, op.m_value, StringType);
-                return dst;
+                return true;
             }
             if (value == "symbol") {
                 rewind();
                 OpIsCellWithType::emit(this, dst, op.m_value, SymbolType);
-                return dst;
+                return true;
             }
             if (Options::useBigInt() && value == "bigint") {
                 rewind();
                 OpIsCellWithType::emit(this, dst, op.m_value, BigIntType);
-                return dst;
+                return true;
             }
             if (value == "object") {
                 rewind();
                 OpIsObjectOrNull::emit(this, dst, op.m_value);
-                return dst;
+                return true;
             }
             if (value == "function") {
                 rewind();
                 OpIsFunction::emit(this, dst, op.m_value);
-                return dst;
+                return true;
             }
         }
     }
 
-    EqOp::emit(this, dst, src1, src2);
-    return dst;
+    return false;
 }
 
 void BytecodeGenerator::emitTypeProfilerExpressionInfo(const JSTextPosition& startDivot, const JSTextPosition& endDivot)
index 71e7254..f5305b0 100644 (file)
@@ -712,7 +712,15 @@ namespace JSC {
         RegisterID* emitBinaryOp(OpcodeID, RegisterID* dst, RegisterID* src1, RegisterID* src2, OperandTypes);
 
         template<typename EqOp>
-        RegisterID* emitEqualityOp(RegisterID* dst, RegisterID* src1, RegisterID* src2);
+        RegisterID* emitEqualityOp(RegisterID* dst, RegisterID* src1, RegisterID* src2)
+        {
+            if (!emitEqualityOpImpl(dst, src1, src2))
+                EqOp::emit(this, dst, src1, src2);
+            return dst;
+        }
+
+        bool emitEqualityOpImpl(RegisterID* dst, RegisterID* src1, RegisterID* src2);
+
         RegisterID* emitCreateThis(RegisterID* dst);
         void emitTDZCheck(RegisterID* target);
         bool needsTDZCheck(const Variable&);
index f07592b..33027e4 100644 (file)
@@ -41,6 +41,7 @@
 #include "Lexer.h"
 #include "Parser.h"
 #include "StackAlignment.h"
+#include "UnlinkedMetadataTableInlines.h"
 #include "YarrFlags.h"
 #include <wtf/Assertions.h>
 #include <wtf/Threading.h>
index 2145463..bd0449d 100644 (file)
@@ -31,6 +31,7 @@
 #include "DFGAbstractInterpreterInlines.h"
 #include "DFGBlockSet.h"
 #include "DFGClobberSet.h"
+#include "DFGClobberize.h"
 #include "DFGGraph.h"
 #include "DFGInPlaceAbstractState.h"
 #include "DFGPhase.h"
index ac50c9b..313ea60 100644 (file)
@@ -28,8 +28,6 @@
 
 #if ENABLE(DFG_JIT)
 
-#include "DFGGraph.h"
-
 namespace JSC { namespace DFG {
 
 void PureValue::dump(PrintStream& out) const
index 359e83e..af2c962 100644 (file)
@@ -27,6 +27,7 @@
 
 #include <wtf/DoublyLinkedList.h>
 #include <wtf/Forward.h>
+#include <wtf/Noncopyable.h>
 
 namespace JSC {
 
index f8d3c12..1b8b192 100644 (file)
@@ -29,7 +29,6 @@
 #include "Heap.h"
 #include "HeapCellInlines.h"
 #include "IndexingHeader.h"
-#include "JSCallee.h"
 #include "JSCast.h"
 #include "Structure.h"
 #include <type_traits>
index 50d68bd..d51000e 100644 (file)
@@ -29,6 +29,7 @@
 #include "AllocatorInlines.h"
 #include "BlockDirectoryInlines.h"
 #include "IsoAlignedMemoryAllocator.h"
+#include "IsoSubspaceInlines.h"
 #include "LocalAllocatorInlines.h"
 
 namespace JSC {
index 1a499b1..d63e2e4 100644 (file)
 #include "LocalAllocator.h"
 
 #include "AllocatingScope.h"
+#include "FreeListInlines.h"
+#include "GCDeferralContext.h"
+#include "JSCInlines.h"
 #include "LocalAllocatorInlines.h"
 #include "Options.h"
+#include "SuperSampler.h"
 
 namespace JSC {
 
index dfa66c3..437273f 100644 (file)
@@ -25,6 +25,7 @@
 
 #pragma once
 
+#include "AllocationFailureMode.h"
 #include "FreeList.h"
 #include "MarkedBlock.h"
 #include <wtf/Noncopyable.h>
index 6cc5633..00d5574 100644 (file)
@@ -25,6 +25,7 @@
 
 #pragma once
 
+#include "HeapInlines.h"
 #include "LocalAllocator.h"
 
 namespace JSC {
index 4cff499..a50ebf0 100644 (file)
@@ -27,6 +27,7 @@
 #include "MarkingConstraintSolver.h"
 
 #include "JSCInlines.h"
+#include "MarkingConstraintSet.h"
 
 namespace JSC { 
 
index cf49d96..19194e1 100644 (file)
@@ -35,6 +35,7 @@
 #include "CatchScope.h"
 #include "JSCInlines.h"
 #include "ProxyObject.h"
+#include "StrongInlines.h"
 
 namespace Inspector {
 
@@ -110,7 +111,7 @@ bool ScriptArguments::isEqual(const ScriptArguments& other) const
                 return false;
         } else {
             auto scope = DECLARE_CATCH_SCOPE(state->vm());
-            bool result = JSValue::strictEqual(state, a, b);
+            bool result = JSC::JSValue::strictEqual(state, a, b);
             scope.clearException();
             if (!result)
                 return false;
index bae7281..72e6efd 100644 (file)
@@ -42,6 +42,7 @@
 #include "ScriptArguments.h"
 #include "ScriptCallFrame.h"
 #include "StackVisitor.h"
+#include "StrongInlines.h"
 #include <wtf/text/WTFString.h>
 
 using namespace JSC;
index d12243a..6b07ba4 100644 (file)
@@ -258,8 +258,8 @@ namespace JSC  {
         }
 
         void convertToStackOverflowFrame(VM&, CodeBlock* codeBlockToKeepAliveUntilFrameIsUnwound);
-        inline bool isStackOverflowFrame() const;
-        inline bool isWasmFrame() const;
+        bool isStackOverflowFrame() const;
+        bool isWasmFrame() const;
 
         void setArgumentCountIncludingThis(int count) { static_cast<Register*>(this)[CallFrameSlot::argumentCount].payload() = count; }
         void setCallee(JSObject* callee) { static_cast<Register*>(this)[CallFrameSlot::callee] = callee; }
index ae64768..c1f2f1f 100644 (file)
@@ -81,7 +81,6 @@
 #include "VMInlines.h"
 #include "VMInspector.h"
 #include "VirtualRegister.h"
-
 #include <limits.h>
 #include <stdio.h>
 #include <wtf/NeverDestroyed.h>
 #include "JIT.h"
 #endif
 
+#if ENABLE(WEBASSEMBLY)
+#include "WasmContextInlines.h"
+#include "WebAssemblyFunction.h"
+#endif
+
 namespace JSC {
 
 JSValue eval(CallFrame* callFrame)
index b14cebd..e4e0d28 100644 (file)
@@ -26,6 +26,7 @@
 #include "config.h"
 #include "StackVisitor.h"
 
+#include "CallFrameInlines.h"
 #include "ClonedArguments.h"
 #include "DebuggerPrimitives.h"
 #include "InlineCallFrame.h"
index 8d8d5db..0b34400 100644 (file)
@@ -44,6 +44,7 @@
 #include "ScopedArgumentsTable.h"
 #include "SlowPathCall.h"
 #include "StructureStubInfo.h"
+#include "ThunkGenerators.h"
 #include <wtf/ScopedLambda.h>
 #include <wtf/StringPrintStream.h>
 
@@ -1439,6 +1440,10 @@ void JIT::privateCompilePutByVal(const ConcurrentJSLocker&, ByValInfo* byValInfo
     MacroAssembler::repatchJump(byValInfo->badTypeJump, CodeLocationLabel<JITStubRoutinePtrTag>(byValInfo->stubRoutine->code().code()));
     MacroAssembler::repatchCall(CodeLocationCall<NoPtrTag>(MacroAssemblerCodePtr<NoPtrTag>(returnAddress)), FunctionPtr<OperationPtrTag>(isDirect ? operationDirectPutByValGeneric : operationPutByValGeneric));
 }
+// This function is only consumed from another translation unit (JITOperations.cpp),
+// so we list off the two expected specializations in advance.
+template void JIT::privateCompilePutByVal<OpPutByVal>(const ConcurrentJSLocker&, ByValInfo*, ReturnAddressPtr, JITArrayMode);
+template void JIT::privateCompilePutByVal<OpPutByValDirect>(const ConcurrentJSLocker&, ByValInfo*, ReturnAddressPtr, JITArrayMode);
 
 template<typename Op>
 void JIT::privateCompilePutByValWithCachedId(ByValInfo* byValInfo, ReturnAddressPtr returnAddress, PutKind putKind, const Identifier& propertyName)
@@ -1473,6 +1478,10 @@ void JIT::privateCompilePutByValWithCachedId(ByValInfo* byValInfo, ReturnAddress
     MacroAssembler::repatchJump(byValInfo->notIndexJump, CodeLocationLabel<JITStubRoutinePtrTag>(byValInfo->stubRoutine->code().code()));
     MacroAssembler::repatchCall(CodeLocationCall<NoPtrTag>(MacroAssemblerCodePtr<NoPtrTag>(returnAddress)), FunctionPtr<OperationPtrTag>(putKind == Direct ? operationDirectPutByValGeneric : operationPutByValGeneric));
 }
+// This function is only consumed from another translation unit (JITOperations.cpp),
+// so we list off the two expected specializations in advance.
+template void JIT::privateCompilePutByValWithCachedId<OpPutByVal>(ByValInfo*, ReturnAddressPtr, PutKind, const Identifier&);
+template void JIT::privateCompilePutByValWithCachedId<OpPutByValDirect>(ByValInfo*, ReturnAddressPtr, PutKind, const Identifier&);
 
 JIT::JumpList JIT::emitDoubleLoad(const Instruction*, PatchableJump& badType)
 {
index 5d65fb4..b583095 100644 (file)
@@ -30,6 +30,7 @@
 #include "JITCode.h"
 #include "JSCellInlines.h"
 #include "JSObject.h"
+#include "LLIntData.h"
 #include "LLIntThunks.h"
 #include "LowLevelInterpreter.h"
 #include "MaxFrameExtentForSlowPathCall.h"
index 893320a..c440bb3 100644 (file)
@@ -27,6 +27,7 @@
 #include "ArrayIteratorPrototype.h"
 
 #include "IteratorOperations.h"
+#include "JSCBuiltins.h"
 #include "JSCInlines.h"
 #include "JSCJSValueInlines.h"
 #include "JSCellInlines.h"
index 7e15288..215c095 100644 (file)
@@ -27,6 +27,7 @@
 #include "config.h"
 #include "BigIntPrototype.h"
 
+#include "BigIntObject.h"
 #include "Error.h"
 #include "JSBigInt.h"
 #include "JSCBuiltins.h"
index f811760..9e56bb2 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "BytecodeCacheVersion.h"
 #include "BytecodeLivenessAnalysis.h"
+#include "JSCInlines.h"
 #include "JSImmutableButterfly.h"
 #include "JSTemplateObjectDescriptor.h"
 #include "ScopedArgumentsTable.h"
index 9e6f13f..b2ac298 100644 (file)
@@ -26,6 +26,8 @@
 #include "config.h"
 #include "ErrorType.h"
 
+#include <wtf/PrintStream.h>
+
 namespace JSC {
 
 ASCIILiteral errorTypeName(ErrorType errorType)
index dfecefc..fc5d50a 100644 (file)
@@ -26,6 +26,8 @@
 #include "config.h"
 #include "IndexingType.h"
 
+#include "JSCInlines.h"
+
 namespace JSC {
 
 IndexingType leastUpperBoundOfIndexingTypes(IndexingType a, IndexingType b)
index 1a4af2a..997b151 100644 (file)
@@ -33,6 +33,7 @@
 #include "DeferGC.h"
 #include "FreeListInlines.h"
 #include "Handle.h"
+#include "HeapInlines.h"
 #include "IsoSubspaceInlines.h"
 #include "JSBigInt.h"
 #include "JSCast.h"
@@ -41,6 +42,7 @@
 #include "JSString.h"
 #include "LocalAllocatorInlines.h"
 #include "MarkedBlock.h"
+#include "SlotVisitorInlines.h"
 #include "Structure.h"
 #include "Symbol.h"
 #include <wtf/CompilationThread.h>
index b554c5f..07d8068 100644 (file)
@@ -27,6 +27,7 @@
 
 #include "Butterfly.h"
 #include "IndexingHeader.h"
+#include "JSCJSValueInlines.h"
 #include "JSCell.h"
 #include "Structure.h"
 #include "VirtualRegister.h"
index 43ddba4..feca726 100644 (file)
@@ -24,7 +24,7 @@
 #include "CallFrame.h"
 #include "ExceptionHelpers.h"
 #include "JSBigInt.h"
-#include "JSCJSValue.h"
+#include "JSCJSValueInlines.h"
 #include <wtf/Variant.h>
 
 namespace JSC {
index a610509..9541243 100644 (file)
@@ -27,6 +27,7 @@
 #include "RegExpCachedResult.h"
 
 #include "JSCInlines.h"
+#include "RegExpCache.h"
 #include "RegExpMatchesArray.h"
 
 namespace JSC {
index 680b6d1..e3bc893 100644 (file)
@@ -24,9 +24,9 @@
 
 #include "Error.h"
 #include "GetterSetter.h"
+#include "JSCInlines.h"
 #include "RegExpGlobalDataInlines.h"
 #include "RegExpPrototype.h"
-#include "StructureInlines.h"
 #include "YarrFlags.h"
 
 namespace JSC {
index 2dde618..2ac6830 100644 (file)
@@ -26,7 +26,7 @@
 #include "config.h"
 #include "RegExpGlobalData.h"
 
-#include "JSCJSValueInlines.h"
+#include "JSCInlines.h"
 #include "JSString.h"
 
 namespace JSC {
index 5daa157..671a337 100644 (file)
@@ -26,6 +26,7 @@
 #pragma once
 
 #include "Heap.h"
+#include "VM.h"
 #include "WasmIndexOrName.h"
 #include "WriteBarrier.h"
 #include <limits.h>
index 29ce213..92a871e 100644 (file)
@@ -28,6 +28,7 @@
 
 #if ENABLE(WEBASSEMBLY)
 
+#include "WasmSignatureInlines.h"
 #include <wtf/FastMalloc.h>
 #include <wtf/HashFunctions.h>
 #include <wtf/PrintStream.h>
index e0b821b..20a6e8d 100644 (file)
@@ -29,6 +29,7 @@
 #if ENABLE(WEBASSEMBLY)
 
 #include "CCallHelpers.h"
+#include "JSCInlines.h"
 #include "JSWebAssemblyInstance.h"
 #include "JSWebAssemblyRuntimeError.h"
 #include "MaxFrameExtentForSlowPathCall.h"
index de5da9b..ac0dd1d 100644 (file)
@@ -28,6 +28,7 @@
 
 #if ENABLE(WEBASSEMBLY)
 
+#include "JSCInlines.h"
 #include "WebAssemblyFunction.h"
 
 namespace JSC {
index 470d058..98c3464 100644 (file)
@@ -27,6 +27,7 @@
 
 #if ENABLE(WEBASSEMBLY)
 
+#include "ArityCheckMode.h"
 #include "JSToWasmICCallee.h"
 #include "MacroAssemblerCodeRef.h"
 #include "WasmCallee.h"