Skip to content

Commit f1503ba

Browse files
committed
[DOMJIT] Use DOMJIT::Patchpoint in IC
https://bugs.webkit.org/show_bug.cgi?id=163223 Reviewed by Saam Barati. JSTests: * stress/domjit-exception-ic.js: Added. (shouldBe): (access): * stress/domjit-exception.js: Added. (shouldBe): (access): * stress/domjit-getter-complex-with-incorrect-object.js: Added. (shouldThrow): (access): (i.shouldThrow): * stress/domjit-getter-complex.js: Added. (shouldBe): (access): * stress/domjit-getter-try-catch-getter-as-get-by-id-register-restoration.js: Added. (assert): (bar): (foo): Source/JavaScriptCore: This patch uses DOMJIT::Patchpoint to inline DOM accesses even in IC! It is useful for Baseline JIT cases and GetById cases in DFG and FTL. In AccessCase, we construct the environment that allows DOMJIT::Patchpoint to emit code and make DOMJIT accessors inlined in IC. To allow DOMJIT::Patchpoint to emit code, we create a mechanism to emit calls required in DOMJIT::Patchpoint. This system is useful when we create the super- polymorphic support[1] later. And inlining mechanism is useful even after introducing super-polymorphic support since it can work even after we fire the watchpoint for super-polymorphic handling. This patch improves Dromaeo dom-traverse 8% (263.95 runs/s v.s. 244.07 runs/s). [1]: https://bugs.webkit.org/show_bug.cgi?id=163226 * CMakeLists.txt: * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/DOMJITAccessCasePatchpointParams.cpp: Added. (JSC::SlowPathCallGeneratorWithArguments::SlowPathCallGeneratorWithArguments): (JSC::SlowPathCallGeneratorWithArguments::generateImpl): (JSC::DOMJITAccessCasePatchpointParams::emitSlowPathCalls): * bytecode/DOMJITAccessCasePatchpointParams.h: Copied from Source/JavaScriptCore/ftl/FTLDOMJITPatchpointParams.h. (JSC::DOMJITAccessCasePatchpointParams::DOMJITAccessCasePatchpointParams): (JSC::DOMJITAccessCasePatchpointParams::SlowPathCallGenerator::~SlowPathCallGenerator): * bytecode/PolymorphicAccess.cpp: (JSC::AccessGenerationState::liveRegistersForCall): (JSC::AccessGenerationState::liveRegistersToPreserveAtExceptionHandlingCallSite): (JSC::calleeSaveRegisters): (JSC::AccessGenerationState::calculateLiveRegistersForCallAndExceptionHandling): (JSC::AccessGenerationState::restoreLiveRegistersFromStackForCallWithThrownException): (JSC::AccessGenerationState::restoreLiveRegistersFromStackForCall): (JSC::AccessGenerationState::callSiteIndexForExceptionHandlingOrOriginal): (JSC::AccessGenerationState::originalExceptionHandler): (JSC::AccessCase::generateImpl): (JSC::AccessCase::emitDOMJITGetter): (JSC::PolymorphicAccess::regenerate): (JSC::AccessGenerationState::preserveLiveRegistersToStackForCall): Deleted. * bytecode/PolymorphicAccess.h: (JSC::AccessGenerationState::SpillState::isEmpty): (JSC::AccessGenerationState::setSpillStateForJSGetterSetter): (JSC::AccessGenerationState::spillStateForJSGetterSetter): (JSC::AccessGenerationState::liveRegistersForCall): Deleted. (JSC::AccessGenerationState::numberOfStackBytesUsedForRegisterPreservation): Deleted. (JSC::AccessGenerationState::liveRegistersToPreserveAtExceptionHandlingCallSite): Deleted. * dfg/DFGDOMJITPatchpointParams.cpp: * dfg/DFGDOMJITPatchpointParams.h: * domjit/DOMJITPatchpoint.h: * domjit/DOMJITPatchpointParams.h: (JSC::DOMJIT::PatchpointParams::addSlowPathCall): * ftl/FTLDOMJITPatchpointParams.cpp: * ftl/FTLDOMJITPatchpointParams.h: * jsc.cpp: (WTF::DOMJITNode::checkDOMJITNode): (WTF::DOMJITGetterComplex::DOMJITGetterComplex): (WTF::DOMJITGetterComplex::createStructure): (WTF::DOMJITGetterComplex::create): (WTF::DOMJITGetterComplex::DOMJITNodeDOMJIT::DOMJITNodeDOMJIT): (WTF::DOMJITGetterComplex::domJITNodeGetterSetter): (WTF::DOMJITGetterComplex::finishCreation): (WTF::DOMJITGetterComplex::functionEnableException): (WTF::DOMJITGetterComplex::customGetter): (GlobalObject::finishCreation): (functionCreateDOMJITGetterComplexObject): Source/WebCore: Make DOMJITPatchpointParams non-const. * domjit/DOMJITHelpers.h: (WebCore::DOMJITHelpers::toWrapper): * domjit/JSNodeDOMJIT.cpp: (WebCore::createCallDOMForOffsetAccess): (WebCore::checkNode): (WebCore::NodeNodeTypeDOMJIT::callDOM): Canonical link: https://commits.webkit.org/181345@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@207427 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 7c77f33 commit f1503ba

