Skip to content

Commit 5771dd4

Browse files
committed
Propagate the source origin as much as possible
https://bugs.webkit.org/show_bug.cgi?id=166348 Reviewed by Darin Adler. JSTests: * stress/source-origin.js: Added. (shouldBe): Source/JavaScriptCore: This patch introduces CallFrame::callerSourceOrigin, SourceOrigin class and SourceProvider::m_sourceOrigin. CallFrame::callerSourceOrigin returns an appropriate SourceOrigin if possible. If we cannot find the appropriate one, we just return null SourceOrigin. This paves the way for implementing the module dynamic-import[1]. When the import operator is evaluated, it will resolve the module specifier with this propagated source origin of the caller function. To support import operator inside the dynamic code generation functions (like `eval`, `new Function`, indirect call to `eval`), we need to propagate the caller's source origin to the generated source code. We do not use sourceURL for that purpose. This is because we would like to keep sourceURL for `eval` / `new Function` null. This sourceURL will be used for the stack dump for errors with line/column numbers. Dumping the caller's sourceURL with line/column numbers are meaningless. So we would like to keep it null while we would like to propagate SourceOrigin for dynamic imports. [1]: https://github.com/tc39/proposal-dynamic-import * API/JSBase.cpp: (JSEvaluateScript): (JSCheckScriptSyntax): * API/JSObjectRef.cpp: (JSObjectMakeFunction): * API/JSScriptRef.cpp: (OpaqueJSScript::create): (OpaqueJSScript::vm): (OpaqueJSScript::OpaqueJSScript): (parseScript): * JavaScriptCore.xcodeproj/project.pbxproj: * Scripts/builtins/builtins_templates.py: * 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/BuiltinExecutables.cpp: (JSC::BuiltinExecutables::BuiltinExecutables): (JSC::BuiltinExecutables::createDefaultConstructor): * debugger/DebuggerCallFrame.cpp: (JSC::DebuggerCallFrame::evaluateWithScopeExtension): * inspector/InjectedScriptManager.cpp: (Inspector::InjectedScriptManager::createInjectedScript): * inspector/JSInjectedScriptHost.cpp: (Inspector::JSInjectedScriptHost::evaluateWithScopeExtension): * inspector/agents/InspectorRuntimeAgent.cpp: (Inspector::InspectorRuntimeAgent::parse): * interpreter/CallFrame.cpp: (JSC::CallFrame::callerSourceOrigin): * interpreter/CallFrame.h: * interpreter/Interpreter.cpp: (JSC::eval): * jsc.cpp: (jscSource): (GlobalObject::finishCreation): (extractDirectoryName): (currentWorkingDirectory): (GlobalObject::moduleLoaderResolve): (functionRunString): (functionLoadString): (functionCallerSourceOrigin): (functionCreateBuiltin): (functionCheckModuleSyntax): (runInteractive): * parser/SourceCode.h: (JSC::makeSource): * parser/SourceProvider.cpp: (JSC::SourceProvider::SourceProvider): * parser/SourceProvider.h: (JSC::SourceProvider::sourceOrigin): (JSC::StringSourceProvider::create): (JSC::StringSourceProvider::StringSourceProvider): (JSC::WebAssemblySourceProvider::create): (JSC::WebAssemblySourceProvider::WebAssemblySourceProvider): * runtime/FunctionConstructor.cpp: (JSC::constructFunction): (JSC::constructFunctionSkippingEvalEnabledCheck): * runtime/FunctionConstructor.h: * runtime/JSGlobalObjectFunctions.cpp: (JSC::globalFuncEval): * runtime/ModuleLoaderPrototype.cpp: (JSC::moduleLoaderPrototypeParseModule): * runtime/ScriptExecutable.h: (JSC::ScriptExecutable::sourceOrigin): * runtime/SourceOrigin.h: Added. (JSC::SourceOrigin::SourceOrigin): (JSC::SourceOrigin::string): (JSC::SourceOrigin::isNull): * tools/FunctionOverrides.cpp: (JSC::initializeOverrideInfo): Source/WebCore: * bindings/js/CachedScriptSourceProvider.h: (WebCore::CachedScriptSourceProvider::CachedScriptSourceProvider): * bindings/js/JSLazyEventListener.cpp: (WebCore::JSLazyEventListener::initializeJSFunction): * bindings/js/ScriptSourceCode.h: (WebCore::ScriptSourceCode::ScriptSourceCode): * bridge/NP_jsobject.cpp: (_NPN_Evaluate): * bridge/objc/WebScriptObject.mm: (-[WebScriptObject evaluateWebScript:]): Source/WebKit/mac: * Plugins/Hosted/NetscapePluginInstanceProxy.mm: (WebKit::NetscapePluginInstanceProxy::evaluate): Source/WebKit/win: * Plugins/PluginPackage.cpp: (WebCore::NPN_Evaluate): (WebCore::makeSource): Deleted. Source/WebKit2: * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: (WebKit::NPRuntimeObjectMap::evaluate): Canonical link: https://commits.webkit.org/183753@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210149 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 2828f4c commit 5771dd4

