Skip to content

Commit 7f5b1c3

Browse files
[JSC] Use reifying system for "name" property of builtin JSFunction
https://bugs.webkit.org/show_bug.cgi?id=175260 Reviewed by Saam Barati. JSTests: * stress/accessors-get-set-prefix.js: * stress/builtin-function-name.js: Added. (shouldBe): (shouldThrow): (shouldBe.JSON.stringify.Object.getOwnPropertyDescriptor): (shouldBe.JSON.stringify.Object.getOwnPropertyNames.Array.prototype.filter.sort): * stress/private-name-as-anonymous-builtin.js: Added. (shouldBe): (NotPromise): Source/JavaScriptCore: Currently builtin JSFunction uses direct property for "name", which is different from usual JSFunction. Usual JSFunction uses reifying system for "name". We would like to apply this reifying mechanism to builtin JSFunction to simplify code and drop JSFunction::createBuiltinFunction. We would like to store the "correct" name in FunctionExecutable. For example, we would like to store the name like "get [Symbol.species]" to FunctionExecutable instead of specifying name when creating JSFunction. To do so, we add a new annotations, @Getter and @overriddenName. When @Getter is specified, the name of the function becomes "get xxx". And when @overriddenName="xxx" is specified, the name of the function becomes "xxx". We also treat @xxx as anonymous builtin functions that cannot be achieved in the current JS without privilege. * Scripts/builtins/builtins_generate_combined_header.py: (generate_section_for_code_table_macro): * Scripts/builtins/builtins_generate_combined_implementation.py: (BuiltinsCombinedImplementationGenerator.generate_secondary_header_includes): * Scripts/builtins/builtins_generate_separate_header.py: (generate_section_for_code_table_macro): * Scripts/builtins/builtins_generate_separate_implementation.py: (BuiltinsSeparateImplementationGenerator.generate_secondary_header_includes): * Scripts/builtins/builtins_model.py: (BuiltinFunction.__init__): (BuiltinFunction.fromString): * Scripts/builtins/builtins_templates.py: * Scripts/tests/builtins/JavaScriptCore-Builtin.prototype-Combined.js: (overriddenName.string_appeared_here.match): (intrinsic.RegExpTestIntrinsic.test): * Scripts/tests/builtins/JavaScriptCore-Builtin.prototype-Separate.js: (overriddenName.string_appeared_here.match): (intrinsic.RegExpTestIntrinsic.test): * Scripts/tests/builtins/expected/JavaScriptCore-Builtin.Promise-Combined.js-result: * Scripts/tests/builtins/expected/JavaScriptCore-Builtin.Promise-Separate.js-result: * Scripts/tests/builtins/expected/JavaScriptCore-Builtin.prototype-Combined.js-result: * Scripts/tests/builtins/expected/JavaScriptCore-Builtin.prototype-Separate.js-result: * Scripts/tests/builtins/expected/JavaScriptCore-BuiltinConstructor-Combined.js-result: * Scripts/tests/builtins/expected/JavaScriptCore-BuiltinConstructor-Separate.js-result: * Scripts/tests/builtins/expected/JavaScriptCore-InternalClashingNames-Combined.js-result: * Scripts/tests/builtins/expected/WebCore-AnotherGuardedInternalBuiltin-Separate.js-result: * Scripts/tests/builtins/expected/WebCore-ArbitraryConditionalGuard-Separate.js-result: * Scripts/tests/builtins/expected/WebCore-GuardedBuiltin-Separate.js-result: * Scripts/tests/builtins/expected/WebCore-GuardedInternalBuiltin-Separate.js-result: * Scripts/tests/builtins/expected/WebCore-UnguardedBuiltin-Separate.js-result: * Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result: * builtins/AsyncIteratorPrototype.js: (symbolAsyncIteratorGetter): Deleted. * builtins/BuiltinExecutables.cpp: (JSC::BuiltinExecutables::BuiltinExecutables): * builtins/BuiltinExecutables.h: * builtins/BuiltinNames.h: * builtins/FunctionPrototype.js: (symbolHasInstance): Deleted. * builtins/GlobalOperations.js: (globalPrivate.speciesGetter): Deleted. * builtins/IteratorPrototype.js: (symbolIteratorGetter): Deleted. * builtins/PromiseConstructor.js: (all.newResolveElement.return.resolve): (all.newResolveElement): (all): * builtins/PromiseOperations.js: (globalPrivate.newPromiseCapability.executor): (globalPrivate.newPromiseCapability): (globalPrivate.createResolvingFunctions.resolve): (globalPrivate.createResolvingFunctions.reject): (globalPrivate.createResolvingFunctions): * builtins/RegExpPrototype.js: (match): Deleted. (replace): Deleted. (search): Deleted. (split): Deleted. * jsc.cpp: (functionCreateBuiltin): * runtime/AsyncIteratorPrototype.cpp: (JSC::AsyncIteratorPrototype::finishCreation): * runtime/FunctionPrototype.cpp: (JSC::FunctionPrototype::addFunctionProperties): * runtime/IteratorPrototype.cpp: (JSC::IteratorPrototype::finishCreation): * runtime/JSFunction.cpp: (JSC::JSFunction::finishCreation): (JSC::JSFunction::getOwnNonIndexPropertyNames): (JSC::JSFunction::reifyLazyBoundNameIfNeeded): (JSC::JSFunction::createBuiltinFunction): Deleted. * runtime/JSFunction.h: * runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::init): * runtime/JSObject.cpp: (JSC::JSObject::putDirectBuiltinFunction): (JSC::JSObject::putDirectBuiltinFunctionWithoutTransition): * runtime/JSTypedArrayViewPrototype.cpp: (JSC::JSTypedArrayViewPrototype::finishCreation): * runtime/Lookup.cpp: (JSC::reifyStaticAccessor): * runtime/MapPrototype.cpp: (JSC::MapPrototype::finishCreation): * runtime/RegExpPrototype.cpp: (JSC::RegExpPrototype::finishCreation): * runtime/SetPrototype.cpp: (JSC::SetPrototype::finishCreation): Source/WebCore: Test: js/dom/builtin-getter-name.html Use @Getter for JSBuiltin getters. * Modules/fetch/FetchResponse.js: (bodyUsed): Deleted. (body): Deleted. * Modules/streams/ReadableByteStreamController.js: (byobRequest): Deleted. (desiredSize): Deleted. * Modules/streams/ReadableStream.js: (locked): Deleted. * Modules/streams/ReadableStreamBYOBReader.js: (closed): Deleted. * Modules/streams/ReadableStreamBYOBRequest.js: (view): Deleted. * Modules/streams/ReadableStreamDefaultController.js: (desiredSize): Deleted. * Modules/streams/ReadableStreamDefaultReader.js: (closed): Deleted. * Modules/streams/WritableStream.js: (closed): Deleted. (ready): Deleted. (state): Deleted. * bindings/js/JSDOMBuiltinConstructor.h: (WebCore::JSDOMBuiltinConstructor<JSClass>::finishCreation): LayoutTests: * js/dom/builtin-getter-name-expected.txt: Added. * js/dom/builtin-getter-name.html: Added. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@221417 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent bb33262 commit 7f5b1c3