23 files changed

Lines changed: 880 additions & 85 deletions

‎JSTests/ChangeLog‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,28 @@
1+
2016-10-17 Yusuke Suzuki <utatane.tea@gmail.com>
2+
3+
[DOMJIT] Use DOMJIT::Patchpoint in IC
4+
https://bugs.webkit.org/show_bug.cgi?id=163223
5+
6+
Reviewed by Saam Barati.
7+
8+
* stress/domjit-exception-ic.js: Added.
9+
(shouldBe):
10+
(access):
11+
* stress/domjit-exception.js: Added.
12+
(shouldBe):
13+
(access):
14+
* stress/domjit-getter-complex-with-incorrect-object.js: Added.
15+
(shouldThrow):
16+
(access):
17+
(i.shouldThrow):
18+
* stress/domjit-getter-complex.js: Added.
19+
(shouldBe):
20+
(access):
21+
* stress/domjit-getter-try-catch-getter-as-get-by-id-register-restoration.js: Added.
22+
(assert):
23+
(bar):
24+
(foo):
25+
126
2016-10-15 Saam Barati <sbarati@apple.com>
227

328
Assertion failed under operationToLowerCase with a rope with zero length
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
function shouldBe(actual, expected) {
2+
if (actual !== expected)
3+
throw new Error(`bad value: ${String(actual)}`);
4+
}
5+
6+
function shouldThrow(func, errorMessage) {
7+
var errorThrown = false;
8+
var error = null;
9+
try {
10+
func();
11+
} catch (e) {
12+
errorThrown = true;
13+
error = e;
14+
}
15+
if (!errorThrown)
16+
throw new Error('not thrown');
17+
if (String(error) !== errorMessage)
18+
throw new Error(`bad error: ${String(error)}`);
19+
}
20+
21+
(function () {
22+
let domjit = createDOMJITGetterComplexObject();
23+
function access(object)
24+
{
25+
return object.customGetter;
26+
}
27+
noInline(access);
28+
let normal = {
29+
customGetter: 42
30+
};
31+
for (let i = 0; i < 1e4; ++i) {
32+
shouldBe(access(domjit), 42);
33+
shouldBe(access(normal), 42);
34+
}
35+
domjit.enableException();
36+
shouldThrow(() => access(domjit), `Error: DOMJITGetterComplex slow call exception`);
37+
}());