45 files changed

Lines changed: 401 additions & 108 deletions

Some content is hidden

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

‎JSTests/ChangeLog‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
2016-12-25 Yusuke Suzuki <utatane.tea@gmail.com>
2+
3+
Propagate the source origin as much as possible
4+
https://bugs.webkit.org/show_bug.cgi?id=166348
5+
6+
Reviewed by Darin Adler.
7+
8+
* stress/source-origin.js: Added.
9+
(shouldBe):
10+
111
2016-12-24 Caio Lima <ticaiolima@gmail.com>
212

313
[test262] Fixing mapped arguments object property test case

‎JSTests/stress/source-origin.js‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
function shouldBe(actual, expected) {
2+
if (actual !== expected)
3+
throw new Error('bad value: ' + actual);
4+
}
5+
6+
shouldBe(callerSourceOrigin().endsWith('source-origin.js'), true);
7+
shouldBe([ 0 ].map(callerSourceOrigin)[0].endsWith('source-origin.js'), true);
8+
shouldBe(eval(`callerSourceOrigin()`).endsWith('source-origin.js'), true);
9+
shouldBe((0, eval)(`callerSourceOrigin()`).endsWith('source-origin.js'), true);
10+
shouldBe((new Function(`return callerSourceOrigin()`))().endsWith('source-origin.js'), true);
11+
shouldBe((Function(`return callerSourceOrigin()`))().endsWith('source-origin.js'), true);

