Skip to content
This repository was archived by the owner on Oct 15, 2020. It is now read-only.

Commit c7429c7

Browse files
dilijevchakrabot
authored andcommitted
deps: update ChakraCore to chakra-core/ChakraCore@aec9a9c70a
[1.8>1.9] [MERGE #4651 @dilijev] OS#14101048: Fixes #249: built-in functions should not have caller/arguments (and related fixes) Merge pull request #4651 from dilijev:func-restricted-props Replaces #4639 Several tests and test baselines needed to be updated to reflect the change in behavior. This change improves caller/arguments behavior without regressing any previous Chakra behavior. Chakra still differs from the spec and other engines on some aspects of caller/arguments. See: https://tc39.github.io/ecma262/#sec-forbidden-extensions Fixes #249 Fixes OS#14101048 --- Test262 results strictly improved. Using test262 commit tc39/test262@03da228: Previously 44130 passed, now 44138 passed out of 57102. (Duplicates below are strict and non-strict versions of the tests.) ``` +PASS e:/dd/test262/test262/test/built-ins/Function/prototype/restricted-property-arguments.js +PASS e:/dd/test262/test262/test/built-ins/Function/prototype/restricted-property-arguments.js +PASS e:/dd/test262/test262/test/built-ins/Function/prototype/restricted-property-caller.js +PASS e:/dd/test262/test262/test/built-ins/Function/prototype/restricted-property-caller.js +PASS e:/dd/test262/test262/test/built-ins/ThrowTypeError/forbidden-arguments.js +PASS e:/dd/test262/test262/test/built-ins/ThrowTypeError/forbidden-arguments.js +PASS e:/dd/test262/test262/test/built-ins/ThrowTypeError/forbidden-caller.js +PASS e:/dd/test262/test262/test/built-ins/ThrowTypeError/forbidden-caller.js ``` Reviewed-By: chakrabot <[email protected]>
1 parent 6d92a2a commit c7429c7

24 files changed

+521
-871
lines changed

Diff for: deps/chakrashim/core/lib/Runtime/Library/JavascriptFunction.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -2467,8 +2467,10 @@ void __cdecl _alloca_probe_16()
24672467
this->functionInfo->IsLambda() ||
24682468
this->functionInfo->IsAsync() ||
24692469
this->IsGeneratorFunction() ||
2470-
this->IsBoundFunction() ||
2471-
this->IsStrictMode()
2470+
this->IsStrictMode() ||
2471+
!this->IsScriptFunction() || // -> (BoundFunction || RuntimeFunction) // (RuntimeFunction = Native-defined built-in library functions)
2472+
this->IsLibraryCode() || // JS-defined built-in library functions
2473+
this == this->GetLibrary()->GetFunctionPrototype() // the intrinsic %FunctionPrototype% (original value of Function.prototype)
24722474
);
24732475
}
24742476

Diff for: deps/chakrashim/core/lib/Runtime/Library/JavascriptLibrary.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -2811,6 +2811,11 @@ namespace Js
28112811
functionPrototype->SetConfigurable(PropertyIds::_symbolHasInstance, false);
28122812
}
28132813

2814+
functionPrototype->DynamicObject::SetAccessors(PropertyIds::caller, library->throwTypeErrorRestrictedPropertyAccessorFunction, library->throwTypeErrorRestrictedPropertyAccessorFunction);
2815+
functionPrototype->SetEnumerable(PropertyIds::caller, false);
2816+
functionPrototype->DynamicObject::SetAccessors(PropertyIds::arguments, library->throwTypeErrorRestrictedPropertyAccessorFunction, library->throwTypeErrorRestrictedPropertyAccessorFunction);
2817+
functionPrototype->SetEnumerable(PropertyIds::arguments, false);
2818+
28142819
DebugOnly(CheckRegisteredBuiltIns(builtinFuncs, scriptContext));
28152820

28162821
functionPrototype->SetHasNoEnumerableProperties(true);

Diff for: deps/chakrashim/core/lib/Runtime/Library/JsBuiltInEngineInterfaceExtensionObject.cpp

-2
Original file line numberDiff line numberDiff line change
@@ -349,8 +349,6 @@ namespace Js
349349
scriptFunction->GetFunctionBody()->SetJsBuiltInForceInline();
350350
}
351351
scriptFunction->SetPropertyWithAttributes(PropertyIds::length, TaggedInt::ToVarUnchecked(argumentsCount), PropertyConfigurable, nullptr);
352-
scriptFunction->SetPropertyWithAttributes(PropertyIds::caller, library->nullValue, PropertyNone, nullptr);
353-
scriptFunction->SetPropertyWithAttributes(PropertyIds::arguments, library->nullValue, PropertyNone, nullptr);
354352

355353
scriptFunction->SetConfigurable(PropertyIds::prototype, true);
356354
scriptFunction->DeleteProperty(PropertyIds::prototype, Js::PropertyOperationFlags::PropertyOperation_None);