‎JSTests/stress/domjit-exception.js‎

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
function shouldBe(actual, expected) {
2+
if (actual !== expected)
3+
throw new Error(`bad value: ${String(actual)}`);
4+
}
5+
6+
function shouldThrow(func, errorMessage) {
7+
var errorThrown = false;
8+
var error = null;
9+
try {
10+
func();
11+
} catch (e) {
12+
errorThrown = true;
13+
error = e;
14+
}
15+
if (!errorThrown)
16+
throw new Error('not thrown');
17+
if (String(error) !== errorMessage)
18+
throw new Error(`bad error: ${String(error)}`);
19+
}
20+
(function () {
21+
let domjit = createDOMJITGetterComplexObject();
22+
function access(object)
23+
{
24+
return object.customGetter;
25+
}
26+
noInline(access);
27+
for (var i = 0; i < 1e4; ++i)
28+
shouldBe(access(domjit), 42);
29+
domjit.enableException();
30+
shouldThrow(() => access(domjit), `Error: DOMJITGetterComplex slow call exception`);
31+
}());
32+
(function () {
33+
let domjit = createDOMJITGetterComplexObject();
34+
function access(object)
35+
{
36+
return object.customGetter;
37+
}
38+
noInline(access);
39+
for (let i = 0; i < 1e2; ++i)
40+
shouldBe(access(domjit), 42);
41+
domjit.enableException();
42+
shouldThrow(() => access(domjit), `Error: DOMJITGetterComplex slow call exception`);
43+
}());
44+
(function () {
45+
let domjit = createDOMJITGetterComplexObject();
46+
function access(object)
47+
{
48+
return object.customGetter;
49+
}
50+
noInline(access);
51+
for (let i = 0; i < 50; ++i)
52+
shouldBe(access(domjit), 42);
53+
domjit.enableException();
54+
shouldThrow(() => access(domjit), `Error: DOMJITGetterComplex slow call exception`);
55+
}());
56+
(function () {
57+
let domjit = createDOMJITGetterComplexObject();
58+
function access(object)
59+
{
60+
return object.customGetter;
61+
}
62+
noInline(access);
63+
for (let i = 0; i < 10; ++i)
64+
shouldBe(access(domjit), 42);
65+
domjit.enableException();
66+
shouldThrow(() => access(domjit), `Error: DOMJITGetterComplex slow call exception`);
67+
}());
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
function shouldThrow(func, errorMessage) {
2+
var errorThrown = false;
3+
var error = null;
4+
try {
5+
func();
6+
} catch (e) {
7+
errorThrown = true;
8+
error = e;
9+
}
10+
if (!errorThrown)
11+
throw new Error('not thrown');
12+
if (String(error) !== errorMessage)
13+
throw new Error(`bad error: ${String(error)}`);
14+
}
15+
16+
var complex = createDOMJITGetterComplexObject();
17+
var object = {};
18+
object.__proto__ = complex;
19+
function access(object)
20+
{
21+
return object.customGetter;
22+
}
23+
noInline(access);
24+
for (var i = 0; i < 1e4; ++i) {
25+
shouldThrow(() => {
26+
access(object);
27+
}, `TypeError: Type error`);
28+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
function shouldBe(actual, expected) {
2+
if (actual !== expected)
3+
throw new Error(`bad value: ${String(actual)}`);
4+
}
5+
6+
var complex = createDOMJITGetterComplexObject();
7+
function access(complex)
8+
{
9+
return complex.customGetter;
10+
}
11+
noInline(access);
12+
for (var i = 0; i < 1e4; ++i) {
13+
shouldBe(access(complex), 42);
14+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
function assert(b) {
2+
if (!b) throw new Error("bad value");
3+
}
4+
noInline(assert);
5+
6+
let i;
7+
var o1 = createDOMJITGetterComplexObject();
8+
o1.x = "x";
9+
10+
var o2 = {
11+
customGetter: 40
12+
}
13+
14+
var o3 = {
15+
x: 100,
16+
customGetter: "f"
17+
}
18+
19+
function bar(i) {
20+
if (i === -1000)
21+
return o1;
22+
23+
if (i % 2)
24+
return o3;
25+
else
26+
return o2;
27+
}
28+
noInline(bar);
29+
30+
function foo(i) {
31+
var o = bar(i);
32+
let v;
33+
let v2;
34+
let v3;
35+
try {
36+
v2 = o.x;
37+
v = o.customGetter + v2;
38+
} catch(e) {
39+
assert(v2 === "x");
40+
assert(o === o1);
41+
}
42+
}
43+
noInline(foo);
44+
45+
foo(i);
46+
for (i = 0; i < 1000; i++)
47+
foo(i);
48+
49+
o1.enableException();
50+
i = -1000;
51+
for (let j = 0; j < 1000; j++)
52+
foo(i);

‎Source/JavaScriptCore/CMakeLists.txt‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ set(JavaScriptCore_SOURCES
204204
bytecode/ComplexGetStatus.cpp
205205
bytecode/DataFormat.cpp
206206
bytecode/DFGExitProfile.cpp
207+
bytecode/DOMJITAccessCasePatchpointParams.cpp
207208
bytecode/DeferredCompilationCallback.cpp
208209
bytecode/DeferredSourceDump.cpp
209210
bytecode/ExecutionCounter.cpp

‎Source/JavaScriptCore/ChangeLog‎

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,74 @@
1+
2016-10-17 Yusuke Suzuki <utatane.tea@gmail.com>
2+
3+
[DOMJIT] Use DOMJIT::Patchpoint in IC
4+
https://bugs.webkit.org/show_bug.cgi?id=163223
5+
6+
Reviewed by Saam Barati.
7+
8+
This patch uses DOMJIT::Patchpoint to inline DOM accesses even in IC!
9+
It is useful for Baseline JIT cases and GetById cases in DFG and FTL.
10+
In AccessCase, we construct the environment that allows DOMJIT::Patchpoint
11+
to emit code and make DOMJIT accessors inlined in IC.
12+
13+
To allow DOMJIT::Patchpoint to emit code, we create a mechanism to emit calls
14+
required in DOMJIT::Patchpoint. This system is useful when we create the super-
15+
polymorphic support[1] later. And inlining mechanism is useful even after
16+
introducing super-polymorphic support since it can work even after we fire the
17+
watchpoint for super-polymorphic handling.
18+
19+
This patch improves Dromaeo dom-traverse 8% (263.95 runs/s v.s. 244.07 runs/s).
20+
21+
[1]: https://bugs.webkit.org/show_bug.cgi?id=163226
22+
23+
* CMakeLists.txt:
24+
* JavaScriptCore.xcodeproj/project.pbxproj:
25+
* bytecode/DOMJITAccessCasePatchpointParams.cpp: Added.
26+
(JSC::SlowPathCallGeneratorWithArguments::SlowPathCallGeneratorWithArguments):
27+
(JSC::SlowPathCallGeneratorWithArguments::generateImpl):
28+
(JSC::DOMJITAccessCasePatchpointParams::emitSlowPathCalls):
29+
* bytecode/DOMJITAccessCasePatchpointParams.h: Copied from Source/JavaScriptCore/ftl/FTLDOMJITPatchpointParams.h.
30+
(JSC::DOMJITAccessCasePatchpointParams::DOMJITAccessCasePatchpointParams):
31+
(JSC::DOMJITAccessCasePatchpointParams::SlowPathCallGenerator::~SlowPathCallGenerator):
32+
* bytecode/PolymorphicAccess.cpp:
33+
(JSC::AccessGenerationState::liveRegistersForCall):
34+
(JSC::AccessGenerationState::liveRegistersToPreserveAtExceptionHandlingCallSite):
35+
(JSC::calleeSaveRegisters):
36+
(JSC::AccessGenerationState::calculateLiveRegistersForCallAndExceptionHandling):
37+
(JSC::AccessGenerationState::restoreLiveRegistersFromStackForCallWithThrownException):
38+
(JSC::AccessGenerationState::restoreLiveRegistersFromStackForCall):
39+
(JSC::AccessGenerationState::callSiteIndexForExceptionHandlingOrOriginal):
40+
(JSC::AccessGenerationState::originalExceptionHandler):
41+
(JSC::AccessCase::generateImpl):
42+
(JSC::AccessCase::emitDOMJITGetter):
43+
(JSC::PolymorphicAccess::regenerate):
44+
(JSC::AccessGenerationState::preserveLiveRegistersToStackForCall): Deleted.
45+
* bytecode/PolymorphicAccess.h:
46+
(JSC::AccessGenerationState::SpillState::isEmpty):
47+
(JSC::AccessGenerationState::setSpillStateForJSGetterSetter):
48+
(JSC::AccessGenerationState::spillStateForJSGetterSetter):
49+
(JSC::AccessGenerationState::liveRegistersForCall): Deleted.
50+
(JSC::AccessGenerationState::numberOfStackBytesUsedForRegisterPreservation): Deleted.
51+
(JSC::AccessGenerationState::liveRegistersToPreserveAtExceptionHandlingCallSite): Deleted.
52+
* dfg/DFGDOMJITPatchpointParams.cpp:
53+
* dfg/DFGDOMJITPatchpointParams.h:
54+
* domjit/DOMJITPatchpoint.h:
55+
* domjit/DOMJITPatchpointParams.h:
56+
(JSC::DOMJIT::PatchpointParams::addSlowPathCall):
57+
* ftl/FTLDOMJITPatchpointParams.cpp:
58+
* ftl/FTLDOMJITPatchpointParams.h:
59+
* jsc.cpp:
60+
(WTF::DOMJITNode::checkDOMJITNode):
61+
(WTF::DOMJITGetterComplex::DOMJITGetterComplex):
62+
(WTF::DOMJITGetterComplex::createStructure):
63+
(WTF::DOMJITGetterComplex::create):
64+
(WTF::DOMJITGetterComplex::DOMJITNodeDOMJIT::DOMJITNodeDOMJIT):
65+
(WTF::DOMJITGetterComplex::domJITNodeGetterSetter):
66+
(WTF::DOMJITGetterComplex::finishCreation):
67+
(WTF::DOMJITGetterComplex::functionEnableException):
68+
(WTF::DOMJITGetterComplex::customGetter):
69+
(GlobalObject::finishCreation):
70+
(functionCreateDOMJITGetterComplexObject):
71+
172
2016-10-17 Saam Barati <sbarati@apple.com>
273

374
Build fix for HasOwnPropertyCache::Entry caused slowdown by introducing a constructor that doesn't use move semantics for the RefPtr<UniquedStringImpl> parameter

‎Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2114,6 +2114,8 @@
21142114
E39DA4A61B7E8B7C0084F33A /* JSModuleRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E39DA4A41B7E8B7C0084F33A /* JSModuleRecord.cpp */; };
21152115
E39DA4A71B7E8B7C0084F33A /* JSModuleRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = E39DA4A51B7E8B7C0084F33A /* JSModuleRecord.h */; settings = {ATTRIBUTES = (Private, ); }; };
21162116
E3A421431D6F58930007C617 /* PreciseJumpTargetsInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = E3A421421D6F588F0007C617 /* PreciseJumpTargetsInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
2117+
E3BFD0BB1DAF80870065DEA2 /* DOMJITAccessCasePatchpointParams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E3BFD0B91DAF807C0065DEA2 /* DOMJITAccessCasePatchpointParams.cpp */; };
2118+
E3BFD0BC1DAF808E0065DEA2 /* DOMJITAccessCasePatchpointParams.h in Headers */ = {isa = PBXBuildFile; fileRef = E3BFD0BA1DAF807C0065DEA2 /* DOMJITAccessCasePatchpointParams.h */; };
21172119
E3C08E3C1DA41B810039478F /* DOMJITPatchpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = E3C08E3B1DA41B7B0039478F /* DOMJITPatchpoint.h */; settings = {ATTRIBUTES = (Private, ); }; };
21182120
E3D239C81B829C1C00BBEF67 /* JSModuleEnvironment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E3D239C61B829C1C00BBEF67 /* JSModuleEnvironment.cpp */; };
21192121
E3D239C91B829C1C00BBEF67 /* JSModuleEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = E3D239C71B829C1C00BBEF67 /* JSModuleEnvironment.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -4423,6 +4425,8 @@
44234425
E39DA4A41B7E8B7C0084F33A /* JSModuleRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSModuleRecord.cpp; sourceTree = "<group>"; };
44244426
E39DA4A51B7E8B7C0084F33A /* JSModuleRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSModuleRecord.h; sourceTree = "<group>"; };
44254427
E3A421421D6F588F0007C617 /* PreciseJumpTargetsInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreciseJumpTargetsInlines.h; sourceTree = "<group>"; };
4428+
E3BFD0B91DAF807C0065DEA2 /* DOMJITAccessCasePatchpointParams.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMJITAccessCasePatchpointParams.cpp; sourceTree = "<group>"; };
4429+
E3BFD0BA1DAF807C0065DEA2 /* DOMJITAccessCasePatchpointParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMJITAccessCasePatchpointParams.h; sourceTree = "<group>"; };
44264430
E3C08E3B1DA41B7B0039478F /* DOMJITPatchpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMJITPatchpoint.h; sourceTree = "<group>"; };
44274431
E3CB1E241DA7540A00FA1E56 /* DOMJITSlowPathCalls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMJITSlowPathCalls.h; sourceTree = "<group>"; };
44284432
E3D239C61B829C1C00BBEF67 /* JSModuleEnvironment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSModuleEnvironment.cpp; sourceTree = "<group>"; };
@@ -6824,6 +6828,8 @@
68246828
0F0B83A514BCF50400885B4F /* CodeType.h */,
68256829
0F6FC74E196110A800E1D02D /* ComplexGetStatus.cpp */,
68266830
0F6FC74F196110A800E1D02D /* ComplexGetStatus.h */,
6831+
E3BFD0B91DAF807C0065DEA2 /* DOMJITAccessCasePatchpointParams.cpp */,
6832+
E3BFD0BA1DAF807C0065DEA2 /* DOMJITAccessCasePatchpointParams.h */,
68276833
62E3D5EF1B8D0B7300B868BB /* DataFormat.cpp */,
68286834
0F426A4A1460CD6B00131F8F /* DataFormat.h */,
68296835
0FC712DC17CD8778008CC93C /* DeferredCompilationCallback.cpp */,
@@ -7526,6 +7532,7 @@
75267532
0F8364B7164B0C110053329A /* DFGBranchDirection.h in Headers */,
75277533
86EC9DC51328DF82002B2AD7 /* DFGByteCodeParser.h in Headers */,
75287534
0F256C361627B0AD007F2783 /* DFGCallArrayAllocatorSlowPathGenerator.h in Headers */,
7535+
E3BFD0BC1DAF808E0065DEA2 /* DOMJITAccessCasePatchpointParams.h in Headers */,
75297536
0FBDB9AD1AB0FBC6000B57E5 /* DFGCallCreateDirectArgumentsSlowPathGenerator.h in Headers */,
75307537
0F7B294B14C3CD2F007C3DB1 /* DFGCapabilities.h in Headers */,
75317538
0FFFC95814EF90A200C72532 /* DFGCFAPhase.h in Headers */,
@@ -9422,6 +9429,7 @@
94229429
E35E035F1B7AB43E0073AD2A /* InspectorInstrumentationObject.cpp in Sources */,
94239430
A532438B18568335002ED692 /* InspectorProtocolObjects.cpp in Sources */,
94249431
A50E4B6118809DD50068A46D /* InspectorRuntimeAgent.cpp in Sources */,
9432+
E3BFD0BB1DAF80870065DEA2 /* DOMJITAccessCasePatchpointParams.cpp in Sources */,
94259433
A593CF821840377100BFCE27 /* InspectorValues.cpp in Sources */,
94269434
147F39CF107EC37600427A48 /* InternalFunction.cpp in Sources */,
94279435
1429D7D40ED2128200B89619 /* Interpreter.cpp in Sources */,

0 commit comments

Comments
 (0)