‎Source/JavaScriptCore/API/JSBase.cpp‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ JSValueRef JSEvaluateScript(JSContextRef ctx, JSStringRef script, JSObjectRef th
6262

6363
// evaluate sets "this" to the global object if it is NULL
6464
JSGlobalObject* globalObject = exec->vmEntryGlobalObject();
65-
SourceCode source = makeSource(script->string(), sourceURL ? sourceURL->string() : String(), TextPosition(OrdinalNumber::fromOneBasedInt(startingLineNumber), OrdinalNumber()));
65+
auto sourceURLString = sourceURL ? sourceURL->string() : String();
66+
SourceCode source = makeSource(script->string(), SourceOrigin { sourceURLString }, sourceURLString, TextPosition(OrdinalNumber::fromOneBasedInt(startingLineNumber), OrdinalNumber()));
6667

6768
NakedPtr<Exception> evaluationException;
6869
JSValue returnValue = profiledEvaluate(globalObject->globalExec(), ProfilingReason::API, source, jsThisObject, evaluationException);
@@ -99,7 +100,8 @@ bool JSCheckScriptSyntax(JSContextRef ctx, JSStringRef script, JSStringRef sourc
99100

100101
startingLineNumber = std::max(1, startingLineNumber);
101102

102-
SourceCode source = makeSource(script->string(), sourceURL ? sourceURL->string() : String(), TextPosition(OrdinalNumber::fromOneBasedInt(startingLineNumber), OrdinalNumber()));
103+
auto sourceURLString = sourceURL ? sourceURL->string() : String();
104+
SourceCode source = makeSource(script->string(), SourceOrigin { sourceURLString }, sourceURLString, TextPosition(OrdinalNumber::fromOneBasedInt(startingLineNumber), OrdinalNumber()));
103105

104106
JSValue syntaxException;
105107
bool isValidSyntax = checkSyntax(exec->vmEntryGlobalObject()->globalExec(), source, &syntaxException);

‎Source/JavaScriptCore/API/JSObjectRef.cpp‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,8 @@ JSObjectRef JSObjectMakeFunction(JSContextRef ctx, JSStringRef name, unsigned pa
146146
args.append(jsString(exec, parameterNames[i]->string()));
147147
args.append(jsString(exec, body->string()));
148148

149-
JSObject* result = constructFunction(exec, exec->lexicalGlobalObject(), args, nameID, sourceURL ? sourceURL->string() : String(), TextPosition(OrdinalNumber::fromOneBasedInt(startingLineNumber), OrdinalNumber()));
149+
auto sourceURLString = sourceURL ? sourceURL->string() : String();
150+
JSObject* result = constructFunction(exec, exec->lexicalGlobalObject(), args, nameID, SourceOrigin { sourceURLString }, sourceURLString, TextPosition(OrdinalNumber::fromOneBasedInt(startingLineNumber), OrdinalNumber()));
150151
if (handleExceptionIfNeeded(exec, exception) == ExceptionStatus::DidThrow)
151152
result = 0;
152153
return toRef(result);

‎Source/JavaScriptCore/API/JSScriptRef.cpp‎

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ using namespace JSC;
4141

4242
struct OpaqueJSScript : public SourceProvider {
4343
public:
44-
static WTF::RefPtr<OpaqueJSScript> create(VM* vm, const String& url, int startingLineNumber, const String& source)
44+
static WTF::RefPtr<OpaqueJSScript> create(VM& vm, const SourceOrigin& sourceOrigin, const String& url, int startingLineNumber, const String& source)
4545
{
46-
return WTF::adoptRef(*new OpaqueJSScript(vm, url, startingLineNumber, source));
46+
return WTF::adoptRef(*new OpaqueJSScript(vm, sourceOrigin, url, startingLineNumber, source));
4747
}
4848

4949
unsigned hash() const override
@@ -56,26 +56,26 @@ struct OpaqueJSScript : public SourceProvider {
5656
return m_source.get();
5757
}
5858

59-
VM* vm() const { return m_vm; }
59+
VM& vm() const { return m_vm; }
6060

6161
private:
62-
OpaqueJSScript(VM* vm, const String& url, int startingLineNumber, const String& source)
63-
: SourceProvider(url, TextPosition(OrdinalNumber::fromOneBasedInt(startingLineNumber), OrdinalNumber()), SourceProviderSourceType::Program)
62+
OpaqueJSScript(VM& vm, const SourceOrigin& sourceOrigin, const String& url, int startingLineNumber, const String& source)
63+
: SourceProvider(sourceOrigin, url, TextPosition(OrdinalNumber::fromOneBasedInt(startingLineNumber), OrdinalNumber()), SourceProviderSourceType::Program)
6464
, m_vm(vm)
6565
, m_source(source.isNull() ? *StringImpl::empty() : *source.impl())
6666
{
6767
}
6868

6969
virtual ~OpaqueJSScript() { }
7070

71-
VM* m_vm;
71+
VM& m_vm;
7272
Ref<StringImpl> m_source;
7373
};
7474

75-
static bool parseScript(VM* vm, const SourceCode& source, ParserError& error)
75+
static bool parseScript(VM& vm, const SourceCode& source, ParserError& error)
7676
{
7777
return !!JSC::parse<JSC::ProgramNode>(
78-
vm, source, Identifier(), JSParserBuiltinMode::NotBuiltin,
78+
&vm, source, Identifier(), JSParserBuiltinMode::NotBuiltin,
7979
JSParserStrictMode::NotStrict, JSParserScriptMode::Classic, SourceParseMode::ProgramMode, SuperBinding::NotNeeded,
8080
error);
8181
}
@@ -84,16 +84,17 @@ extern "C" {
8484

8585
JSScriptRef JSScriptCreateReferencingImmortalASCIIText(JSContextGroupRef contextGroup, JSStringRef url, int startingLineNumber, const char* source, size_t length, JSStringRef* errorMessage, int* errorLine)
8686
{
87-
VM* vm = toJS(contextGroup);
88-
JSLockHolder locker(vm);
87+
auto& vm = *toJS(contextGroup);
88+
JSLockHolder locker(&vm);
8989
for (size_t i = 0; i < length; i++) {
9090
if (!isASCII(source[i]))
9191
return 0;
9292
}
9393

9494
startingLineNumber = std::max(1, startingLineNumber);
9595

96-
auto result = OpaqueJSScript::create(vm, url ? url->string() : String(), startingLineNumber, String(StringImpl::createFromLiteral(source, length)));
96+
auto sourceURLString = url ? url->string() : String();
97+
auto result = OpaqueJSScript::create(vm, SourceOrigin { sourceURLString }, sourceURLString, startingLineNumber, String(StringImpl::createFromLiteral(source, length)));
9798

9899
ParserError error;
99100
if (!parseScript(vm, SourceCode(result), error)) {
@@ -109,12 +110,13 @@ JSScriptRef JSScriptCreateReferencingImmortalASCIIText(JSContextGroupRef context
109110

110111
JSScriptRef JSScriptCreateFromString(JSContextGroupRef contextGroup, JSStringRef url, int startingLineNumber, JSStringRef source, JSStringRef* errorMessage, int* errorLine)
111112
{
112-
VM* vm = toJS(contextGroup);
113-
JSLockHolder locker(vm);
113+
auto& vm = *toJS(contextGroup);
114+
JSLockHolder locker(&vm);
114115

115116
startingLineNumber = std::max(1, startingLineNumber);
116117

117-
auto result = OpaqueJSScript::create(vm, url ? url->string() : String(), startingLineNumber, source->string());
118+
auto sourceURLString = url ? url->string() : String();
119+
auto result = OpaqueJSScript::create(vm, SourceOrigin { sourceURLString }, sourceURLString, startingLineNumber, source->string());
118120

119121
ParserError error;
120122
if (!parseScript(vm, SourceCode(result), error)) {
@@ -130,21 +132,21 @@ JSScriptRef JSScriptCreateFromString(JSContextGroupRef contextGroup, JSStringRef
130132

131133
void JSScriptRetain(JSScriptRef script)
132134
{
133-
JSLockHolder locker(script->vm());
135+
JSLockHolder locker(&script->vm());
134136
script->ref();
135137
}
136138

137139
void JSScriptRelease(JSScriptRef script)
138140
{
139-
JSLockHolder locker(script->vm());
141+
JSLockHolder locker(&script->vm());
140142
script->deref();
141143
}
142144

143145
JSValueRef JSScriptEvaluate(JSContextRef context, JSScriptRef script, JSValueRef thisValueRef, JSValueRef* exception)
144146
{
145147
ExecState* exec = toJS(context);
146148
JSLockHolder locker(exec);
147-
if (script->vm() != &exec->vm()) {
149+
if (&script->vm() != &exec->vm()) {
148150
RELEASE_ASSERT_NOT_REACHED();
149151
return 0;
150152
}

‎Source/JavaScriptCore/ChangeLog‎

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,106 @@
1+
2016-12-25 Yusuke Suzuki <utatane.tea@gmail.com>
2+
3+
Propagate the source origin as much as possible
4+
https://bugs.webkit.org/show_bug.cgi?id=166348
5+
6+
Reviewed by Darin Adler.
7+
8+
This patch introduces CallFrame::callerSourceOrigin, SourceOrigin class
9+
and SourceProvider::m_sourceOrigin. CallFrame::callerSourceOrigin returns
10+
an appropriate SourceOrigin if possible. If we cannot find the appropriate
11+
one, we just return null SourceOrigin.
12+
13+
This paves the way for implementing the module dynamic-import[1].
14+
When the import operator is evaluated, it will resolve the module
15+
specifier with this propagated source origin of the caller function.
16+
17+
To support import operator inside the dynamic code generation
18+
functions (like `eval`, `new Function`, indirect call to `eval`),
19+
we need to propagate the caller's source origin to the generated
20+
source code.
21+
22+
We do not use sourceURL for that purpose. This is because we
23+
would like to keep sourceURL for `eval` / `new Function` null.
24+
This sourceURL will be used for the stack dump for errors with line/column
25+
numbers. Dumping the caller's sourceURL with line/column numbers are
26+
meaningless. So we would like to keep it null while we would like
27+
to propagate SourceOrigin for dynamic imports.
28+
29+
[1]: https://github.com/tc39/proposal-dynamic-import
30+
31+
* API/JSBase.cpp:
32+
(JSEvaluateScript):
33+
(JSCheckScriptSyntax):
34+
* API/JSObjectRef.cpp:
35+
(JSObjectMakeFunction):
36+
* API/JSScriptRef.cpp:
37+
(OpaqueJSScript::create):
38+
(OpaqueJSScript::vm):
39+
(OpaqueJSScript::OpaqueJSScript):
40+
(parseScript):
41+
* JavaScriptCore.xcodeproj/project.pbxproj:
42+
* Scripts/builtins/builtins_templates.py:
43+
* Scripts/tests/builtins/expected/WebCore-AnotherGuardedInternalBuiltin-Separate.js-result:
44+
* Scripts/tests/builtins/expected/WebCore-ArbitraryConditionalGuard-Separate.js-result:
45+
* Scripts/tests/builtins/expected/WebCore-GuardedBuiltin-Separate.js-result:
46+
* Scripts/tests/builtins/expected/WebCore-GuardedInternalBuiltin-Separate.js-result:
47+
* Scripts/tests/builtins/expected/WebCore-UnguardedBuiltin-Separate.js-result:
48+
* Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result:
49+
* builtins/BuiltinExecutables.cpp:
50+
(JSC::BuiltinExecutables::BuiltinExecutables):
51+
(JSC::BuiltinExecutables::createDefaultConstructor):
52+
* debugger/DebuggerCallFrame.cpp:
53+
(JSC::DebuggerCallFrame::evaluateWithScopeExtension):
54+
* inspector/InjectedScriptManager.cpp:
55+
(Inspector::InjectedScriptManager::createInjectedScript):
56+
* inspector/JSInjectedScriptHost.cpp:
57+
(Inspector::JSInjectedScriptHost::evaluateWithScopeExtension):
58+
* inspector/agents/InspectorRuntimeAgent.cpp:
59+
(Inspector::InspectorRuntimeAgent::parse):
60+
* interpreter/CallFrame.cpp:
61+
(JSC::CallFrame::callerSourceOrigin):
62+
* interpreter/CallFrame.h:
63+
* interpreter/Interpreter.cpp:
64+
(JSC::eval):
65+
* jsc.cpp:
66+
(jscSource):
67+
(GlobalObject::finishCreation):
68+
(extractDirectoryName):
69+
(currentWorkingDirectory):
70+
(GlobalObject::moduleLoaderResolve):
71+
(functionRunString):
72+
(functionLoadString):
73+
(functionCallerSourceOrigin):
74+
(functionCreateBuiltin):
75+
(functionCheckModuleSyntax):
76+
(runInteractive):
77+
* parser/SourceCode.h:
78+
(JSC::makeSource):
79+
* parser/SourceProvider.cpp:
80+
(JSC::SourceProvider::SourceProvider):
81+
* parser/SourceProvider.h:
82+
(JSC::SourceProvider::sourceOrigin):
83+
(JSC::StringSourceProvider::create):
84+
(JSC::StringSourceProvider::StringSourceProvider):
85+
(JSC::WebAssemblySourceProvider::create):
86+
(JSC::WebAssemblySourceProvider::WebAssemblySourceProvider):
87+
* runtime/FunctionConstructor.cpp:
88+
(JSC::constructFunction):
89+
(JSC::constructFunctionSkippingEvalEnabledCheck):
90+
* runtime/FunctionConstructor.h:
91+
* runtime/JSGlobalObjectFunctions.cpp:
92+
(JSC::globalFuncEval):
93+
* runtime/ModuleLoaderPrototype.cpp:
94+
(JSC::moduleLoaderPrototypeParseModule):
95+
* runtime/ScriptExecutable.h:
96+
(JSC::ScriptExecutable::sourceOrigin):
97+
* runtime/SourceOrigin.h: Added.
98+
(JSC::SourceOrigin::SourceOrigin):
99+
(JSC::SourceOrigin::string):
100+
(JSC::SourceOrigin::isNull):
101+
* tools/FunctionOverrides.cpp:
102+
(JSC::initializeOverrideInfo):
103+
1104
2016-12-24 Caio Lima <ticaiolima@gmail.com>
2105

3106
[test262] Fixing mapped arguments object property test case

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2361,6 +2361,7 @@
23612361
FED94F2F171E3E2300BE77A4 /* Watchdog.h in Headers */ = {isa = PBXBuildFile; fileRef = FED94F2C171E3E2300BE77A4 /* Watchdog.h */; settings = {ATTRIBUTES = (Private, ); }; };
23622362
FEF040511AAE662D00BD28B0 /* CompareAndSwapTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEF040501AAE662D00BD28B0 /* CompareAndSwapTest.cpp */; };
23632363
FEFD6FC61D5E7992008F2F0B /* JSStringInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = FEFD6FC51D5E7970008F2F0B /* JSStringInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
2364+
2D342F36F7244096804ADB24 /* SourceOrigin.h in Headers */ = {isa = PBXBuildFile; fileRef = 425BA1337E4344E1B269A671 /* SourceOrigin.h */; settings = {ATTRIBUTES = (Private, ); }; };
23642365
/* End PBXBuildFile section */
23652366

23662367
/* Begin PBXContainerItemProxy section */
@@ -4878,6 +4879,7 @@
48784879
FEF040501AAE662D00BD28B0 /* CompareAndSwapTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CompareAndSwapTest.cpp; path = API/tests/CompareAndSwapTest.cpp; sourceTree = "<group>"; };
48794880
FEF040521AAEC4ED00BD28B0 /* CompareAndSwapTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CompareAndSwapTest.h; path = API/tests/CompareAndSwapTest.h; sourceTree = "<group>"; };
48804881
FEFD6FC51D5E7970008F2F0B /* JSStringInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStringInlines.h; sourceTree = "<group>"; };
4882+
425BA1337E4344E1B269A671 /* SourceOrigin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SourceOrigin.h; path = SourceOrigin.h; sourceTree = "<group>"; };
48814883
/* End PBXFileReference section */
48824884

48834885
/* Begin PBXFrameworksBuildPhase section */
@@ -6707,6 +6709,7 @@
67076709
709FB8661AE335C60039D069 /* WeakSetPrototype.h */,
67086710
A7DCB77912E3D90500911940 /* WriteBarrier.h */,
67096711
C2B6D75218A33793004A9301 /* WriteBarrierInlines.h */,
6712+
425BA1337E4344E1B269A671 /* SourceOrigin.h */,
67106713
);
67116714
path = runtime;
67126715
sourceTree = "<group>";
@@ -9075,6 +9078,7 @@
90759078
86704B8812DBA33700A9FE7B /* YarrParser.h in Headers */,
90769079
86704B8A12DBA33700A9FE7B /* YarrPattern.h in Headers */,
90779080
86704B4312DB8A8100A9FE7B /* YarrSyntaxChecker.h in Headers */,
9081+
2D342F36F7244096804ADB24 /* SourceOrigin.h in Headers */,
90789082
);
90799083
runOnlyForDeploymentPostprocessing = 0;
90809084
};

‎Source/JavaScriptCore/Scripts/builtins/builtins_templates.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ class BuiltinsGeneratorTemplates:
132132
explicit ${objectName}BuiltinsWrapper(JSC::VM* vm)
133133
: m_vm(*vm)
134134
${macroPrefix}_FOREACH_${objectMacro}_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES)
135-
#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, length) , m_##name##Source(JSC::makeSource(StringImpl::createFromLiteral(s_##name, length)))
135+
#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, length) , m_##name##Source(JSC::makeSource(StringImpl::createFromLiteral(s_##name, length), { }))
136136
${macroPrefix}_FOREACH_${objectMacro}_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS)
137137
#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS
138138
{

‎Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-AnotherGuardedInternalBuiltin-Separate.js-result‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public:
7070
explicit AnotherGuardedInternalBuiltinBuiltinsWrapper(JSC::VM* vm)
7171
: m_vm(*vm)
7272
WEBCORE_FOREACH_ANOTHERGUARDEDINTERNALBUILTIN_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES)
73-
#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, length) , m_##name##Source(JSC::makeSource(StringImpl::createFromLiteral(s_##name, length)))
73+
#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, length) , m_##name##Source(JSC::makeSource(StringImpl::createFromLiteral(s_##name, length), { }))
7474
WEBCORE_FOREACH_ANOTHERGUARDEDINTERNALBUILTIN_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS)
7575
#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS
7676
{

‎Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-ArbitraryConditionalGuard-Separate.js-result‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public:
7171
explicit ArbitraryConditionalGuardBuiltinsWrapper(JSC::VM* vm)
7272
: m_vm(*vm)
7373
WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES)
74-
#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, length) , m_##name##Source(JSC::makeSource(StringImpl::createFromLiteral(s_##name, length)))
74+
#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, length) , m_##name##Source(JSC::makeSource(StringImpl::createFromLiteral(s_##name, length), { }))
7575
WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS)
7676
#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS
7777
{

0 commit comments

Comments
 (0)