Diff for: deps/chakrashim/core/test/DebuggerCommon/ES6_intl_simple_attach.js.dbg.baseline

+37-103
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[
22
{
33
"this": {
4-
"Run": "function <large string>",
5-
"x": "undefined undefined"
4+
"x": "undefined undefined",
5+
"Run": "function <large string>"
66
},
77
"arguments": {
88
"#__proto__": "Object {...}",
@@ -22,8 +22,8 @@
2222
}
2323
},
2424
"globals": {
25-
"Run": "function <large string>",
26-
"x": "undefined undefined"
25+
"x": "undefined undefined",
26+
"Run": "function <large string>"
2727
}
2828
},
2929
{
@@ -55,80 +55,58 @@
5555
"is": "function <large string>",
5656
"assign": "function <large string>",
5757
"values": "function <large string>",
58-
"entries": "function <large string>",
59-
"caller": "object null",
60-
"arguments": "object null"
58+
"entries": "function <large string>"
6159
},
6260
"hasOwnProperty": {
6361
"#__proto__": "function <large string>",
6462
"length": "number 1",
65-
"name": "string hasOwnProperty",
66-
"caller": "object null",
67-
"arguments": "object null"
63+
"name": "string hasOwnProperty"
6864
},
6965
"propertyIsEnumerable": {
7066
"#__proto__": "function <large string>",
7167
"length": "number 1",
72-
"name": "string <large string>",
73-
"caller": "object null",
74-
"arguments": "object null"
68+
"name": "string <large string>"
7569
},
7670
"isPrototypeOf": {
7771
"#__proto__": "function <large string>",
7872
"length": "number 1",
79-
"name": "string isPrototypeOf",
80-
"caller": "object null",
81-
"arguments": "object null"
73+
"name": "string isPrototypeOf"
8274
},
8375
"toLocaleString": {
8476
"#__proto__": "function <large string>",
8577
"length": "number 0",
86-
"name": "string toLocaleString",
87-
"caller": "object null",
88-
"arguments": "object null"
78+
"name": "string toLocaleString"
8979
},
9080
"toString": {
9181
"#__proto__": "function <large string>",
9282
"length": "number 0",
93-
"name": "string toString",
94-
"caller": "object null",
95-
"arguments": "object null"
83+
"name": "string toString"
9684
},
9785
"valueOf": {
9886
"#__proto__": "function <large string>",
9987
"length": "number 0",
100-
"name": "string valueOf",
101-
"caller": "object null",
102-
"arguments": "object null"
88+
"name": "string valueOf"
10389
},
10490
"#__proto__": "object null",
10591
"__defineGetter__": {
10692
"#__proto__": "function <large string>",
10793
"length": "number 2",
108-
"name": "string __defineGetter__",
109-
"caller": "object null",
110-
"arguments": "object null"
94+
"name": "string __defineGetter__"
11195
},
11296
"__defineSetter__": {
11397
"#__proto__": "function <large string>",
11498
"length": "number 2",
115-
"name": "string __defineSetter__",
116-
"caller": "object null",
117-
"arguments": "object null"
99+
"name": "string __defineSetter__"
118100
},
119101
"__lookupGetter__": {
120102
"#__proto__": "function <large string>",
121103
"length": "number 1",
122-
"name": "string __lookupGetter__",
123-
"caller": "object null",
124-
"arguments": "object null"
104+
"name": "string __lookupGetter__"
125105
},
126106
"__lookupSetter__": {
127107
"#__proto__": "function <large string>",
128108
"length": "number 1",
129-
"name": "string __lookupSetter__",
130-
"caller": "object null",
131-
"arguments": "object null"
109+
"name": "string __lookupSetter__"
132110
}
133111
},
134112
"constructor": {
@@ -225,80 +203,58 @@
225203
"is": "function <large string>",
226204
"assign": "function <large string>",
227205
"values": "function <large string>",
228-
"entries": "function <large string>",
229-
"caller": "object null",
230-
"arguments": "object null"
206+
"entries": "function <large string>"
231207
},
232208
"hasOwnProperty": {
233209
"#__proto__": "function <large string>",
234210
"length": "number 1",
235-
"name": "string hasOwnProperty",
236-
"caller": "object null",
237-
"arguments": "object null"
211+
"name": "string hasOwnProperty"
238212
},
239213
"propertyIsEnumerable": {
240214
"#__proto__": "function <large string>",
241215
"length": "number 1",
242-
"name": "string <large string>",
243-
"caller": "object null",
244-
"arguments": "object null"
216+
"name": "string <large string>"
245217
},
246218
"isPrototypeOf": {
247219
"#__proto__": "function <large string>",
248220
"length": "number 1",
249-
"name": "string isPrototypeOf",
250-
"caller": "object null",
251-
"arguments": "object null"
221+
"name": "string isPrototypeOf"
252222
},
253223
"toLocaleString": {
254224
"#__proto__": "function <large string>",
255225
"length": "number 0",
256-
"name": "string toLocaleString",
257-
"caller": "object null",
258-
"arguments": "object null"
226+
"name": "string toLocaleString"
259227
},
260228
"toString": {
261229
"#__proto__": "function <large string>",
262230
"length": "number 0",
263-
"name": "string toString",
264-
"caller": "object null",
265-
"arguments": "object null"
231+
"name": "string toString"
266232
},
267233
"valueOf": {
268234
"#__proto__": "function <large string>",
269235
"length": "number 0",
270-
"name": "string valueOf",
271-
"caller": "object null",
272-
"arguments": "object null"
236+
"name": "string valueOf"
273237
},
274238
"#__proto__": "object null",
275239
"__defineGetter__": {
276240
"#__proto__": "function <large string>",
277241
"length": "number 2",
278-
"name": "string __defineGetter__",
279-
"caller": "object null",
280-
"arguments": "object null"
242+
"name": "string __defineGetter__"
281243
},
282244
"__defineSetter__": {
283245
"#__proto__": "function <large string>",
284246
"length": "number 2",
285-
"name": "string __defineSetter__",
286-
"caller": "object null",
287-
"arguments": "object null"
247+
"name": "string __defineSetter__"
288248
},
289249
"__lookupGetter__": {
290250
"#__proto__": "function <large string>",
291251
"length": "number 1",
292-
"name": "string __lookupGetter__",
293-
"caller": "object null",
294-
"arguments": "object null"
252+
"name": "string __lookupGetter__"
295253
},
296254
"__lookupSetter__": {
297255
"#__proto__": "function <large string>",
298256
"length": "number 1",
299-
"name": "string __lookupSetter__",
300-
"caller": "object null",
301-
"arguments": "object null"
257+
"name": "string __lookupSetter__"
302258
}
303259
},
304260
"constructor": {
@@ -395,80 +351,58 @@
395351
"is": "function <large string>",
396352
"assign": "function <large string>",
397353
"values": "function <large string>",
398-
"entries": "function <large string>",
399-
"caller": "object null",
400-
"arguments": "object null"
354+
"entries": "function <large string>"
401355
},
402356
"hasOwnProperty": {
403357
"#__proto__": "function <large string>",
404358
"length": "number 1",
405-
"name": "string hasOwnProperty",
406-
"caller": "object null",
407-
"arguments": "object null"
359+
"name": "string hasOwnProperty"
408360
},
409361
"propertyIsEnumerable": {
410362
"#__proto__": "function <large string>",
411363
"length": "number 1",
412-
"name": "string <large string>",
413-
"caller": "object null",
414-
"arguments": "object null"
364+
"name": "string <large string>"
415365
},
416366
"isPrototypeOf": {
417367
"#__proto__": "function <large string>",
418368
"length": "number 1",
419-
"name": "string isPrototypeOf",
420-
"caller": "object null",
421-
"arguments": "object null"
369+
"name": "string isPrototypeOf"
422370
},
423371
"toLocaleString": {
424372
"#__proto__": "function <large string>",
425373
"length": "number 0",
426-
"name": "string toLocaleString",
427-
"caller": "object null",
428-
"arguments": "object null"
374+
"name": "string toLocaleString"
429375
},
430376
"toString": {
431377
"#__proto__": "function <large string>",
432378
"length": "number 0",
433-
"name": "string toString",
434-
"caller": "object null",
435-
"arguments": "object null"
379+
"name": "string toString"
436380
},
437381
"valueOf": {
438382
"#__proto__": "function <large string>",
439383
"length": "number 0",
440-
"name": "string valueOf",
441-
"caller": "object null",
442-
"arguments": "object null"
384+
"name": "string valueOf"
443385
},
444386
"#__proto__": "object null",
445387
"__defineGetter__": {
446388
"#__proto__": "function <large string>",
447389
"length": "number 2",
448-
"name": "string __defineGetter__",
449-
"caller": "object null",
450-
"arguments": "object null"
390+
"name": "string __defineGetter__"
451391
},
452392
"__defineSetter__": {
453393
"#__proto__": "function <large string>",
454394
"length": "number 2",
455-
"name": "string __defineSetter__",
456-
"caller": "object null",
457-
"arguments": "object null"
395+
"name": "string __defineSetter__"
458396
},
459397
"__lookupGetter__": {
460398
"#__proto__": "function <large string>",
461399
"length": "number 1",
462-
"name": "string __lookupGetter__",
463-
"caller": "object null",
464-
"arguments": "object null"
400+
"name": "string __lookupGetter__"
465401
},
466402
"__lookupSetter__": {
467403
"#__proto__": "function <large string>",
468404
"length": "number 1",
469-
"name": "string __lookupSetter__",
470-
"caller": "object null",
471-
"arguments": "object null"
405+
"name": "string __lookupSetter__"
472406
}
473407
},
474408
"constructor": {

0 commit comments

Comments
 (0)