File tree

62 files changed

+872
-184
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+872
-184
lines changed

JSTests/ChangeLog

+17
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
1+
2017-08-31 Yusuke Suzuki <[email protected]>
2+
3+
[JSC] Use reifying system for "name" property of builtin JSFunction
4+
https://bugs.webkit.org/show_bug.cgi?id=175260
5+
6+
Reviewed by Saam Barati.
7+
8+
* stress/accessors-get-set-prefix.js:
9+
* stress/builtin-function-name.js: Added.
10+
(shouldBe):
11+
(shouldThrow):
12+
(shouldBe.JSON.stringify.Object.getOwnPropertyDescriptor):
13+
(shouldBe.JSON.stringify.Object.getOwnPropertyNames.Array.prototype.filter.sort):
14+
* stress/private-name-as-anonymous-builtin.js: Added.
15+
(shouldBe):
16+
(NotPromise):
17+
118
2017-08-30 Saam Barati <[email protected]>
219

320
Unreviewed. Make test stop printing.

JSTests/stress/accessors-get-set-prefix.js

+7
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,15 @@ function tryGetOwnPropertyDescriptorGetName(obj, property, expectedName)
1414
}
1515

1616
tryGetOwnPropertyDescriptorGetName(Array, Symbol.species, "get [Symbol.species]");
17+
tryGetOwnPropertyDescriptorGetName(Map, Symbol.species, "get [Symbol.species]");
18+
tryGetOwnPropertyDescriptorGetName(Set, Symbol.species, "get [Symbol.species]");
19+
tryGetOwnPropertyDescriptorGetName(RegExp, Symbol.species, "get [Symbol.species]");
20+
tryGetOwnPropertyDescriptorGetName(Promise, Symbol.species, "get [Symbol.species]");
1721
tryGetOwnPropertyDescriptorGetName(Map.prototype, "size", "get size");
1822
tryGetOwnPropertyDescriptorGetName(Set.prototype, "size", "get size");
23+
tryGetOwnPropertyDescriptorGetName(RegExp.prototype, "flags", "get flags");
24+
tryGetOwnPropertyDescriptorGetName(RegExp.prototype, "sticky", "get sticky");
25+
tryGetOwnPropertyDescriptorGetName(RegExp.prototype, "source", "get source");
1926

