Diff
Modified: trunk/Source/_javascript_Core/CMakeLists.txt (271593 => 271594)
--- trunk/Source/_javascript_Core/CMakeLists.txt 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/CMakeLists.txt 2021-01-19 00:24:52 UTC (rev 271594)
@@ -521,7 +521,6 @@
assembler/X86_64Registers.h
b3/B3Common.h
- b3/B3Compilation.h
b3/B3Type.h
bindings/ScriptFunctionCall.h
@@ -757,6 +756,7 @@
jit/JITAllocator.h
jit/JITCode.h
jit/JITCodeMap.h
+ jit/JITCompilation.h
jit/JITCompilationEffort.h
jit/JITMathICForwards.h
jit/JITOperations.h
Modified: trunk/Source/_javascript_Core/ChangeLog (271593 => 271594)
--- trunk/Source/_javascript_Core/ChangeLog 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/ChangeLog 2021-01-19 00:24:52 UTC (rev 271594)
@@ -1,3 +1,62 @@
+2021-01-18 Xan López <[email protected]>
+
+ [JSC] Implement a B3::Compilation replacement for wasm-llint
+ https://bugs.webkit.org/show_bug.cgi?id=220585
+
+ Reviewed by Yusuke Suzuki.
+
+ Move B3Compilation, B3OpaqueByproducts and B3OpaqueByproduct to
+ jit/. They are used by non-B3 code and they are not really B3
+ specific. Also rename B3CompilationPtrTag to JITCompilationPtrTag.
+
+ * CMakeLists.txt: add new source files.
+ * _javascript_Core.xcodeproj/project.pbxproj: ditto.
+ * Sources.txt: ditto.
+ * b3/B3Compile.cpp:
+ (JSC::B3::compile): use JITCompilationPtrTag.
+ * b3/B3Compile.h: change includes.
+ * b3/B3DataSection.h: ditto.
+ * b3/B3Procedure.cpp: ditto.
+ * b3/B3Procedure.h: ditto.
+ * b3/air/testair.cpp: use JITCompilationPtrTag.
+ * b3/testb3.h: change includes.
+ (invoke):
+ * b3/testb3_6.cpp:
+ (testInterpreter): use JITCompilationPtrTag.
+ (testEntrySwitchSimple): ditto.
+ (testEntrySwitchNoEntrySwitch): ditto.
+ (testEntrySwitchWithCommonPaths): ditto.
+ (testEntrySwitchWithCommonPathsAndNonTrivialEntrypoint): ditto.
+ (testEntrySwitchLoop): ditto.
+ * ftl/FTLJITCode.h: use JSC::OpaqueByproducts.
+ * ftl/FTLOutput.h: change includes.
+ * jit/JITCompilation.cpp: Renamed from Source/_javascript_Core/b3/B3Compilation.cpp.
+ (JSC::Compilation::Compilation):
+ * jit/JITCompilation.h: Renamed from Source/_javascript_Core/b3/B3Compilation.h.
+ (JSC::Compilation::code const):
+ (JSC::Compilation::codeRef const):
+ * jit/JITOpaqueByproduct.h: Renamed from Source/_javascript_Core/b3/B3OpaqueByproduct.h.
+ * jit/JITOpaqueByproducts.cpp: Renamed from Source/_javascript_Core/b3/B3OpaqueByproducts.cpp.
+ * jit/JITOpaqueByproducts.h: Renamed from Source/_javascript_Core/b3/B3OpaqueByproducts.h.
+ * runtime/JSCPtrTag.h: rename B3CompilationPtrTag to JITCompilationPtrTag.
+ * wasm/WasmB3IRGenerator.h: use JSC::OpaqueByproducts.
+ * wasm/WasmBBQPlan.cpp: use JSC::Compilation.
+ (JSC::Wasm::BBQPlan::work):
+ (JSC::Wasm::BBQPlan::didCompleteCompilation):
+ * wasm/WasmBinding.h: change includes.
+ * wasm/WasmCallee.h: ditto.
+ * wasm/WasmFormat.h: use JSC::Compilation.
+ * wasm/WasmLLIntPlan.cpp: ditto.
+ (JSC::Wasm::LLIntPlan::didCompleteCompilation):
+ * wasm/WasmLLIntPlan.h: use JITCompilationPtrTag.
+ * wasm/WasmModule.h: ditto.
+ * wasm/WasmOMGForOSREntryPlan.cpp: use JSC::Compilation.
+ (JSC::Wasm::OMGForOSREntryPlan::work):
+ * wasm/WasmOMGPlan.cpp: ditto.
+ (JSC::Wasm::OMGPlan::work):
+ * wasm/WasmParser.h: change includes.
+ * wasm/js/WasmToJS.h: ditto.
+
2021-01-18 Yusuke Suzuki <[email protected]>
[JSC] earlyReturnFromInfiniteLoopsLimit should check all caller functions when emitting
Modified: trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj (271593 => 271594)
--- trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj 2021-01-19 00:24:52 UTC (rev 271594)
@@ -289,11 +289,8 @@
0F338DF61BE93D550013C88F /* B3ConstrainedValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F338DF41BE93D550013C88F /* B3ConstrainedValue.h */; };
0F338DFA1BE96AA80013C88F /* B3CCallValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F338DF81BE96AA80013C88F /* B3CCallValue.h */; };
0F338DFE1BED51270013C88F /* AirSimplifyCFG.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F338DFC1BED51270013C88F /* AirSimplifyCFG.h */; };
- 0F338E0C1BF0276C0013C88F /* B3Compilation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F338E001BF0276C0013C88F /* B3Compilation.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F338E0E1BF0276C0013C88F /* B3DataSection.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F338E021BF0276C0013C88F /* B3DataSection.h */; };
0F338E101BF0276C0013C88F /* B3MoveConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F338E041BF0276C0013C88F /* B3MoveConstants.h */; };
- 0F338E111BF0276C0013C88F /* B3OpaqueByproduct.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F338E051BF0276C0013C88F /* B3OpaqueByproduct.h */; };
- 0F338E131BF0276C0013C88F /* B3OpaqueByproducts.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F338E071BF0276C0013C88F /* B3OpaqueByproducts.h */; };
0F338E151BF0276C0013C88F /* B3ValueKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F338E091BF0276C0013C88F /* B3ValueKey.h */; };
0F338E161BF0276C0013C88F /* B3ValueKeyInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F338E0A1BF0276C0013C88F /* B3ValueKeyInlines.h */; };
0F338E1C1BF286EA0013C88F /* B3BlockInsertionSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F338E181BF286EA0013C88F /* B3BlockInsertionSet.h */; };
@@ -1247,7 +1244,7 @@
861816771FB7924200ECC4EC /* BigIntObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 861816761FB7922F00ECC4EC /* BigIntObject.h */; settings = {ATTRIBUTES = (Private, ); }; };
862553D216136E1A009F17D0 /* JSProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 862553CF16136AA5009F17D0 /* JSProxy.h */; settings = {ATTRIBUTES = (Private, ); }; };
863B23E00FC6118900703AA4 /* MacroAssemblerCodeRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 863B23DF0FC60E6200703AA4 /* MacroAssemblerCodeRef.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 863FBC5A25B093B900F6C930 /* WasmValueLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 863FBC5825B093B900F6C930 /* WasmValueLocation.h */; };
+ 863FBC5A25B093B900F6C930 /* WasmValueLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 863FBC5825B093B900F6C930 /* WasmValueLocation.h */; };
865A30F1135007E100CDB49E /* JSCJSValueInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 865A30F0135007E100CDB49E /* JSCJSValueInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
866739D213BFDE710023D87C /* BigInteger.h in Headers */ = {isa = PBXBuildFile; fileRef = 866739D013BFDE710023D87C /* BigInteger.h */; };
866739D313BFDE710023D87C /* Uint16WithFraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 866739D113BFDE710023D87C /* Uint16WithFraction.h */; };
@@ -1273,6 +1270,9 @@
86CCEFDE0F413F8900FD7F9E /* JITCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 86CCEFDD0F413F8900FD7F9E /* JITCode.h */; settings = {ATTRIBUTES = (Private, ); }; };
86D2221A167EF9440024C804 /* testapi.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86D22219167EF9440024C804 /* testapi.mm */; };
86D3B3C310159D7F002865E7 /* LinkBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 86D3B3C110159D7F002865E7 /* LinkBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 86D446EA25B2125300ECAE75 /* JITOpaqueByproducts.h in Headers */ = {isa = PBXBuildFile; fileRef = 86D446E625B2124800ECAE75 /* JITOpaqueByproducts.h */; };
+ 86D446EB25B2125C00ECAE75 /* JITOpaqueByproduct.h in Headers */ = {isa = PBXBuildFile; fileRef = 86D446E525B2124700ECAE75 /* JITOpaqueByproduct.h */; };
+ 86D446EC25B2126000ECAE75 /* JITCompilation.h in Headers */ = {isa = PBXBuildFile; fileRef = 86D446E725B2124800ECAE75 /* JITCompilation.h */; settings = {ATTRIBUTES = (Private, ); }; };
86E116B10FE75AC800B512BC /* CodeLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E116B00FE75AC800B512BC /* CodeLocation.h */; settings = {ATTRIBUTES = (Private, ); }; };
86E3C612167BABD7006D760A /* JSValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E3C606167BAB87006D760A /* JSValue.h */; settings = {ATTRIBUTES = (Public, ); }; };
86E3C613167BABD7006D760A /* JSContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E3C607167BAB87006D760A /* JSContext.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -2525,15 +2525,10 @@
0F338DF81BE96AA80013C88F /* B3CCallValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = B3CCallValue.h; path = b3/B3CCallValue.h; sourceTree = "<group>"; };
0F338DFB1BED51270013C88F /* AirSimplifyCFG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AirSimplifyCFG.cpp; path = b3/air/AirSimplifyCFG.cpp; sourceTree = "<group>"; };
0F338DFC1BED51270013C88F /* AirSimplifyCFG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AirSimplifyCFG.h; path = b3/air/AirSimplifyCFG.h; sourceTree = "<group>"; };
- 0F338DFF1BF0276C0013C88F /* B3Compilation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = B3Compilation.cpp; path = b3/B3Compilation.cpp; sourceTree = "<group>"; };
- 0F338E001BF0276C0013C88F /* B3Compilation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = B3Compilation.h; path = b3/B3Compilation.h; sourceTree = "<group>"; };
0F338E011BF0276C0013C88F /* B3DataSection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = B3DataSection.cpp; path = b3/B3DataSection.cpp; sourceTree = "<group>"; };
0F338E021BF0276C0013C88F /* B3DataSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = B3DataSection.h; path = b3/B3DataSection.h; sourceTree = "<group>"; };
0F338E031BF0276C0013C88F /* B3MoveConstants.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = B3MoveConstants.cpp; path = b3/B3MoveConstants.cpp; sourceTree = "<group>"; };
0F338E041BF0276C0013C88F /* B3MoveConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = B3MoveConstants.h; path = b3/B3MoveConstants.h; sourceTree = "<group>"; };
- 0F338E051BF0276C0013C88F /* B3OpaqueByproduct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = B3OpaqueByproduct.h; path = b3/B3OpaqueByproduct.h; sourceTree = "<group>"; };
- 0F338E061BF0276C0013C88F /* B3OpaqueByproducts.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = B3OpaqueByproducts.cpp; path = b3/B3OpaqueByproducts.cpp; sourceTree = "<group>"; };
- 0F338E071BF0276C0013C88F /* B3OpaqueByproducts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = B3OpaqueByproducts.h; path = b3/B3OpaqueByproducts.h; sourceTree = "<group>"; };
0F338E081BF0276C0013C88F /* B3ValueKey.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = B3ValueKey.cpp; path = b3/B3ValueKey.cpp; sourceTree = "<group>"; };
0F338E091BF0276C0013C88F /* B3ValueKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = B3ValueKey.h; path = b3/B3ValueKey.h; sourceTree = "<group>"; };
0F338E0A1BF0276C0013C88F /* B3ValueKeyInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = B3ValueKeyInlines.h; path = b3/B3ValueKeyInlines.h; sourceTree = "<group>"; };
@@ -4198,6 +4193,11 @@
86CCEFDD0F413F8900FD7F9E /* JITCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITCode.h; sourceTree = "<group>"; };
86D22219167EF9440024C804 /* testapi.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = testapi.mm; path = API/tests/testapi.mm; sourceTree = "<group>"; };
86D3B3C110159D7F002865E7 /* LinkBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinkBuffer.h; sourceTree = "<group>"; };
+ 86D446E525B2124700ECAE75 /* JITOpaqueByproduct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JITOpaqueByproduct.h; sourceTree = "<group>"; };
+ 86D446E625B2124800ECAE75 /* JITOpaqueByproducts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JITOpaqueByproducts.h; sourceTree = "<group>"; };
+ 86D446E725B2124800ECAE75 /* JITCompilation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JITCompilation.h; sourceTree = "<group>"; };
+ 86D446E825B2124800ECAE75 /* JITCompilation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JITCompilation.cpp; sourceTree = "<group>"; };
+ 86D446E925B2124800ECAE75 /* JITOpaqueByproducts.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JITOpaqueByproducts.cpp; sourceTree = "<group>"; };
86E116B00FE75AC800B512BC /* CodeLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeLocation.h; sourceTree = "<group>"; };
86E3C606167BAB87006D760A /* JSValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSValue.h; sourceTree = "<group>"; };
86E3C607167BAB87006D760A /* JSContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSContext.h; sourceTree = "<group>"; };
@@ -5735,8 +5735,6 @@
0FEC84C01BDACDAC0080FF74 /* B3Common.h */,
0FEC84C11BDACDAC0080FF74 /* B3Commutativity.cpp */,
0FEC84C21BDACDAC0080FF74 /* B3Commutativity.h */,
- 0F338DFF1BF0276C0013C88F /* B3Compilation.cpp */,
- 0F338E001BF0276C0013C88F /* B3Compilation.h */,
795F099C1E03600500BBE37F /* B3Compile.cpp */,
7919B77F1E03559C005BEED8 /* B3Compile.h */,
0F86AE1F1C5311C5006BE8EC /* B3ComputeDivisionMagic.h */,
@@ -5806,9 +5804,6 @@
0F338E041BF0276C0013C88F /* B3MoveConstants.h */,
0F2C63C11E664A5A00C13839 /* B3NativeTraits.h */,
0F5BF1681F23A0AA0029D91D /* B3NaturalLoops.h */,
- 0F338E051BF0276C0013C88F /* B3OpaqueByproduct.h */,
- 0F338E061BF0276C0013C88F /* B3OpaqueByproducts.cpp */,
- 0F338E071BF0276C0013C88F /* B3OpaqueByproducts.h */,
0FEC84D71BDACDAC0080FF74 /* B3Opcode.cpp */,
0FEC84D81BDACDAC0080FF74 /* B3Opcode.h */,
33743649224D79EF00C8C227 /* B3OptimizeAssociativeExpressionTrees.cpp */,
@@ -6130,6 +6125,11 @@
1429D92C0ED22D7000B89619 /* jit */ = {
isa = PBXGroup;
children = (
+ 86D446E825B2124800ECAE75 /* JITCompilation.cpp */,
+ 86D446E725B2124800ECAE75 /* JITCompilation.h */,
+ 86D446E525B2124700ECAE75 /* JITOpaqueByproduct.h */,
+ 86D446E925B2124800ECAE75 /* JITOpaqueByproducts.cpp */,
+ 86D446E625B2124800ECAE75 /* JITOpaqueByproducts.h */,
0F24E53B17EA9F5900ABB217 /* AssemblyHelpers.cpp */,
0F24E53C17EA9F5900ABB217 /* AssemblyHelpers.h */,
0F64B26F1A784BAF006E4E66 /* BinarySwitch.cpp */,
@@ -9035,6 +9035,7 @@
0F55F0F514D1063C00AC7649 /* AbstractPC.h in Headers */,
534E034E1E4D4B1600213F64 /* AccessCase.h in Headers */,
E3BFD0BC1DAF808E0065DEA2 /* AccessCaseSnippetParams.h in Headers */,
+ 86D446EB25B2125C00ECAE75 /* JITOpaqueByproduct.h in Headers */,
5370B4F61BF26205005C40FC /* AdaptiveInferredPropertyValueWatchpointBase.h in Headers */,
9168BD872447BA4E0080FFB4 /* AggregateError.h in Headers */,
918E15C32447B22700447A56 /* AggregateErrorConstructor.h in Headers */,
@@ -9172,7 +9173,6 @@
0FEC85081BDACDAC0080FF74 /* B3CheckValue.h in Headers */,
0FEC850A1BDACDAC0080FF74 /* B3Common.h in Headers */,
0FEC850C1BDACDAC0080FF74 /* B3Commutativity.h in Headers */,
- 0F338E0C1BF0276C0013C88F /* B3Compilation.h in Headers */,
7919B7801E03559C005BEED8 /* B3Compile.h in Headers */,
0F86AE201C5311C5006BE8EC /* B3ComputeDivisionMagic.h in Headers */,
0FEC850E1BDACDAC0080FF74 /* B3Const32Value.h in Headers */,
@@ -9213,8 +9213,6 @@
0F338E101BF0276C0013C88F /* B3MoveConstants.h in Headers */,
0F2C63C21E664A5C00C13839 /* B3NativeTraits.h in Headers */,
0F5BF1691F23A0AA0029D91D /* B3NaturalLoops.h in Headers */,
- 0F338E111BF0276C0013C88F /* B3OpaqueByproduct.h in Headers */,
- 0F338E131BF0276C0013C88F /* B3OpaqueByproducts.h in Headers */,
0FEC85221BDACDAC0080FF74 /* B3Opcode.h in Headers */,
0FEC85241BDACDAC0080FF74 /* B3Origin.h in Headers */,
0F4C91661C29F4F2004341A6 /* B3OriginDump.h in Headers */,
@@ -10151,6 +10149,7 @@
960097A60EBABB58007A7297 /* LabelScope.h in Headers */,
DCF3D56A1CD29470003D5C65 /* LazyClassStructure.h in Headers */,
DCF3D56B1CD29472003D5C65 /* LazyClassStructureInlines.h in Headers */,
+ 86D446EC25B2126000ECAE75 /* JITCompilation.h in Headers */,
0FB5467714F59B5C002C2989 /* LazyOperandValueProfile.h in Headers */,
DCF3D56C1CD29475003D5C65 /* LazyProperty.h in Headers */,
DCF3D56D1CD29476003D5C65 /* LazyPropertyInlines.h in Headers */,
@@ -10432,6 +10431,7 @@
BCDE3AB80E6C82F5001453A7 /* Structure.h in Headers */,
7986943B1F8C0ACC009232AE /* StructureCache.h in Headers */,
7E4EE7090EBB7963005934AA /* StructureChain.h in Headers */,
+ 86D446EA25B2125300ECAE75 /* JITOpaqueByproducts.h in Headers */,
2AAAA31218BD49D100394CC8 /* StructureIDBlob.h in Headers */,
2AF7382D18BBBF92008A5A37 /* StructureIDTable.h in Headers */,
0FD2C92416D01EE900C7803F /* StructureInlines.h in Headers */,
Modified: trunk/Source/_javascript_Core/Sources.txt (271593 => 271594)
--- trunk/Source/_javascript_Core/Sources.txt 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/Sources.txt 2021-01-19 00:24:52 UTC (rev 271594)
@@ -120,7 +120,6 @@
b3/B3Common.cpp
b3/B3Commutativity.cpp
b3/B3Compile.cpp
-b3/B3Compilation.cpp
b3/B3Const32Value.cpp
b3/B3Const64Value.cpp
b3/B3ConstDoubleValue.cpp
@@ -149,7 +148,6 @@
b3/B3MathExtras.cpp
b3/B3MemoryValue.cpp
b3/B3MoveConstants.cpp
-b3/B3OpaqueByproducts.cpp
b3/B3Opcode.cpp
b3/B3OptimizeAssociativeExpressionTrees.cpp
b3/B3Origin.cpp
@@ -643,6 +641,7 @@
jit/JITCall.cpp
jit/JITCall32_64.cpp
jit/JITCode.cpp
+jit/JITCompilation.cpp
jit/JITDisassembler.cpp
jit/JITDivGenerator.cpp
jit/JITExceptions.cpp
@@ -650,6 +649,7 @@
jit/JITLeftShiftGenerator.cpp
jit/JITMulGenerator.cpp
jit/JITNegGenerator.cpp
+jit/JITOpaqueByproducts.cpp
jit/JITOpcodes.cpp
jit/JITOpcodes32_64.cpp
jit/JITOperations.cpp
Deleted: trunk/Source/_javascript_Core/b3/B3Compilation.cpp (271593 => 271594)
--- trunk/Source/_javascript_Core/b3/B3Compilation.cpp 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/b3/B3Compilation.cpp 2021-01-19 00:24:52 UTC (rev 271594)
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2015-2018 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "B3Compilation.h"
-
-#if ENABLE(B3_JIT)
-
-#include "B3OpaqueByproducts.h"
-
-namespace JSC { namespace B3 {
-
-Compilation::Compilation(MacroAssemblerCodeRef<B3CompilationPtrTag> codeRef, std::unique_ptr<OpaqueByproducts> byproducts)
- : m_codeRef(codeRef)
- , m_byproducts(WTFMove(byproducts))
-{
-}
-
-Compilation::Compilation(Compilation&& other)
- : m_codeRef(WTFMove(other.m_codeRef))
- , m_byproducts(WTFMove(other.m_byproducts))
-{
-}
-
-Compilation::~Compilation()
-{
-}
-
-} } // namespace JSC::B3
-
-#endif // ENABLE(B3_JIT)
-
Deleted: trunk/Source/_javascript_Core/b3/B3Compilation.h (271593 => 271594)
--- trunk/Source/_javascript_Core/b3/B3Compilation.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/b3/B3Compilation.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2015-2018 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#if ENABLE(B3_JIT)
-
-#include "MacroAssemblerCodeRef.h"
-#include <wtf/FastMalloc.h>
-#include <wtf/Noncopyable.h>
-
-namespace JSC {
-
-class VM;
-
-namespace B3 {
-
-class OpaqueByproducts;
-class Procedure;
-
-// This class is a way to keep the result of a B3 compilation alive
-// and runnable.
-
-class Compilation {
- WTF_MAKE_NONCOPYABLE(Compilation);
- WTF_MAKE_FAST_ALLOCATED;
-
-public:
- JS_EXPORT_PRIVATE Compilation(MacroAssemblerCodeRef<B3CompilationPtrTag>, std::unique_ptr<OpaqueByproducts>);
- JS_EXPORT_PRIVATE Compilation(Compilation&&);
- JS_EXPORT_PRIVATE ~Compilation();
-
- MacroAssemblerCodePtr<B3CompilationPtrTag> code() const { return m_codeRef.code(); }
- MacroAssemblerCodeRef<B3CompilationPtrTag> codeRef() const { return m_codeRef; }
-
- CString disassembly() const { return m_codeRef.disassembly(); }
-
-private:
- MacroAssemblerCodeRef<B3CompilationPtrTag> m_codeRef;
- std::unique_ptr<OpaqueByproducts> m_byproducts;
-};
-
-} } // namespace JSC::B3
-
-#endif // ENABLE(B3_JIT)
Modified: trunk/Source/_javascript_Core/b3/B3Compile.cpp (271593 => 271594)
--- trunk/Source/_javascript_Core/b3/B3Compile.cpp 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/b3/B3Compile.cpp 2021-01-19 00:24:52 UTC (rev 271594)
@@ -46,7 +46,7 @@
generate(proc, jit);
LinkBuffer linkBuffer(jit, nullptr);
- return Compilation(FINALIZE_CODE(linkBuffer, B3CompilationPtrTag, "B3::Compilation"), proc.releaseByproducts());
+ return Compilation(FINALIZE_CODE(linkBuffer, JITCompilationPtrTag, "Compilation"), proc.releaseByproducts());
}
} } // namespace JSC::B3
Modified: trunk/Source/_javascript_Core/b3/B3Compile.h (271593 => 271594)
--- trunk/Source/_javascript_Core/b3/B3Compile.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/b3/B3Compile.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -28,7 +28,7 @@
#if ENABLE(B3_JIT)
#include "B3Common.h"
-#include "B3Compilation.h"
+#include "JITCompilation.h"
namespace JSC {
Modified: trunk/Source/_javascript_Core/b3/B3DataSection.h (271593 => 271594)
--- trunk/Source/_javascript_Core/b3/B3DataSection.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/b3/B3DataSection.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -27,7 +27,7 @@
#if ENABLE(B3_JIT)
-#include "B3OpaqueByproduct.h"
+#include "JITOpaqueByproduct.h"
namespace JSC { namespace B3 {
Deleted: trunk/Source/_javascript_Core/b3/B3OpaqueByproduct.h (271593 => 271594)
--- trunk/Source/_javascript_Core/b3/B3OpaqueByproduct.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/b3/B3OpaqueByproduct.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#if ENABLE(B3_JIT)
-
-#include <wtf/FastMalloc.h>
-#include <wtf/Noncopyable.h>
-#include <wtf/PrintStream.h>
-
-namespace JSC { namespace B3 {
-
-class OpaqueByproduct {
- WTF_MAKE_NONCOPYABLE(OpaqueByproduct);
- WTF_MAKE_FAST_ALLOCATED;
-public:
- OpaqueByproduct() { }
- virtual ~OpaqueByproduct() { }
-
- virtual void dump(PrintStream&) const = 0;
-};
-
-} } // namespace JSC::B3
-
-#endif // ENABLE(B3_JIT)
Deleted: trunk/Source/_javascript_Core/b3/B3OpaqueByproducts.cpp (271593 => 271594)
--- trunk/Source/_javascript_Core/b3/B3OpaqueByproducts.cpp 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/b3/B3OpaqueByproducts.cpp 2021-01-19 00:24:52 UTC (rev 271594)
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "B3OpaqueByproducts.h"
-
-#if ENABLE(B3_JIT)
-
-namespace JSC { namespace B3 {
-
-OpaqueByproducts::OpaqueByproducts()
-{
-}
-
-OpaqueByproducts::~OpaqueByproducts()
-{
-}
-
-void OpaqueByproducts::add(std::unique_ptr<OpaqueByproduct> byproduct)
-{
- m_byproducts.append(WTFMove(byproduct));
-}
-
-void OpaqueByproducts::dump(PrintStream& out) const
-{
- out.print("Byproducts:\n");
- if (m_byproducts.isEmpty()) {
- out.print(" <empty>\n");
- return;
- }
- for (auto& byproduct : m_byproducts)
- out.print(" ", *byproduct, "\n");
-}
-
-} } // namespace JSC::B3
-
-#endif // ENABLE(B3_JIT)
-
Deleted: trunk/Source/_javascript_Core/b3/B3OpaqueByproducts.h (271593 => 271594)
--- trunk/Source/_javascript_Core/b3/B3OpaqueByproducts.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/b3/B3OpaqueByproducts.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2015-2016 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#if ENABLE(B3_JIT)
-
-#include "B3OpaqueByproduct.h"
-#include <memory>
-#include <wtf/Vector.h>
-
-namespace JSC { namespace B3 {
-
-class OpaqueByproducts {
- WTF_MAKE_NONCOPYABLE(OpaqueByproducts)
- WTF_MAKE_FAST_ALLOCATED;
-public:
- OpaqueByproducts();
- JS_EXPORT_PRIVATE ~OpaqueByproducts();
-
- size_t count() const { return m_byproducts.size(); }
-
- void add(std::unique_ptr<OpaqueByproduct>);
-
- void dump(PrintStream&) const;
-
-private:
- Vector<std::unique_ptr<OpaqueByproduct>> m_byproducts;
-};
-
-} } // namespace JSC::B3
-
-#endif // ENABLE(B3_JIT)
Modified: trunk/Source/_javascript_Core/b3/B3Procedure.cpp (271593 => 271594)
--- trunk/Source/_javascript_Core/b3/B3Procedure.cpp 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/b3/B3Procedure.cpp 2021-01-19 00:24:52 UTC (rev 271594)
@@ -36,11 +36,11 @@
#include "B3DataSection.h"
#include "B3Dominators.h"
#include "B3NaturalLoops.h"
-#include "B3OpaqueByproducts.h"
#include "B3ProcedureInlines.h"
#include "B3StackSlot.h"
#include "B3ValueInlines.h"
#include "B3Variable.h"
+#include "JITOpaqueByproducts.h"
namespace JSC { namespace B3 {
Modified: trunk/Source/_javascript_Core/b3/B3Procedure.h (271593 => 271594)
--- trunk/Source/_javascript_Core/b3/B3Procedure.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/b3/B3Procedure.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -27,12 +27,12 @@
#if ENABLE(B3_JIT)
-#include "B3OpaqueByproducts.h"
#include "B3Origin.h"
#include "B3PCToOriginMap.h"
#include "B3SparseCollection.h"
#include "B3Type.h"
#include "B3ValueKey.h"
+#include "JITOpaqueByproducts.h"
#include "PureNaN.h"
#include "RegisterAtOffsetList.h"
#include <wtf/Bag.h>
@@ -231,7 +231,7 @@
// You have to call this method after calling generate(). The code generated by B3::generate()
// will require you to keep this object alive for as long as that code is runnable. Usually, this
// just keeps alive things like the double constant pool and switch lookup tables. If this sounds
- // confusing, you should probably be using the B3::Compilation API to compile code. If you use
+ // confusing, you should probably be using the JSC::Compilation API to compile code. If you use
// that API, then you don't have to worry about this.
std::unique_ptr<OpaqueByproducts> releaseByproducts() { return WTFMove(m_byproducts); }
Modified: trunk/Source/_javascript_Core/b3/air/testair.cpp (271593 => 271594)
--- trunk/Source/_javascript_Core/b3/air/testair.cpp 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/b3/air/testair.cpp 2021-01-19 00:24:52 UTC (rev 271594)
@@ -30,13 +30,13 @@
#include "AirSpecial.h"
#include "AllowMacroScratchRegisterUsage.h"
#include "B3BasicBlockInlines.h"
-#include "B3Compilation.h"
-#include "B3Procedure.h"
#include "B3PatchpointSpecial.h"
#include "B3PatchpointValue.h"
+#include "B3Procedure.h"
#include "B3StackmapGenerationParams.h"
#include "CCallHelpers.h"
#include "InitializeThreading.h"
+#include "JITCompilation.h"
#include "LinkBuffer.h"
#include "ProbeContext.h"
#include "PureNaN.h"
@@ -85,7 +85,7 @@
CRASH(); \
} while (false)
-std::unique_ptr<B3::Compilation> compile(B3::Procedure& proc)
+std::unique_ptr<Compilation> compile(B3::Procedure& proc)
{
prepareForGeneration(proc.code());
CCallHelpers jit;
@@ -92,14 +92,14 @@
generate(proc.code(), jit);
LinkBuffer linkBuffer(jit, nullptr);
- return makeUnique<B3::Compilation>(
- FINALIZE_CODE(linkBuffer, B3CompilationPtrTag, "testair compilation"), proc.releaseByproducts());
+ return makeUnique<Compilation>(
+ FINALIZE_CODE(linkBuffer, JITCompilationPtrTag, "testair compilation"), proc.releaseByproducts());
}
template<typename T, typename... Arguments>
-T invoke(const B3::Compilation& code, Arguments... arguments)
+T invoke(const Compilation& code, Arguments... arguments)
{
- void* executableAddress = untagCFunctionPtr<B3CompilationPtrTag>(code.code().executableAddress());
+ void* executableAddress = untagCFunctionPtr<JITCompilationPtrTag>(code.code().executableAddress());
T (*function)(Arguments...) = bitwise_cast<T(*)(Arguments...)>(executableAddress);
return function(arguments...);
}
Modified: trunk/Source/_javascript_Core/b3/testb3.h (271593 => 271594)
--- trunk/Source/_javascript_Core/b3/testb3.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/b3/testb3.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -34,7 +34,6 @@
#include "B3BasicBlockInlines.h"
#include "B3BreakCriticalEdges.h"
#include "B3CCallValue.h"
-#include "B3Compilation.h"
#include "B3Compile.h"
#include "B3ComputeDivisionMagic.h"
#include "B3Const32Value.h"
@@ -67,6 +66,7 @@
#include "FPRInfo.h"
#include "GPRInfo.h"
#include "InitializeThreading.h"
+#include "JITCompilation.h"
#include "JSCInlines.h"
#include "LinkBuffer.h"
#include "PureNaN.h"
@@ -196,9 +196,9 @@
}
template<typename T, typename... Arguments>
-T invoke(MacroAssemblerCodePtr<B3CompilationPtrTag> ptr, Arguments... arguments)
+T invoke(MacroAssemblerCodePtr<JITCompilationPtrTag> ptr, Arguments... arguments)
{
- void* executableAddress = untagCFunctionPtr<B3CompilationPtrTag>(ptr.executableAddress());
+ void* executableAddress = untagCFunctionPtr<JITCompilationPtrTag>(ptr.executableAddress());
T (*function)(Arguments...) = bitwise_cast<T(*)(Arguments...)>(executableAddress);
return function(arguments...);
}
Modified: trunk/Source/_javascript_Core/b3/testb3_6.cpp (271593 => 271594)
--- trunk/Source/_javascript_Core/b3/testb3_6.cpp 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/b3/testb3_6.cpp 2021-01-19 00:24:52 UTC (rev 271594)
@@ -1674,19 +1674,19 @@
AllowMacroScratchRegisterUsage allowScratch(jit);
Vector<Box<CCallHelpers::Label>> labels = params.successorLabels();
- MacroAssemblerCodePtr<B3CompilationPtrTag>* jumpTable = bitwise_cast<MacroAssemblerCodePtr<B3CompilationPtrTag>*>(
- params.proc().addDataSection(sizeof(MacroAssemblerCodePtr<B3CompilationPtrTag>) * labels.size()));
+ MacroAssemblerCodePtr<JITCompilationPtrTag>* jumpTable = bitwise_cast<MacroAssemblerCodePtr<JITCompilationPtrTag>*>(
+ params.proc().addDataSection(sizeof(MacroAssemblerCodePtr<JITCompilationPtrTag>) * labels.size()));
GPRReg scratch = params.gpScratch(0);
jit.move(CCallHelpers::TrustedImmPtr(jumpTable), scratch);
jit.load64(CCallHelpers::BaseIndex(scratch, params[0].gpr(), CCallHelpers::ScalePtr), scratch);
- jit.farJump(scratch, B3CompilationPtrTag);
+ jit.farJump(scratch, JITCompilationPtrTag);
jit.addLinkTask(
[&, jumpTable, labels] (LinkBuffer& linkBuffer) {
for (unsigned i = labels.size(); i--;)
- jumpTable[i] = linkBuffer.locationOf<B3CompilationPtrTag>(*labels[i]);
+ jumpTable[i] = linkBuffer.locationOf<JITCompilationPtrTag>(*labels[i]);
});
});
@@ -1937,11 +1937,11 @@
CCallHelpers jit;
generate(proc, jit);
LinkBuffer linkBuffer(jit, nullptr);
- CodeLocationLabel<B3CompilationPtrTag> labelOne = linkBuffer.locationOf<B3CompilationPtrTag>(proc.code().entrypointLabel(0));
- CodeLocationLabel<B3CompilationPtrTag> labelTwo = linkBuffer.locationOf<B3CompilationPtrTag>(proc.code().entrypointLabel(1));
- CodeLocationLabel<B3CompilationPtrTag> labelThree = linkBuffer.locationOf<B3CompilationPtrTag>(proc.code().entrypointLabel(2));
+ CodeLocationLabel<JITCompilationPtrTag> labelOne = linkBuffer.locationOf<JITCompilationPtrTag>(proc.code().entrypointLabel(0));
+ CodeLocationLabel<JITCompilationPtrTag> labelTwo = linkBuffer.locationOf<JITCompilationPtrTag>(proc.code().entrypointLabel(1));
+ CodeLocationLabel<JITCompilationPtrTag> labelThree = linkBuffer.locationOf<JITCompilationPtrTag>(proc.code().entrypointLabel(2));
- MacroAssemblerCodeRef<B3CompilationPtrTag> codeRef = FINALIZE_CODE(linkBuffer, B3CompilationPtrTag, "testb3 compilation");
+ MacroAssemblerCodeRef<JITCompilationPtrTag> codeRef = FINALIZE_CODE(linkBuffer, JITCompilationPtrTag, "testb3 compilation");
CHECK(invoke<int>(labelOne, 1, 2) == 3);
CHECK(invoke<int>(labelTwo, 1, 2) == -1);
@@ -1970,11 +1970,11 @@
CCallHelpers jit;
generate(proc, jit);
LinkBuffer linkBuffer(jit, nullptr);
- CodeLocationLabel<B3CompilationPtrTag> labelOne = linkBuffer.locationOf<B3CompilationPtrTag>(proc.code().entrypointLabel(0));
- CodeLocationLabel<B3CompilationPtrTag> labelTwo = linkBuffer.locationOf<B3CompilationPtrTag>(proc.code().entrypointLabel(1));
- CodeLocationLabel<B3CompilationPtrTag> labelThree = linkBuffer.locationOf<B3CompilationPtrTag>(proc.code().entrypointLabel(2));
+ CodeLocationLabel<JITCompilationPtrTag> labelOne = linkBuffer.locationOf<JITCompilationPtrTag>(proc.code().entrypointLabel(0));
+ CodeLocationLabel<JITCompilationPtrTag> labelTwo = linkBuffer.locationOf<JITCompilationPtrTag>(proc.code().entrypointLabel(1));
+ CodeLocationLabel<JITCompilationPtrTag> labelThree = linkBuffer.locationOf<JITCompilationPtrTag>(proc.code().entrypointLabel(2));
- MacroAssemblerCodeRef<B3CompilationPtrTag> codeRef = FINALIZE_CODE(linkBuffer, B3CompilationPtrTag, "testb3 compilation");
+ MacroAssemblerCodeRef<JITCompilationPtrTag> codeRef = FINALIZE_CODE(linkBuffer, JITCompilationPtrTag, "testb3 compilation");
CHECK_EQ(invoke<int>(labelOne, 1, 2), 3);
CHECK_EQ(invoke<int>(labelTwo, 1, 2), 3);
@@ -2057,11 +2057,11 @@
CCallHelpers jit;
generate(proc, jit);
LinkBuffer linkBuffer(jit, nullptr);
- CodeLocationLabel<B3CompilationPtrTag> labelOne = linkBuffer.locationOf<B3CompilationPtrTag>(proc.code().entrypointLabel(0));
- CodeLocationLabel<B3CompilationPtrTag> labelTwo = linkBuffer.locationOf<B3CompilationPtrTag>(proc.code().entrypointLabel(1));
- CodeLocationLabel<B3CompilationPtrTag> labelThree = linkBuffer.locationOf<B3CompilationPtrTag>(proc.code().entrypointLabel(2));
+ CodeLocationLabel<JITCompilationPtrTag> labelOne = linkBuffer.locationOf<JITCompilationPtrTag>(proc.code().entrypointLabel(0));
+ CodeLocationLabel<JITCompilationPtrTag> labelTwo = linkBuffer.locationOf<JITCompilationPtrTag>(proc.code().entrypointLabel(1));
+ CodeLocationLabel<JITCompilationPtrTag> labelThree = linkBuffer.locationOf<JITCompilationPtrTag>(proc.code().entrypointLabel(2));
- MacroAssemblerCodeRef<B3CompilationPtrTag> codeRef = FINALIZE_CODE(linkBuffer, B3CompilationPtrTag, "testb3 compilation");
+ MacroAssemblerCodeRef<JITCompilationPtrTag> codeRef = FINALIZE_CODE(linkBuffer, JITCompilationPtrTag, "testb3 compilation");
CHECK_EQ(invoke<int>(labelOne, 1, 2, 10), 3);
CHECK_EQ(invoke<int>(labelTwo, 1, 2, 10), -1);
@@ -2174,11 +2174,11 @@
CCallHelpers jit;
generate(proc, jit);
LinkBuffer linkBuffer(jit, nullptr);
- CodeLocationLabel<B3CompilationPtrTag> labelOne = linkBuffer.locationOf<B3CompilationPtrTag>(proc.code().entrypointLabel(0));
- CodeLocationLabel<B3CompilationPtrTag> labelTwo = linkBuffer.locationOf<B3CompilationPtrTag>(proc.code().entrypointLabel(1));
- CodeLocationLabel<B3CompilationPtrTag> labelThree = linkBuffer.locationOf<B3CompilationPtrTag>(proc.code().entrypointLabel(2));
+ CodeLocationLabel<JITCompilationPtrTag> labelOne = linkBuffer.locationOf<JITCompilationPtrTag>(proc.code().entrypointLabel(0));
+ CodeLocationLabel<JITCompilationPtrTag> labelTwo = linkBuffer.locationOf<JITCompilationPtrTag>(proc.code().entrypointLabel(1));
+ CodeLocationLabel<JITCompilationPtrTag> labelThree = linkBuffer.locationOf<JITCompilationPtrTag>(proc.code().entrypointLabel(2));
- MacroAssemblerCodeRef<B3CompilationPtrTag> codeRef = FINALIZE_CODE(linkBuffer, B3CompilationPtrTag, "testb3 compilation");
+ MacroAssemblerCodeRef<JITCompilationPtrTag> codeRef = FINALIZE_CODE(linkBuffer, JITCompilationPtrTag, "testb3 compilation");
CHECK_EQ(invoke<int>(labelOne, 1, 2, 10, false), 3);
CHECK_EQ(invoke<int>(labelTwo, 1, 2, 10, false), -1);
@@ -2252,10 +2252,10 @@
CCallHelpers jit;
generate(proc, jit);
LinkBuffer linkBuffer(jit, nullptr);
- CodeLocationLabel<B3CompilationPtrTag> labelOne = linkBuffer.locationOf<B3CompilationPtrTag>(proc.code().entrypointLabel(0));
- CodeLocationLabel<B3CompilationPtrTag> labelTwo = linkBuffer.locationOf<B3CompilationPtrTag>(proc.code().entrypointLabel(1));
+ CodeLocationLabel<JITCompilationPtrTag> labelOne = linkBuffer.locationOf<JITCompilationPtrTag>(proc.code().entrypointLabel(0));
+ CodeLocationLabel<JITCompilationPtrTag> labelTwo = linkBuffer.locationOf<JITCompilationPtrTag>(proc.code().entrypointLabel(1));
- MacroAssemblerCodeRef<B3CompilationPtrTag> codeRef = FINALIZE_CODE(linkBuffer, B3CompilationPtrTag, "testb3 compilation");
+ MacroAssemblerCodeRef<JITCompilationPtrTag> codeRef = FINALIZE_CODE(linkBuffer, JITCompilationPtrTag, "testb3 compilation");
CHECK(invoke<int>(labelOne, 0) == 1);
CHECK(invoke<int>(labelOne, 42) == 43);
Modified: trunk/Source/_javascript_Core/ftl/FTLJITCode.h (271593 => 271594)
--- trunk/Source/_javascript_Core/ftl/FTLJITCode.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/ftl/FTLJITCode.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -27,11 +27,11 @@
#if ENABLE(FTL_JIT)
-#include "B3OpaqueByproducts.h"
#include "DFGCommonData.h"
#include "FTLLazySlowPath.h"
#include "FTLOSRExit.h"
#include "JITCode.h"
+#include "JITOpaqueByproducts.h"
namespace JSC {
@@ -52,7 +52,7 @@
bool contains(void*) override;
void initializeB3Code(CodeRef<JSEntryPtrTag>);
- void initializeB3Byproducts(std::unique_ptr<B3::OpaqueByproducts>);
+ void initializeB3Byproducts(std::unique_ptr<OpaqueByproducts>);
void initializeAddressForCall(CodePtr<JSEntryPtrTag>);
void initializeArityCheckEntrypoint(CodeRef<JSEntryPtrTag>);
@@ -77,7 +77,7 @@
private:
CodePtr<JSEntryPtrTag> m_addressForCall;
CodeRef<JSEntryPtrTag> m_b3Code;
- std::unique_ptr<B3::OpaqueByproducts> m_b3Byproducts;
+ std::unique_ptr<OpaqueByproducts> m_b3Byproducts;
CodeRef<JSEntryPtrTag> m_arityCheckEntrypoint;
};
Modified: trunk/Source/_javascript_Core/ftl/FTLOutput.h (271593 => 271594)
--- trunk/Source/_javascript_Core/ftl/FTLOutput.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/ftl/FTLOutput.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -31,7 +31,6 @@
#include "B3BasicBlockInlines.h"
#include "B3CCallValue.h"
-#include "B3Compilation.h"
#include "B3FrequentedBlock.h"
#include "B3Procedure.h"
#include "B3SwitchValue.h"
@@ -47,6 +46,7 @@
#include "FTLWeight.h"
#include "FTLWeightedTarget.h"
#include "HeapCell.h"
+#include "JITCompilation.h"
#include <wtf/OrderMaker.h>
#include <wtf/StringPrintStream.h>
Copied: trunk/Source/_javascript_Core/jit/JITCompilation.cpp (from rev 271593, trunk/Source/_javascript_Core/b3/B3Compilation.cpp) (0 => 271594)
--- trunk/Source/_javascript_Core/jit/JITCompilation.cpp (rev 0)
+++ trunk/Source/_javascript_Core/jit/JITCompilation.cpp 2021-01-19 00:24:52 UTC (rev 271594)
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2015-2018 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "JITCompilation.h"
+
+#if ENABLE(JIT)
+
+#include "JITOpaqueByproducts.h"
+
+namespace JSC {
+
+Compilation::Compilation(MacroAssemblerCodeRef<JITCompilationPtrTag> codeRef, std::unique_ptr<OpaqueByproducts> byproducts)
+ : m_codeRef(codeRef)
+ , m_byproducts(WTFMove(byproducts))
+{
+}
+
+Compilation::Compilation(Compilation&& other)
+ : m_codeRef(WTFMove(other.m_codeRef))
+ , m_byproducts(WTFMove(other.m_byproducts))
+{
+}
+
+Compilation::~Compilation()
+{
+}
+
+} // namespace JSC
+
+#endif // ENABLE(JIT)
+
Copied: trunk/Source/_javascript_Core/jit/JITCompilation.h (from rev 271593, trunk/Source/_javascript_Core/b3/B3Compilation.h) (0 => 271594)
--- trunk/Source/_javascript_Core/jit/JITCompilation.h (rev 0)
+++ trunk/Source/_javascript_Core/jit/JITCompilation.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2015-2018 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(JIT)
+
+#include "MacroAssemblerCodeRef.h"
+#include <wtf/FastMalloc.h>
+#include <wtf/Noncopyable.h>
+
+namespace JSC {
+
+class VM;
+
+class OpaqueByproducts;
+
+// This class is a way to keep the result of a compilation alive and runnable.
+
+class Compilation {
+ WTF_MAKE_NONCOPYABLE(Compilation);
+ WTF_MAKE_FAST_ALLOCATED;
+
+public:
+ JS_EXPORT_PRIVATE Compilation(MacroAssemblerCodeRef<JITCompilationPtrTag>, std::unique_ptr<OpaqueByproducts>);
+ JS_EXPORT_PRIVATE Compilation(Compilation&&);
+ JS_EXPORT_PRIVATE ~Compilation();
+
+ MacroAssemblerCodePtr<JITCompilationPtrTag> code() const { return m_codeRef.code(); }
+ MacroAssemblerCodeRef<JITCompilationPtrTag> codeRef() const { return m_codeRef; }
+
+ CString disassembly() const { return m_codeRef.disassembly(); }
+
+private:
+ MacroAssemblerCodeRef<JITCompilationPtrTag> m_codeRef;
+ std::unique_ptr<OpaqueByproducts> m_byproducts;
+};
+
+} // namespace JSC
+
+#endif // ENABLE(JIT)
Copied: trunk/Source/_javascript_Core/jit/JITOpaqueByproduct.h (from rev 271593, trunk/Source/_javascript_Core/b3/B3OpaqueByproduct.h) (0 => 271594)
--- trunk/Source/_javascript_Core/jit/JITOpaqueByproduct.h (rev 0)
+++ trunk/Source/_javascript_Core/jit/JITOpaqueByproduct.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(JIT)
+
+#include <wtf/FastMalloc.h>
+#include <wtf/Noncopyable.h>
+#include <wtf/PrintStream.h>
+
+namespace JSC {
+
+class OpaqueByproduct {
+ WTF_MAKE_NONCOPYABLE(OpaqueByproduct);
+ WTF_MAKE_FAST_ALLOCATED;
+public:
+ OpaqueByproduct() { }
+ virtual ~OpaqueByproduct() { }
+
+ virtual void dump(PrintStream&) const = 0;
+};
+
+} // namespace JSC
+
+#endif // ENABLE(JIT)
Copied: trunk/Source/_javascript_Core/jit/JITOpaqueByproducts.cpp (from rev 271593, trunk/Source/_javascript_Core/b3/B3OpaqueByproducts.cpp) (0 => 271594)
--- trunk/Source/_javascript_Core/jit/JITOpaqueByproducts.cpp (rev 0)
+++ trunk/Source/_javascript_Core/jit/JITOpaqueByproducts.cpp 2021-01-19 00:24:52 UTC (rev 271594)
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "JITOpaqueByproducts.h"
+
+#if ENABLE(JIT)
+
+namespace JSC {
+
+OpaqueByproducts::OpaqueByproducts()
+{
+}
+
+OpaqueByproducts::~OpaqueByproducts()
+{
+}
+
+void OpaqueByproducts::add(std::unique_ptr<OpaqueByproduct> byproduct)
+{
+ m_byproducts.append(WTFMove(byproduct));
+}
+
+void OpaqueByproducts::dump(PrintStream& out) const
+{
+ out.print("Byproducts:\n");
+ if (m_byproducts.isEmpty()) {
+ out.print(" <empty>\n");
+ return;
+ }
+ for (auto& byproduct : m_byproducts)
+ out.print(" ", *byproduct, "\n");
+}
+
+} // namespace JSC
+
+#endif // ENABLE(JIT)
+
Copied: trunk/Source/_javascript_Core/jit/JITOpaqueByproducts.h (from rev 271593, trunk/Source/_javascript_Core/b3/B3OpaqueByproducts.h) (0 => 271594)
--- trunk/Source/_javascript_Core/jit/JITOpaqueByproducts.h (rev 0)
+++ trunk/Source/_javascript_Core/jit/JITOpaqueByproducts.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2015-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(JIT)
+
+#include "JITOpaqueByproduct.h"
+#include <memory>
+#include <wtf/Vector.h>
+
+namespace JSC {
+
+class OpaqueByproducts {
+ WTF_MAKE_NONCOPYABLE(OpaqueByproducts)
+ WTF_MAKE_FAST_ALLOCATED;
+public:
+ OpaqueByproducts();
+ JS_EXPORT_PRIVATE ~OpaqueByproducts();
+
+ size_t count() const { return m_byproducts.size(); }
+
+ void add(std::unique_ptr<OpaqueByproduct>);
+
+ void dump(PrintStream&) const;
+
+private:
+ Vector<std::unique_ptr<OpaqueByproduct>> m_byproducts;
+};
+
+} // namespace JSC
+
+#endif // ENABLE(JIT)
Modified: trunk/Source/_javascript_Core/runtime/JSCPtrTag.h (271593 => 271594)
--- trunk/Source/_javascript_Core/runtime/JSCPtrTag.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/runtime/JSCPtrTag.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -44,7 +44,7 @@
v(DOMJITFunctionPtrTag, PtrTagCalleeType::Native, PtrTagCallerType::None) \
v(DisassemblyPtrTag, PtrTagCalleeType::Native, PtrTagCallerType::None) \
/* Callee:JIT Caller:None */ \
- v(B3CompilationPtrTag, PtrTagCalleeType::JIT, PtrTagCallerType::None) \
+ v(JITCompilationPtrTag, PtrTagCalleeType::JIT, PtrTagCallerType::None) \
v(ExecutableMemoryPtrTag, PtrTagCalleeType::JIT, PtrTagCallerType::None) \
v(LinkBufferPtrTag, PtrTagCalleeType::JIT, PtrTagCallerType::None) \
v(Yarr8BitPtrTag, PtrTagCalleeType::JIT, PtrTagCallerType::None) \
Modified: trunk/Source/_javascript_Core/wasm/WasmB3IRGenerator.h (271593 => 271594)
--- trunk/Source/_javascript_Core/wasm/WasmB3IRGenerator.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/wasm/WasmB3IRGenerator.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -28,9 +28,9 @@
#if ENABLE(WEBASSEMBLY)
#include "B3Common.h"
-#include "B3Compilation.h"
-#include "B3OpaqueByproducts.h"
#include "CCallHelpers.h"
+#include "JITCompilation.h"
+#include "JITOpaqueByproducts.h"
#include "WasmCompilationMode.h"
#include "WasmEmbedder.h"
#include "WasmMemory.h"
@@ -47,7 +47,7 @@
struct CompilationContext {
std::unique_ptr<CCallHelpers> embedderEntrypointJIT;
std::unique_ptr<CCallHelpers> wasmEntrypointJIT;
- std::unique_ptr<B3::OpaqueByproducts> wasmEntrypointByproducts;
+ std::unique_ptr<OpaqueByproducts> wasmEntrypointByproducts;
};
Expected<std::unique_ptr<InternalFunction>, String> parseAndCompile(CompilationContext&, const FunctionData&, const Signature&, Vector<UnlinkedWasmToWasmCall>&, unsigned& osrEntryScratchBufferSize, const ModuleInformation&, MemoryMode, CompilationMode, uint32_t functionIndex, uint32_t loopIndexForOSREntry, TierUpCount* = nullptr);
Modified: trunk/Source/_javascript_Core/wasm/WasmBBQPlan.cpp (271593 => 271594)
--- trunk/Source/_javascript_Core/wasm/WasmBBQPlan.cpp 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/wasm/WasmBBQPlan.cpp 2021-01-19 00:24:52 UTC (rev 271594)
@@ -28,7 +28,7 @@
#if ENABLE(WEBASSEMBLY)
-#include "B3Compilation.h"
+#include "JITCompilation.h"
#include "JSToWasm.h"
#include "LinkBuffer.h"
#include "WasmAirIRGenerator.h"
@@ -110,8 +110,8 @@
size_t functionIndexSpace = m_functionIndex + m_moduleInformation->importFunctionCount();
SignatureIndex signatureIndex = m_moduleInformation->internalFunctionSignatureIndices[m_functionIndex];
const Signature& signature = SignatureInformation::get(signatureIndex);
- function->entrypoint.compilation = makeUnique<B3::Compilation>(
- FINALIZE_WASM_CODE_FOR_MODE(CompilationMode::BBQMode, linkBuffer, B3CompilationPtrTag, "WebAssembly BBQ function[%i] %s name %s", m_functionIndex, signature.toString().ascii().data(), makeString(IndexOrName(functionIndexSpace, m_moduleInformation->nameSection->get(functionIndexSpace))).ascii().data()),
+ function->entrypoint.compilation = makeUnique<Compilation>(
+ FINALIZE_WASM_CODE_FOR_MODE(CompilationMode::BBQMode, linkBuffer, JITCompilationPtrTag, "WebAssembly BBQ function[%i] %s name %s", m_functionIndex, signature.toString().ascii().data(), makeString(IndexOrName(functionIndexSpace, m_moduleInformation->nameSection->get(functionIndexSpace))).ascii().data()),
WTFMove(context.wasmEntrypointByproducts));
MacroAssemblerCodePtr<WasmEntryPtrTag> entrypoint;
@@ -226,8 +226,8 @@
return;
}
- m_wasmInternalFunctions[functionIndex]->entrypoint.compilation = makeUnique<B3::Compilation>(
- FINALIZE_CODE(linkBuffer, B3CompilationPtrTag, "WebAssembly BBQ function[%i] %s name %s", functionIndex, signature.toString().ascii().data(), makeString(IndexOrName(functionIndexSpace, m_moduleInformation->nameSection->get(functionIndexSpace))).ascii().data()),
+ m_wasmInternalFunctions[functionIndex]->entrypoint.compilation = makeUnique<Compilation>(
+ FINALIZE_CODE(linkBuffer, JITCompilationPtrTag, "WebAssembly BBQ function[%i] %s name %s", functionIndex, signature.toString().ascii().data(), makeString(IndexOrName(functionIndexSpace, m_moduleInformation->nameSection->get(functionIndexSpace))).ascii().data()),
WTFMove(context.wasmEntrypointByproducts));
}
@@ -238,8 +238,8 @@
return;
}
- embedderToWasmInternalFunction->entrypoint.compilation = makeUnique<B3::Compilation>(
- FINALIZE_CODE(linkBuffer, B3CompilationPtrTag, "Embedder->WebAssembly entrypoint[%i] %s name %s", functionIndex, signature.toString().ascii().data(), makeString(IndexOrName(functionIndexSpace, m_moduleInformation->nameSection->get(functionIndexSpace))).ascii().data()),
+ embedderToWasmInternalFunction->entrypoint.compilation = makeUnique<Compilation>(
+ FINALIZE_CODE(linkBuffer, JITCompilationPtrTag, "Embedder->WebAssembly entrypoint[%i] %s name %s", functionIndex, signature.toString().ascii().data(), makeString(IndexOrName(functionIndexSpace, m_moduleInformation->nameSection->get(functionIndexSpace))).ascii().data()),
nullptr);
}
}
Modified: trunk/Source/_javascript_Core/wasm/WasmBinding.h (271593 => 271594)
--- trunk/Source/_javascript_Core/wasm/WasmBinding.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/wasm/WasmBinding.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -27,7 +27,7 @@
#if ENABLE(WEBASSEMBLY)
-#include "B3Compilation.h"
+#include "JITCompilation.h"
#include "WasmFormat.h"
#include <wtf/Expected.h>
Modified: trunk/Source/_javascript_Core/wasm/WasmCallee.h (271593 => 271594)
--- trunk/Source/_javascript_Core/wasm/WasmCallee.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/wasm/WasmCallee.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -27,7 +27,7 @@
#if ENABLE(WEBASSEMBLY)
-#include "B3Compilation.h"
+#include "JITCompilation.h"
#include "RegisterAtOffsetList.h"
#include "WasmCompilationMode.h"
#include "WasmFormat.h"
Modified: trunk/Source/_javascript_Core/wasm/WasmFormat.h (271593 => 271594)
--- trunk/Source/_javascript_Core/wasm/WasmFormat.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/wasm/WasmFormat.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -46,9 +46,7 @@
namespace JSC {
-namespace B3 {
class Compilation;
-}
namespace Wasm {
@@ -340,7 +338,7 @@
struct Entrypoint {
WTF_MAKE_STRUCT_FAST_ALLOCATED;
- std::unique_ptr<B3::Compilation> compilation;
+ std::unique_ptr<Compilation> compilation;
RegisterAtOffsetList calleeSaveRegisters;
};
Modified: trunk/Source/_javascript_Core/wasm/WasmLLIntPlan.cpp (271593 => 271594)
--- trunk/Source/_javascript_Core/wasm/WasmLLIntPlan.cpp 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/wasm/WasmLLIntPlan.cpp 2021-01-19 00:24:52 UTC (rev 271594)
@@ -28,9 +28,9 @@
#if ENABLE(WEBASSEMBLY)
-#include "B3Compilation.h"
#include "BytecodeDumper.h"
#include "CalleeBits.h"
+#include "JITCompilation.h"
#include "JSToWasm.h"
#include "LLIntThunks.h"
#include "LinkBuffer.h"
@@ -130,7 +130,7 @@
linkBuffer.link<JITThunkPtrTag>(jumps[i], CodeLocationLabel<JITThunkPtrTag>(LLInt::wasmFunctionEntryThunk().code()));
}
- m_entryThunks = FINALIZE_CODE(linkBuffer, B3CompilationPtrTag, "Wasm LLInt entry thunks");
+ m_entryThunks = FINALIZE_CODE(linkBuffer, JITCompilationPtrTag, "Wasm LLInt entry thunks");
m_callees = m_calleesVector.data();
}
@@ -152,8 +152,8 @@
return;
}
- function->entrypoint.compilation = makeUnique<B3::Compilation>(
- FINALIZE_CODE(linkBuffer, B3CompilationPtrTag, "Embedder->WebAssembly entrypoint[%i] %s", functionIndex, signature.toString().ascii().data()),
+ function->entrypoint.compilation = makeUnique<Compilation>(
+ FINALIZE_CODE(linkBuffer, JITCompilationPtrTag, "Embedder->WebAssembly entrypoint[%i] %s", functionIndex, signature.toString().ascii().data()),
nullptr);
Ref<EmbedderEntrypointCallee> callee = EmbedderEntrypointCallee::create(WTFMove(function->entrypoint));
Modified: trunk/Source/_javascript_Core/wasm/WasmLLIntPlan.h (271593 => 271594)
--- trunk/Source/_javascript_Core/wasm/WasmLLIntPlan.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/wasm/WasmLLIntPlan.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -48,7 +48,7 @@
JS_EXPORT_PRIVATE LLIntPlan(Context*, Vector<uint8_t>&&, AsyncWork, CompletionTask&&);
LLIntPlan(Context*, Ref<ModuleInformation>, const Ref<LLIntCallee>*, CompletionTask&&);
- MacroAssemblerCodeRef<B3CompilationPtrTag>&& takeEntryThunks()
+ MacroAssemblerCodeRef<JITCompilationPtrTag>&& takeEntryThunks()
{
RELEASE_ASSERT(!failed() && !hasWork());
return WTFMove(m_entryThunks);
@@ -84,7 +84,7 @@
const Ref<LLIntCallee>* m_callees { nullptr };
Vector<Ref<LLIntCallee>> m_calleesVector;
EmbedderEntrypointCalleeMap m_embedderCallees;
- MacroAssemblerCodeRef<B3CompilationPtrTag> m_entryThunks;
+ MacroAssemblerCodeRef<JITCompilationPtrTag> m_entryThunks;
};
Modified: trunk/Source/_javascript_Core/wasm/WasmModule.h (271593 => 271594)
--- trunk/Source/_javascript_Core/wasm/WasmModule.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/wasm/WasmModule.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -73,7 +73,7 @@
Ref<ModuleInformation> m_moduleInformation;
RefPtr<CodeBlock> m_codeBlocks[Wasm::NumberOfMemoryModes];
RefPtr<LLIntCallees> m_llintCallees;
- MacroAssemblerCodeRef<B3CompilationPtrTag> m_llintEntryThunks;
+ MacroAssemblerCodeRef<JITCompilationPtrTag> m_llintEntryThunks;
Lock m_lock;
};
Modified: trunk/Source/_javascript_Core/wasm/WasmOMGForOSREntryPlan.cpp (271593 => 271594)
--- trunk/Source/_javascript_Core/wasm/WasmOMGForOSREntryPlan.cpp 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/wasm/WasmOMGForOSREntryPlan.cpp 2021-01-19 00:24:52 UTC (rev 271594)
@@ -28,7 +28,7 @@
#if ENABLE(WEBASSEMBLY)
-#include "B3Compilation.h"
+#include "JITCompilation.h"
#include "LinkBuffer.h"
#include "WasmB3IRGenerator.h"
#include "WasmCallee.h"
@@ -89,8 +89,8 @@
return;
}
- omgEntrypoint.compilation = makeUnique<B3::Compilation>(
- FINALIZE_WASM_CODE_FOR_MODE(CompilationMode::OMGForOSREntryMode, linkBuffer, B3CompilationPtrTag, "WebAssembly OMGForOSREntry function[%i] %s name %s", m_functionIndex, signature.toString().ascii().data(), makeString(IndexOrName(functionIndexSpace, m_moduleInformation->nameSection->get(functionIndexSpace))).ascii().data()),
+ omgEntrypoint.compilation = makeUnique<Compilation>(
+ FINALIZE_WASM_CODE_FOR_MODE(CompilationMode::OMGForOSREntryMode, linkBuffer, JITCompilationPtrTag, "WebAssembly OMGForOSREntry function[%i] %s name %s", m_functionIndex, signature.toString().ascii().data(), makeString(IndexOrName(functionIndexSpace, m_moduleInformation->nameSection->get(functionIndexSpace))).ascii().data()),
WTFMove(context.wasmEntrypointByproducts));
omgEntrypoint.calleeSaveRegisters = WTFMove(parseAndCompileResult.value()->entrypoint.calleeSaveRegisters);
Modified: trunk/Source/_javascript_Core/wasm/WasmOMGPlan.cpp (271593 => 271594)
--- trunk/Source/_javascript_Core/wasm/WasmOMGPlan.cpp 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/wasm/WasmOMGPlan.cpp 2021-01-19 00:24:52 UTC (rev 271594)
@@ -28,7 +28,7 @@
#if ENABLE(WEBASSEMBLY)
-#include "B3Compilation.h"
+#include "JITCompilation.h"
#include "LinkBuffer.h"
#include "WasmB3IRGenerator.h"
#include "WasmCallee.h"
@@ -86,8 +86,8 @@
return;
}
- omgEntrypoint.compilation = makeUnique<B3::Compilation>(
- FINALIZE_WASM_CODE_FOR_MODE(CompilationMode::OMGMode, linkBuffer, B3CompilationPtrTag, "WebAssembly OMG function[%i] %s name %s", m_functionIndex, signature.toString().ascii().data(), makeString(IndexOrName(functionIndexSpace, m_moduleInformation->nameSection->get(functionIndexSpace))).ascii().data()),
+ omgEntrypoint.compilation = makeUnique<Compilation>(
+ FINALIZE_WASM_CODE_FOR_MODE(CompilationMode::OMGMode, linkBuffer, JITCompilationPtrTag, "WebAssembly OMG function[%i] %s name %s", m_functionIndex, signature.toString().ascii().data(), makeString(IndexOrName(functionIndexSpace, m_moduleInformation->nameSection->get(functionIndexSpace))).ascii().data()),
WTFMove(context.wasmEntrypointByproducts));
omgEntrypoint.calleeSaveRegisters = WTFMove(parseAndCompileResult.value()->entrypoint.calleeSaveRegisters);
Modified: trunk/Source/_javascript_Core/wasm/WasmParser.h (271593 => 271594)
--- trunk/Source/_javascript_Core/wasm/WasmParser.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/wasm/WasmParser.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -27,8 +27,8 @@
#if ENABLE(WEBASSEMBLY)
-#include "B3Compilation.h"
#include "B3Procedure.h"
+#include "JITCompilation.h"
#include "VirtualRegister.h"
#include "WasmFormat.h"
#include "WasmLimits.h"
Modified: trunk/Source/_javascript_Core/wasm/js/WasmToJS.h (271593 => 271594)
--- trunk/Source/_javascript_Core/wasm/js/WasmToJS.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/wasm/js/WasmToJS.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -27,7 +27,7 @@
#if ENABLE(WEBASSEMBLY)
-#include "B3Compilation.h"
+#include "JITCompilation.h"
#include "WasmBinding.h"
#include "WasmEmbedder.h"
#include <wtf/Bag.h>
Modified: trunk/Source/_javascript_Core/wasm/js/WebAssemblyFunction.h (271593 => 271594)
--- trunk/Source/_javascript_Core/wasm/js/WebAssemblyFunction.h 2021-01-19 00:14:11 UTC (rev 271593)
+++ trunk/Source/_javascript_Core/wasm/js/WebAssemblyFunction.h 2021-01-19 00:24:52 UTC (rev 271594)
@@ -41,10 +41,6 @@
class WebAssemblyInstance;
using Wasm::WasmToWasmImportableFunction;
-namespace B3 {
-class Compilation;
-}
-
class WebAssemblyFunction final : public WebAssemblyFunctionBase {
public:
using Base = WebAssemblyFunctionBase;