Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Merged by Bors] - Make Error and %NativeError% spec compliant #1879

Closed
wants to merge 1 commit into from

Conversation

HalidOdat
Copy link
Member

This PR makes Error and %NativeError% spec compliant.

It changes the following:

  • Adds cause argument object.
  • Makes message non-enumerable.

@HalidOdat HalidOdat added bug Something isn't working enhancement New feature or request builtins PRs and Issues related to builtins/intrinsics labels Mar 1, 2022
@github-actions
Copy link

github-actions bot commented Mar 1, 2022

Test262 conformance changes

VM implementation

Test result main count PR count difference
Total 88,342 88,342 0
Passed 43,007 43,037 +30
Ignored 21,413 21,413 0
Failed 23,922 23,892 -30
Panics 0 0 0
Conformance 48.68% 48.72% +0.03%
Fixed tests (30):
test/language/expressions/instanceof/S11.8.6_A5_T2.js [strict mode] (previously Failed)
test/language/expressions/instanceof/S11.8.6_A5_T2.js (previously Failed)
test/language/statements/try/S12.14_A19_T1.js [strict mode] (previously Failed)
test/language/statements/try/S12.14_A19_T1.js (previously Failed)
test/language/statements/try/S12.14_A19_T2.js [strict mode] (previously Failed)
test/language/statements/try/S12.14_A19_T2.js (previously Failed)
test/built-ins/NativeErrors/message_property_native_error.js [strict mode] (previously Failed)
test/built-ins/NativeErrors/message_property_native_error.js (previously Failed)
test/built-ins/NativeErrors/cause_property_native_error.js [strict mode] (previously Failed)
test/built-ins/NativeErrors/cause_property_native_error.js (previously Failed)
test/built-ins/NativeErrors/RangeError/proto-from-ctor-realm.js [strict mode] (previously Failed)
test/built-ins/NativeErrors/RangeError/proto-from-ctor-realm.js (previously Failed)
test/built-ins/NativeErrors/ReferenceError/proto-from-ctor-realm.js [strict mode] (previously Failed)
test/built-ins/NativeErrors/ReferenceError/proto-from-ctor-realm.js (previously Failed)
test/built-ins/NativeErrors/SyntaxError/proto-from-ctor-realm.js [strict mode] (previously Failed)
test/built-ins/NativeErrors/SyntaxError/proto-from-ctor-realm.js (previously Failed)
test/built-ins/NativeErrors/URIError/proto-from-ctor-realm.js [strict mode] (previously Failed)
test/built-ins/NativeErrors/URIError/proto-from-ctor-realm.js (previously Failed)
test/built-ins/NativeErrors/TypeError/proto-from-ctor-realm.js [strict mode] (previously Failed)
test/built-ins/NativeErrors/TypeError/proto-from-ctor-realm.js (previously Failed)
test/built-ins/NativeErrors/EvalError/proto-from-ctor-realm.js [strict mode] (previously Failed)
test/built-ins/NativeErrors/EvalError/proto-from-ctor-realm.js (previously Failed)
test/built-ins/Error/cause_property.js [strict mode] (previously Failed)
test/built-ins/Error/cause_property.js (previously Failed)
test/built-ins/Error/cause_abrupt.js [strict mode] (previously Failed)
test/built-ins/Error/cause_abrupt.js (previously Failed)
test/built-ins/Error/constructor.js [strict mode] (previously Failed)
test/built-ins/Error/constructor.js (previously Failed)
test/built-ins/Error/message_property.js [strict mode] (previously Failed)
test/built-ins/Error/message_property.js (previously Failed)

@codecov
Copy link

codecov bot commented Mar 1, 2022

Codecov Report

Merging #1879 (dac0b53) into main (d7ed2fe) will increase coverage by 0.02%.
The diff coverage is 92.15%.

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #1879      +/-   ##
==========================================
+ Coverage   46.68%   46.71%   +0.02%     
==========================================
  Files         204      204              
  Lines       16721    16732      +11     
==========================================
+ Hits         7807     7817      +10     
- Misses       8914     8915       +1     
Impacted Files Coverage Δ
boa_engine/src/builtins/error/mod.rs 90.00% <72.72%> (-5.84%) ⬇️
boa_engine/src/object/operations.rs 59.50% <75.00%> (+0.38%) ⬆️
boa_engine/src/builtins/error/eval.rs 100.00% <100.00%> (ø)
boa_engine/src/builtins/error/range.rs 100.00% <100.00%> (ø)
boa_engine/src/builtins/error/reference.rs 100.00% <100.00%> (ø)
boa_engine/src/builtins/error/syntax.rs 100.00% <100.00%> (ø)
boa_engine/src/builtins/error/type.rs 100.00% <100.00%> (ø)
boa_engine/src/builtins/error/uri.rs 100.00% <100.00%> (ø)
boa_engine/src/object/property_map.rs 20.47% <0.00%> (-0.79%) ⬇️
boa_engine/src/syntax/parser/expression/mod.rs 34.81% <0.00%> (-0.75%) ⬇️
... and 4 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d7ed2fe...dac0b53. Read the comment docs.