2027
if (Object.__lookupGetter__("__proto__").name !== "get __proto__")
2128
throw "Expected Object __proto__ getter to be named \"get __proto\"";
+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
function shouldBe(actual, expected) {
2+
if (actual !== expected)
3+
throw new Error('bad value: ' + 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+
{
22+
shouldBe(JSON.stringify(Object.getOwnPropertyNames(Array.prototype.filter).sort()), `["length","name"]`);
23+
shouldBe(Array.prototype.filter.name, "filter");
24+
shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(Array.prototype.filter, 'name')), `{"value":"filter","writable":false,"enumerable":false,"configurable":true}`);
25+
shouldBe(delete Array.prototype.filter.name, true);
26+
shouldBe(JSON.stringify(Object.getOwnPropertyNames(Array.prototype.filter).sort()), `["length"]`);
27+
}
28+
29+
{
30+
shouldThrow(function () {
31+
"use strict";
32+
Array.prototype.forEach.name = 42;
33+
}, `TypeError: Attempted to assign to readonly property.`);
34+
}
35+
36+
{
37+
var resolve = null;
38+
var reject = null;
39+
new Promise(function (arg0, arg1) {
40+
resolve = arg0;
41+
reject = arg1;
42+
});
43+
shouldBe(Object.getOwnPropertyDescriptor(resolve, 'name'), undefined);
44+
shouldBe(Object.getOwnPropertyDescriptor(reject, 'name'), undefined);
45+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
function shouldBe(actual, expected)
2+
{
3+
if (actual !== expected)
4+
throw new Error('bad value: ' + actual);
5+
}
6+
7+
var executorFunction;
8+
function NotPromise(executor) {
9+
executorFunction = executor;
10+
executor(function(){}, function(){});
11+
}
12+
Promise.resolve.call(NotPromise);
13+
14+
shouldBe(JSON.stringify(Object.getOwnPropertyNames(executorFunction).sort()), `["length"]`);
15+
shouldBe(executorFunction.hasOwnProperty('name'), false);
16+
shouldBe(executorFunction.name, ``);
17+
shouldBe(delete executorFunction.name, true);

LayoutTests/ChangeLog

+10
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
2017-08-31 Yusuke Suzuki <[email protected]>
2+
3+
[JSC] Use reifying system for "name" property of builtin JSFunction
4+
https://bugs.webkit.org/show_bug.cgi?id=175260
5+
6+
Reviewed by Saam Barati.
7+
8+
* js/dom/builtin-getter-name-expected.txt: Added.
9+
* js/dom/builtin-getter-name.html: Added.
10+
111
2017-08-30 Chris Dumez <[email protected]>
212

313
Implement FileSystemDirectoryReader.readEntries()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
PASS FetchResponse property names
3+
PASS ReadableStream property names
4+
PASS ReadableStreamDefaultReader property names
5+
PASS ReadableStreamBYOBReader property names
6+
PASS WritableStream property names
7+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<title>Builtin JS getter names</title>
5+
<script src="../../resources/testharness.js"></script>
6+
<script src="../../resources/testharnessreport.js"></script>
7+
</head>
8+
<body>
9+
<script>
10+
11+
function tryGetOwnPropertyDescriptorGetName(obj, property, expectedName)
12+
{
13+
let descriptor = Object.getOwnPropertyDescriptor(obj, property);
14+
assert_true(!!descriptor, `Should find property descriptor for ${property}`);
15+
16+
let getter = descriptor.get;
17+
assert_true(!!getter, `Should find getter for ${property}`);
18+
19+
let getterName = getter.name;
20+
assert_equals(getterName, expectedName);
21+
}
22+
23+
test(() => {
24+
tryGetOwnPropertyDescriptorGetName(Response.prototype, 'body', 'get body');
25+
tryGetOwnPropertyDescriptorGetName(Response.prototype, 'bodyUsed', 'get bodyUsed');
26+
}, 'FetchResponse property names');
27+
28+
test(() => {
29+
tryGetOwnPropertyDescriptorGetName(ReadableStream.prototype, 'locked', 'get locked');
30+
}, 'ReadableStream property names');
31+
32+
test(() => {
33+
let stream = new ReadableStream();
34+
let reader = stream.getReader();
35+
tryGetOwnPropertyDescriptorGetName(reader.__proto__, 'closed', 'get closed');
36+
}, 'ReadableStreamDefaultReader property names');
37+
38+
test(() => {
39+
let stream = new ReadableStream({
40+
start: function(c) {
41+
controller = c;
42+
},
43+
type: "bytes"
44+
});
45+
let reader = stream.getReader({ mode: 'byob' });
46+
tryGetOwnPropertyDescriptorGetName(reader.__proto__, 'closed', 'get closed');
47+
}, 'ReadableStreamBYOBReader property names');
48+
49+
test(() => {
50+
tryGetOwnPropertyDescriptorGetName(WritableStream.prototype, 'closed', 'get closed');
51+
tryGetOwnPropertyDescriptorGetName(WritableStream.prototype, 'ready', 'get ready');
52+
tryGetOwnPropertyDescriptorGetName(WritableStream.prototype, 'state', 'get state');
53+
}, 'WritableStream property names');
54+
55+
</script>
56+
</body>
57+
</html>

Source/JavaScriptCore/ChangeLog

+110
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,113 @@
1+
2017-08-31 Yusuke Suzuki <[email protected]>
2+
3+
[JSC] Use reifying system for "name" property of builtin JSFunction
4+
https://bugs.webkit.org/show_bug.cgi?id=175260
5+
6+
Reviewed by Saam Barati.
7+
8+
Currently builtin JSFunction uses direct property for "name", which is different
9+
from usual JSFunction. Usual JSFunction uses reifying system for "name". We would like
10+
to apply this reifying mechanism to builtin JSFunction to simplify code and drop
11+
JSFunction::createBuiltinFunction.
12+
13+
We would like to store the "correct" name in FunctionExecutable. For example,
14+
we would like to store the name like "get [Symbol.species]" to FunctionExecutable
15+
instead of specifying name when creating JSFunction. To do so, we add a new
16+
annotations, @getter and @overriddenName. When @getter is specified, the name of
17+
the function becomes "get xxx". And when @overriddenName="xxx" is specified,
18+
the name of the function becomes "xxx".
19+
20+
We also treat @xxx as anonymous builtin functions that cannot be achieved in
21+
the current JS without privilege.
22+
23+
* Scripts/builtins/builtins_generate_combined_header.py:
24+
(generate_section_for_code_table_macro):
25+
* Scripts/builtins/builtins_generate_combined_implementation.py:
26+
(BuiltinsCombinedImplementationGenerator.generate_secondary_header_includes):
27+
* Scripts/builtins/builtins_generate_separate_header.py:
28+
(generate_section_for_code_table_macro):
29+
* Scripts/builtins/builtins_generate_separate_implementation.py:
30+
(BuiltinsSeparateImplementationGenerator.generate_secondary_header_includes):
31+
* Scripts/builtins/builtins_model.py:
32+
(BuiltinFunction.__init__):
33+
(BuiltinFunction.fromString):
34+
* Scripts/builtins/builtins_templates.py:
35+
* Scripts/tests/builtins/JavaScriptCore-Builtin.prototype-Combined.js:
36+
(overriddenName.string_appeared_here.match):
37+
(intrinsic.RegExpTestIntrinsic.test):
38+
* Scripts/tests/builtins/JavaScriptCore-Builtin.prototype-Separate.js:
39+
(overriddenName.string_appeared_here.match):
40+
(intrinsic.RegExpTestIntrinsic.test):
41+
* Scripts/tests/builtins/expected/JavaScriptCore-Builtin.Promise-Combined.js-result:
42+
* Scripts/tests/builtins/expected/JavaScriptCore-Builtin.Promise-Separate.js-result:
43+
* Scripts/tests/builtins/expected/JavaScriptCore-Builtin.prototype-Combined.js-result:
44+
* Scripts/tests/builtins/expected/JavaScriptCore-Builtin.prototype-Separate.js-result:
45+
* Scripts/tests/builtins/expected/JavaScriptCore-BuiltinConstructor-Combined.js-result:
46+
* Scripts/tests/builtins/expected/JavaScriptCore-BuiltinConstructor-Separate.js-result:
47+
* Scripts/tests/builtins/expected/JavaScriptCore-InternalClashingNames-Combined.js-result:
48+
* Scripts/tests/builtins/expected/WebCore-AnotherGuardedInternalBuiltin-Separate.js-result:
49+
* Scripts/tests/builtins/expected/WebCore-ArbitraryConditionalGuard-Separate.js-result:
50+
* Scripts/tests/builtins/expected/WebCore-GuardedBuiltin-Separate.js-result:
51+
* Scripts/tests/builtins/expected/WebCore-GuardedInternalBuiltin-Separate.js-result:
52+
* Scripts/tests/builtins/expected/WebCore-UnguardedBuiltin-Separate.js-result:
53+
* Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result:
54+
* builtins/AsyncIteratorPrototype.js:
55+
(symbolAsyncIteratorGetter): Deleted.
56+
* builtins/BuiltinExecutables.cpp:
57+
(JSC::BuiltinExecutables::BuiltinExecutables):
58+
* builtins/BuiltinExecutables.h:
59+
* builtins/BuiltinNames.h:
60+
* builtins/FunctionPrototype.js:
61+
(symbolHasInstance): Deleted.
62+
* builtins/GlobalOperations.js:
63+
(globalPrivate.speciesGetter): Deleted.
64+
* builtins/IteratorPrototype.js:
65+
(symbolIteratorGetter): Deleted.
66+
* builtins/PromiseConstructor.js:
67+
(all.newResolveElement.return.resolve):
68+
(all.newResolveElement):
69+
(all):
70+
* builtins/PromiseOperations.js:
71+
(globalPrivate.newPromiseCapability.executor):
72+
(globalPrivate.newPromiseCapability):
73+
(globalPrivate.createResolvingFunctions.resolve):
74+
(globalPrivate.createResolvingFunctions.reject):
75+
(globalPrivate.createResolvingFunctions):
76+
* builtins/RegExpPrototype.js:
77+
(match): Deleted.
78+
(replace): Deleted.
79+
(search): Deleted.
80+
(split): Deleted.
81+
* jsc.cpp:
82+
(functionCreateBuiltin):
83+
* runtime/AsyncIteratorPrototype.cpp:
84+
(JSC::AsyncIteratorPrototype::finishCreation):
85+
* runtime/FunctionPrototype.cpp:
86+
(JSC::FunctionPrototype::addFunctionProperties):
87+
* runtime/IteratorPrototype.cpp:
88+
(JSC::IteratorPrototype::finishCreation):
89+
* runtime/JSFunction.cpp:
90+
(JSC::JSFunction::finishCreation):
91+
(JSC::JSFunction::getOwnNonIndexPropertyNames):
92+
(JSC::JSFunction::reifyLazyBoundNameIfNeeded):
93+
(JSC::JSFunction::createBuiltinFunction): Deleted.
94+
* runtime/JSFunction.h:
95+
* runtime/JSGlobalObject.cpp:
96+
(JSC::JSGlobalObject::init):
97+
* runtime/JSObject.cpp:
98+
(JSC::JSObject::putDirectBuiltinFunction):
99+
(JSC::JSObject::putDirectBuiltinFunctionWithoutTransition):
100+
* runtime/JSTypedArrayViewPrototype.cpp:
101+
(JSC::JSTypedArrayViewPrototype::finishCreation):
102+
* runtime/Lookup.cpp:
103+
(JSC::reifyStaticAccessor):
104+
* runtime/MapPrototype.cpp:
105+
(JSC::MapPrototype::finishCreation):
106+
* runtime/RegExpPrototype.cpp:
107+
(JSC::RegExpPrototype::finishCreation):
108+
* runtime/SetPrototype.cpp:
109+
(JSC::SetPrototype::finishCreation):
110+
1111
2017-08-30 Ryan Haddad <[email protected]>
2112

3113
Unreviewed, rolling out r221327.

Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,11 @@ def generate_section_for_code_table_macro(self):
123123
for function in self.model().all_functions():
124124
function_args = {
125125
'funcName': function.function_name,
126+
'overriddenName': function.overridden_name,
126127
'codeName': BuiltinsGenerator.mangledNameForFunction(function) + 'Code',
127128
}
128129

129-
lines.append(" macro(%(codeName)s, %(funcName)s, s_%(codeName)sLength) \\" % function_args)
130+
lines.append(" macro(%(codeName)s, %(funcName)s, %(overriddenName)s, s_%(codeName)sLength) \\" % function_args)
130131
return '\n'.join(lines)
131132

132133
def generate_section_for_code_name_macro(self):

Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py

+3
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@ def generate_secondary_header_includes(self):
8989
(["JavaScriptCore", "WebCore"],
9090
("JavaScriptCore", "runtime/VM.h"),
9191
),
92+
(["JavaScriptCore", "WebCore"],
93+
("JavaScriptCore", "runtime/IdentifierInlines.h"),
94+
),
9295
(["JavaScriptCore", "WebCore"],
9396
("JavaScriptCore", "runtime/Intrinsic.h"),
9497
),

Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,11 @@ def generate_section_for_code_table_macro(self):
172172
for function in self.object.functions:
173173
function_args = {
174174
'funcName': function.function_name,
175+
'overriddenName': function.overridden_name,
175176
'codeName': BuiltinsGenerator.mangledNameForFunction(function) + 'Code',
176177
}
177178

178-
lines.append(" macro(%(codeName)s, %(funcName)s, s_%(codeName)sLength) \\" % function_args)
179+
lines.append(" macro(%(codeName)s, %(funcName)s, %(overriddenName)s, s_%(codeName)sLength) \\" % function_args)
179180
return '\n'.join(lines)
180181

181182
def generate_section_for_code_name_macro(self):

Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py

+3
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,9 @@ def generate_secondary_header_includes(self):
101101
(["WebCore"],
102102
("WebCore", "bindings/js/WebCoreJSClientData.h"),
103103
),
104+
(["JavaScriptCore", "WebCore"],
105+
("JavaScriptCore", "runtime/IdentifierInlines.h"),
106+
),
104107
(["JavaScriptCore", "WebCore"],
105108
("JavaScriptCore", "runtime/Intrinsic.h"),
106109
),

0 commit comments

Comments
 (0)