@github-actions
Copy link

github-actions bot commented Mar 1, 2022

Benchmark for 3087f99

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 517.1±1.36ns 508.3±1.98ns -1.70%
Arithmetic operations (Execution) 1976.8±4.05ns 1920.1±3.12ns -2.87%
Arithmetic operations (Parser) 4.6±0.01µs 5.3±0.01µs +15.22%
Array access (Compiler) 1127.7±1.94ns 1258.0±2.10ns +11.55%
Array access (Execution) 9.9±0.05µs 9.8±0.10µs -1.01%
Array access (Parser) 10.2±0.02µs 11.6±0.02µs +13.73%
Array creation (Compiler) 1611.2±4.07ns 1812.1±4.96ns +12.47%
Array creation (Execution) 3.1±0.01ms 3.2±0.01ms +3.23%
Array creation (Parser) 11.5±0.02µs 13.0±0.06µs +13.04%
Array pop (Compiler) 3.9±0.01µs 4.0±0.01µs +2.56%
Array pop (Execution) 1370.7±5.11µs 1401.2±3.90µs +2.23%
Array pop (Parser) 114.5±0.10µs 130.1±0.13µs +13.62%
Boolean Object Access (Compiler) 1104.4±3.77ns 1105.9±4.04ns +0.14%
Boolean Object Access (Execution) 5.7±0.01µs 5.1±0.02µs -10.53%
Boolean Object Access (Parser) 12.2±0.02µs 14.1±0.02µs +15.57%
Clean js (Compiler) 3.3±0.01µs 3.4±0.01µs +3.03%
Clean js (Execution) 1105.8±7.81µs 1102.7±7.10µs -0.28%
Clean js (Parser) 24.8±0.06µs 28.1±0.05µs +13.31%
Create Realm 284.7±0.41ns 273.0±0.31ns -4.11%
Dynamic Object Property Access (Compiler) 1428.8±5.68ns 1607.1±2.51ns +12.48%
Dynamic Object Property Access (Execution) 6.8±0.03µs 6.8±0.03µs 0.00%
Dynamic Object Property Access (Parser) 10.3±0.02µs 9.1±0.02µs -11.65%
Fibonacci (Compiler) 1988.7±3.21ns 2.3±0.01µs +15.65%
Fibonacci (Execution) 1791.9±13.35µs 1772.0±2.71µs -1.11%
Fibonacci (Parser) 13.9±0.02µs 14.0±0.07µs +0.72%
For loop (Compiler) 1714.3±4.20ns 1950.2±5.97ns +13.76%
For loop (Execution) 43.4±0.11µs 42.1±0.13µs -3.00%
For loop (Parser) 13.5±0.02µs 13.4±0.02µs -0.74%
Mini js (Compiler) 3.2±0.01µs 3.2±0.01µs 0.00%
Mini js (Execution) 1018.8±6.35µs 1016.9±6.03µs -0.19%
Mini js (Parser) 21.6±0.03µs 24.6±0.06µs +13.89%
Number Object Access (Compiler) 1037.6±4.46ns 1031.8±3.09ns -0.56%
Number Object Access (Execution) 4.5±0.01µs 4.0±0.01µs -11.11%
Number Object Access (Parser) 9.5±0.01µs 11.0±0.02µs +15.79%
Object Creation (Compiler) 1224.5±5.58ns 1387.0±8.02ns +13.27%
Object Creation (Execution) 6.2±0.02µs 6.0±0.02µs -3.23%
Object Creation (Parser) 7.9±0.02µs 8.0±0.02µs +1.27%
RegExp (Compiler) 1629.7±9.92ns 1639.4±8.74ns +0.60%
RegExp (Execution) 12.2±0.06µs 12.6±0.04µs +3.28%
RegExp (Parser) 8.7±0.03µs 8.7±0.02µs 0.00%
RegExp Creation (Compiler) 1445.2±4.64ns 1393.5±5.63ns -3.58%
RegExp Creation (Execution) 9.1±0.04µs 9.5±0.04µs +4.40%
RegExp Creation (Parser) 7.2±0.01µs 8.2±0.03µs +13.89%
RegExp Literal (Compiler) 1465.1±4.69ns 1626.5±9.31ns +11.02%
RegExp Literal (Execution) 12.3±0.07µs 12.5±0.03µs +1.63%
RegExp Literal (Parser) 7.0±0.02µs 8.0±0.02µs +14.29%
RegExp Literal Creation (Compiler) 1269.8±2.87ns 1394.5±3.88ns +9.82%
RegExp Literal Creation (Execution) 9.1±0.05µs 9.5±0.14µs +4.40%
RegExp Literal Creation (Parser) 5.5±0.01µs 5.6±0.04µs +1.82%
Static Object Property Access (Compiler) 1263.6±4.55ns 1413.8±5.78ns +11.89%
Static Object Property Access (Execution) 6.4±0.03µs 6.4±0.02µs 0.00%
Static Object Property Access (Parser) 8.5±0.01µs 8.5±0.02µs 0.00%
String Object Access (Compiler) 1460.3±6.13ns 1474.2±4.91ns +0.95%
String Object Access (Execution) 7.7±0.03µs 7.5±0.02µs -2.60%
String Object Access (Parser) 12.0±0.01µs 13.8±0.01µs +15.00%
String comparison (Compiler) 2.1±0.01µs 2.1±0.01µs 0.00%
String comparison (Execution) 5.9±0.02µs 5.1±0.02µs -13.56%
String comparison (Parser) 9.5±0.02µs 10.6±0.03µs +11.58%
String concatenation (Compiler) 1628.5±8.70ns 1621.5±8.28ns -0.43%
String concatenation (Execution) 5.3±0.02µs 5.3±0.01µs 0.00%
String concatenation (Parser) 6.5±0.01µs 7.3±0.03µs +12.31%
String copy (Compiler) 1319.8±2.36ns 1307.8±3.29ns -0.91%
String copy (Execution) 4.8±0.02µs 4.7±0.03µs -2.08%
String copy (Parser) 4.9±0.01µs 5.5±0.02µs +12.24%
Symbols (Compiler) 800.9±6.70ns 899.4±1.56ns +12.30%
Symbols (Execution) 4.6±0.02µs 4.5±0.01µs -2.17%
Symbols (Parser) 4.2±0.01µs 4.2±0.02µs 0.00%

@github-actions
Copy link

github-actions bot commented Mar 1, 2022

Benchmark for e7bb924

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 632.2±21.53ns 605.1±1.44ns -4.29%
Arithmetic operations (Execution) 2.4±0.01µs 2.4±0.11µs 0.00%
Arithmetic operations (Parser) 6.0±0.25µs 5.7±0.01µs -5.00%
Array access (Compiler) 1586.0±79.87ns 1552.6±9.79ns -2.11%
Array access (Execution) 11.6±0.06µs 12.4±1.09µs +6.90%
Array access (Parser) 13.3±0.95µs 12.8±0.10µs -3.76%
Array creation (Compiler) 2.2±0.07µs 2.2±0.01µs 0.00%
Array creation (Execution) 3.7±0.01ms 4.0±0.18ms +8.11%
Array creation (Parser) 14.4±0.02µs 14.4±0.02µs 0.00%
Array pop (Compiler) 4.6±0.02µs 4.7±0.03µs +2.17%
Array pop (Execution) 1631.6±6.54µs 1661.6±6.34µs +1.84%
Array pop (Parser) 154.5±6.22µs 149.2±0.29µs -3.43%
Boolean Object Access (Compiler) 1167.1±4.69ns 1230.9±47.34ns +5.47%
Boolean Object Access (Execution) 6.8±0.02µs 6.9±0.04µs +1.47%
Boolean Object Access (Parser) 15.5±0.05µs 15.8±0.03µs +1.94%
Clean js (Compiler) 4.1±0.13µs 4.2±0.28µs +2.44%
Clean js (Execution) 1357.0±44.15µs 1304.2±15.50µs -3.89%
Clean js (Parser) 31.1±0.07µs 31.2±0.10µs +0.32%
Create Realm 334.6±19.29ns 350.4±17.02ns +4.72%
Dynamic Object Property Access (Compiler) 1912.5±11.01ns 2.0±0.09µs +4.58%
Dynamic Object Property Access (Execution) 8.0±0.05µs 8.0±0.02µs 0.00%
Dynamic Object Property Access (Parser) 11.6±0.63µs 11.2±0.02µs -3.45%
Fibonacci (Compiler) 2.8±0.15µs 2.7±0.03µs -3.57%
Fibonacci (Execution) 2.2±0.06ms 2.1±0.00ms -4.55%
Fibonacci (Parser) 17.5±0.05µs 17.7±0.06µs +1.14%
For loop (Compiler) 2.4±0.06µs 2.4±0.01µs 0.00%
For loop (Execution) 50.5±0.43µs 49.9±0.33µs -1.19%
For loop (Parser) 15.1±0.08µs 15.0±0.20µs -0.66%
Mini js (Compiler) 4.0±0.13µs 4.1±0.36µs +2.50%
Mini js (Execution) 1276.6±64.10µs 1203.6±18.57µs -5.72%
Mini js (Parser) 26.9±0.08µs 27.0±0.05µs +0.37%
Number Object Access (Compiler) 1119.1±3.51ns 1112.7±7.38ns -0.57%
Number Object Access (Execution) 5.3±0.02µs 5.4±0.03µs +1.89%
Number Object Access (Parser) 12.4±0.47µs 12.0±0.03µs -3.23%
Object Creation (Compiler) 1688.1±125.71ns 1675.6±17.51ns -0.74%
Object Creation (Execution) 7.2±0.04µs 7.5±0.24µs +4.17%
Object Creation (Parser) 9.8±0.02µs 9.9±0.01µs +1.02%
RegExp (Compiler) 1935.2±5.02ns 1961.5±4.81ns +1.36%
RegExp (Execution) 14.4±0.07µs 14.7±0.06µs +2.08%
RegExp (Parser) 11.0±0.29µs 10.8±0.05µs -1.82%
RegExp Creation (Compiler) 1669.2±9.08ns 1694.7±15.00ns +1.53%
RegExp Creation (Execution) 10.7±0.06µs 11.4±0.08µs +6.54%
RegExp Creation (Parser) 9.3±0.38µs 9.1±0.03µs -2.15%
RegExp Literal (Compiler) 2.0±0.06µs 1957.4±6.06ns -2.13%
RegExp Literal (Execution) 15.5±1.96µs 14.7±0.04µs -5.16%
RegExp Literal (Parser) 9.0±0.32µs 8.6±0.04µs -4.44%
RegExp Literal Creation (Compiler) 1680.7±8.16ns 1690.3±23.67ns +0.57%
RegExp Literal Creation (Execution) 10.8±0.07µs 11.4±0.05µs +5.56%
RegExp Literal Creation (Parser) 7.2±0.30µs 6.9±0.04µs -4.17%
Static Object Property Access (Compiler) 1646.9±8.58ns 1687.3±9.21ns +2.45%
Static Object Property Access (Execution) 8.0±0.53µs 7.5±0.03µs -6.25%
Static Object Property Access (Parser) 10.5±0.01µs 10.6±0.02µs +0.95%
String Object Access (Compiler) 1662.1±52.29ns 1600.3±8.39ns -3.72%
String Object Access (Execution) 9.6±0.79µs 9.0±0.03µs -6.25%
String Object Access (Parser) 16.0±0.77µs 16.2±0.64µs +1.25%
String comparison (Compiler) 2.5±0.02µs 2.7±0.12µs +8.00%
String comparison (Execution) 7.0±0.04µs 7.2±0.31µs +2.86%
String comparison (Parser) 12.1±0.03µs 11.8±0.06µs -2.48%
String concatenation (Compiler) 1921.8±4.80ns 1973.5±3.69ns +2.69%
String concatenation (Execution) 6.3±0.05µs 6.3±0.03µs 0.00%
String concatenation (Parser) 8.2±0.04µs 8.4±0.34µs +2.44%
String copy (Compiler) 1544.0±3.77ns 1621.4±86.73ns +5.01%
String copy (Execution) 5.6±0.09µs 5.6±0.02µs 0.00%
String copy (Parser) 6.1±0.02µs 6.0±0.02µs -1.64%
Symbols (Compiler) 1081.2±3.92ns 1116.4±27.10ns +3.26%
Symbols (Execution) 5.6±0.47µs 5.3±0.02µs -5.36%
Symbols (Parser) 4.4±0.03µs 4.5±0.02µs +2.27%

@Razican
Copy link
Member

Razican commented Mar 1, 2022

bors r+

bors bot pushed a commit that referenced this pull request Mar 1, 2022
This PR makes `Error` and `%NativeError%` spec compliant.

It changes the following:
- Adds cause argument object.
- Makes `message` non-enumerable.
@bors
Copy link

bors bot commented Mar 1, 2022

Pull request successfully merged into main.

Build succeeded:

@bors bors bot changed the title Make Error and %NativeError% spec compliant [Merged by Bors] - Make Error and %NativeError% spec compliant Mar 1, 2022
@bors bors bot closed this Mar 1, 2022
@bors bors bot deleted the fix/native-error branch March 1, 2022 18:30
@Razican Razican added this to the v0.14.0 milestone Mar 1, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working builtins PRs and Issues related to builtins/intrinsics enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants