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] - Refresh vm docs and fix bytecode trace output #1921

Closed
wants to merge 3 commits into from

Conversation

raskad
Copy link
Member

@raskad raskad commented Mar 12, 2022

It changes the following:

  • Refreshes the vm and debugging docs to represent the current state
  • Fix some bytecode trace output
  • Rename a field in the CodeBlock

@raskad raskad added enhancement New feature or request documentation update documentation vm Issues and PRs related to the Boa Virtual Machine. labels Mar 12, 2022
@raskad raskad added this to the v0.14.0 milestone Mar 12, 2022
@github-actions
Copy link

Test262 conformance changes

VM implementation

Test result main count PR count difference
Total 88,410 88,410 0
Passed 43,896 43,896 0
Ignored 21,481 21,481 0
Failed 23,033 23,033 0
Panics 0 0 0
Conformance 49.65% 49.65% 0.00%

@codecov
Copy link

codecov bot commented Mar 12, 2022

Codecov Report

Merging #1921 (b9a7ab2) into main (128f836) will not change coverage.
The diff coverage is 53.84%.

Impacted file tree graph

@@           Coverage Diff           @@
##             main    #1921   +/-   ##
=======================================
  Coverage   45.98%   45.98%           
=======================================
  Files         206      206           
  Lines       17057    17057           
=======================================
  Hits         7844     7844           
  Misses       9213     9213           
Impacted Files Coverage Δ
boa_engine/src/vm/code_block.rs 47.57% <0.00%> (ø)
boa_engine/src/bytecompiler.rs 37.14% <50.00%> (ø)
boa_engine/src/vm/mod.rs 70.95% <100.00%> (ø)

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 128f836...b9a7ab2. Read the comment docs.

Copy link
Member

@HalidOdat HalidOdat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me! :)

docs/debugging.md Outdated Show resolved Hide resolved
@github-actions
Copy link

Benchmark for dd15590

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 600.4±2.36ns 600.2±5.50ns -0.03%
Arithmetic operations (Execution) 2.4±0.02µs 2.4±0.02µs 0.00%
Arithmetic operations (Parser) 5.7±0.04µs 5.7±0.05µs 0.00%
Array access (Compiler) 1535.8±7.30ns 1541.3±15.09ns +0.36%
Array access (Execution) 11.6±0.07µs 11.4±0.12µs -1.72%
Array access (Parser) 12.5±0.08µs 12.6±0.03µs +0.80%
Array creation (Compiler) 2.1±0.01µs 2.1±0.02µs 0.00%
Array creation (Execution) 3.7±0.01ms 3.8±0.03ms +2.70%
Array creation (Parser) 14.3±0.10µs 14.4±0.08µs +0.70%
Array pop (Compiler) 4.7±0.02µs 4.6±0.03µs -2.13%
Array pop (Execution) 1606.7±9.54µs 1646.4±20.25µs +2.47%
Array pop (Parser) 148.0±1.34µs 148.2±1.18µs +0.14%
Boolean Object Access (Compiler) 1180.7±5.37ns 1167.4±10.76ns -1.13%
Boolean Object Access (Execution) 6.9±0.02µs 6.8±0.06µs -1.45%
Boolean Object Access (Parser) 15.4±0.07µs 15.5±0.11µs +0.65%
Clean js (Compiler) 4.0±0.01µs 4.0±0.03µs 0.00%
Clean js (Execution) 1266.7±15.43µs 1300.3±10.05µs +2.65%
Clean js (Parser) 30.5±0.50µs 30.4±0.35µs -0.33%
Create Realm 324.1±2.98ns 337.6±1.86ns +4.17%
Dynamic Object Property Access (Compiler) 1906.3±24.36ns 1939.0±14.84ns +1.72%
Dynamic Object Property Access (Execution) 8.0±0.09µs 7.8±0.07µs -2.50%
Dynamic Object Property Access (Parser) 11.0±0.11µs 11.1±0.04µs +0.91%
Fibonacci (Compiler) 2.7±0.02µs 2.7±0.02µs 0.00%
Fibonacci (Execution) 2.1±0.00ms 2.1±0.01ms 0.00%
Fibonacci (Parser) 17.3±0.06µs 17.3±0.26µs 0.00%
For loop (Compiler) 2.3±0.02µs 2.3±0.02µs 0.00%
For loop (Execution) 50.5±0.16µs 51.0±0.31µs +0.99%
For loop (Parser) 14.8±0.05µs 14.7±0.14µs -0.68%
Mini js (Compiler) 3.9±0.01µs 3.9±0.03µs 0.00%
Mini js (Execution) 1172.0±8.73µs 1194.2±8.91µs +1.89%
Mini js (Parser) 26.5±0.31µs 26.8±0.14µs +1.13%
Number Object Access (Compiler) 1128.0±4.05ns 1100.2±12.61ns -2.46%
Number Object Access (Execution) 5.3±0.02µs 5.3±0.05µs 0.00%
Number Object Access (Parser) 11.8±0.08µs 11.8±0.02µs 0.00%
Object Creation (Compiler) 1685.6±24.66ns 1673.8±18.51ns -0.70%
Object Creation (Execution) 7.2±0.03µs 7.1±0.05µs -1.39%
Object Creation (Parser) 9.9±0.03µs 9.8±0.10µs -1.01%
RegExp (Compiler) 1964.7±4.23ns 1978.1±17.87ns +0.68%
RegExp (Execution) 14.7±0.05µs 14.5±0.13µs -1.36%
RegExp (Parser) 10.7±0.06µs 10.6±0.10µs -0.93%
RegExp Creation (Compiler) 1676.0±14.47ns 1674.1±19.94ns -0.11%
RegExp Creation (Execution) 11.3±0.03µs 11.1±0.09µs -1.77%
RegExp Creation (Parser) 9.0±0.04µs 8.8±0.06µs -2.22%
RegExp Literal (Compiler) 1957.8±8.16ns 1978.0±14.22ns +1.03%
RegExp Literal (Execution) 14.5±0.20µs 14.4±0.15µs -0.69%
RegExp Literal (Parser) 8.6±0.02µs 8.5±0.12µs -1.16%
RegExp Literal Creation (Compiler) 1665.1±15.72ns 1683.7±19.48ns +1.12%
RegExp Literal Creation (Execution) 11.2±0.03µs 11.2±0.06µs 0.00%
RegExp Literal Creation (Parser) 6.7±0.07µs 6.7±0.05µs 0.00%
Static Object Property Access (Compiler) 1682.8±11.36ns 1722.6±21.80ns +2.37%
Static Object Property Access (Execution) 7.5±0.02µs 7.4±0.04µs -1.33%
Static Object Property Access (Parser) 10.5±0.07µs 10.5±0.10µs 0.00%
String Object Access (Compiler) 1615.4±8.02ns 1636.4±9.08ns +1.30%
String Object Access (Execution) 8.8±0.04µs 8.7±0.07µs -1.14%
String Object Access (Parser) 15.2±0.07µs 15.0±0.16µs -1.32%
String comparison (Compiler) 2.5±0.01µs 2.5±0.02µs 0.00%
String comparison (Execution) 6.9±0.03µs 7.0±0.15µs +1.45%
String comparison (Parser) 11.8±0.09µs 11.8±0.02µs 0.00%
String concatenation (Compiler) 1958.0±5.61ns 1974.9±14.99ns +0.86%
String concatenation (Execution) 6.3±0.05µs 6.2±0.05µs -1.59%
String concatenation (Parser) 7.9±0.09µs 8.0±0.04µs +1.27%
String copy (Compiler) 1547.3±3.22ns 1567.6±21.51ns +1.31%
String copy (Execution) 5.6±0.02µs 5.5±0.03µs -1.79%
String copy (Parser) 5.9±0.03µs 5.8±0.02µs -1.69%
Symbols (Compiler) 1091.0±3.85ns 1139.9±8.03ns +4.48%
Symbols (Execution) 5.5±0.01µs 5.3±0.04µs -3.64%
Symbols (Parser) 4.4±0.03µs 4.4±0.05µs 0.00%

@github-actions
Copy link

Benchmark for 4bea602

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 645.9±27.23ns 652.1±43.38ns +0.96%
Arithmetic operations (Execution) 2.3±0.15µs 2.3±0.15µs 0.00%
Arithmetic operations (Parser) 5.9±0.31µs 6.0±0.31µs +1.69%
Array access (Compiler) 1589.1±81.61ns 1623.2±88.83ns +2.15%
Array access (Execution) 11.6±0.75µs 11.7±0.77µs +0.86%
Array access (Parser) 13.3±0.69µs 14.0±1.33µs +5.26%
Array creation (Compiler) 2.2±0.19µs 2.3±0.20µs +4.55%
Array creation (Execution) 3.6±0.19ms 3.6±0.21ms 0.00%
Array creation (Parser) 15.1±0.84µs 15.6±4.82µs +3.31%
Array pop (Compiler) 4.7±0.32µs 4.5±0.30µs -4.26%
Array pop (Execution) 1510.8±77.63µs 1572.9±78.84µs +4.11%
Array pop (Parser) 156.8±7.23µs 161.0±8.76µs +2.68%
Boolean Object Access (Compiler) 1354.2±66.52ns 1401.7±70.96ns +3.51%
Boolean Object Access (Execution) 6.8±0.32µs 6.8±0.50µs 0.00%
Boolean Object Access (Parser) 16.2±1.12µs 15.5±0.57µs -4.32%
Clean js (Compiler) 4.2±0.24µs 4.3±0.22µs +2.38%
Clean js (Execution) 1232.2±64.22µs 1214.2±63.12µs -1.46%
Clean js (Parser) 32.1±1.92µs 33.4±1.69µs +4.05%
Create Realm 327.1±17.76ns 334.2±21.68ns +2.17%
Dynamic Object Property Access (Compiler) 2.0±0.10µs 2.0±0.11µs 0.00%
Dynamic Object Property Access (Execution) 8.0±0.44µs 8.2±0.59µs +2.50%
Dynamic Object Property Access (Parser) 11.6±0.69µs 12.1±1.58µs +4.31%
Fibonacci (Compiler) 2.9±0.15µs 3.0±0.14µs +3.45%
Fibonacci (Execution) 2.2±0.12ms 2.2±0.13ms 0.00%
Fibonacci (Parser) 17.7±0.87µs 17.6±0.78µs -0.56%
For loop (Compiler) 2.5±0.14µs 2.6±0.20µs +4.00%
For loop (Execution) 51.7±4.16µs 49.8±3.09µs -3.68%
For loop (Parser) 15.4±0.91µs 15.4±0.80µs 0.00%
Mini js (Compiler) 4.2±0.23µs 4.2±0.25µs 0.00%
Mini js (Execution) 1132.2±83.20µs 1129.2±70.94µs -0.26%
Mini js (Parser) 27.4±1.33µs 28.6±1.91µs +4.38%
Number Object Access (Compiler) 1306.1±97.46ns 1337.6±84.15ns +2.41%
Number Object Access (Execution) 5.5±0.33µs 5.5±0.37µs 0.00%
Number Object Access (Parser) 12.2±0.55µs 13.0±0.61µs +6.56%
Object Creation (Compiler) 1848.6±85.87ns 1828.2±95.49ns -1.10%
Object Creation (Execution) 7.6±0.45µs 7.7±0.50µs +1.32%
Object Creation (Parser) 10.4±0.48µs 10.5±0.54µs +0.96%
RegExp (Compiler) 2.1±0.13µs 2.1±0.11µs 0.00%
RegExp (Execution) 14.8±2.35µs 15.3±0.69µs +3.38%
RegExp (Parser) 11.2±0.81µs 11.3±0.63µs +0.89%
RegExp Creation (Compiler) 1923.7±99.77ns 1845.8±161.30ns -4.05%
RegExp Creation (Execution) 10.8±0.69µs 10.9±0.54µs +0.93%
RegExp Creation (Parser) 9.2±0.46µs 9.3±0.47µs +1.09%
RegExp Literal (Compiler) 2.1±0.10µs 2.0±0.09µs -4.76%
RegExp Literal (Execution) 15.4±1.01µs 15.1±0.83µs -1.95%
RegExp Literal (Parser) 8.9±0.63µs 9.2±0.56µs +3.37%
RegExp Literal Creation (Compiler) 1857.2±77.35ns 1854.7±86.96ns -0.13%
RegExp Literal Creation (Execution) 10.7±0.48µs 11.4±0.75µs +6.54%
RegExp Literal Creation (Parser) 7.1±0.32µs 7.4±0.34µs +4.23%
Static Object Property Access (Compiler) 1790.2±97.93ns 1784.0±81.15ns -0.35%
Static Object Property Access (Execution) 7.8±0.35µs 7.7±0.35µs -1.28%
Static Object Property Access (Parser) 11.5±0.62µs 11.2±0.67µs -2.61%
String Object Access (Compiler) 1828.7±79.70ns 1894.4±61.85ns +3.59%
String Object Access (Execution) 9.0±0.50µs 9.1±0.43µs +1.11%
String Object Access (Parser) 15.3±0.85µs 16.1±1.16µs +5.23%
String comparison (Compiler) 2.7±0.28µs 2.7±0.17µs 0.00%
String comparison (Execution) 7.1±0.43µs 6.9±0.42µs -2.82%
String comparison (Parser) 12.1±0.80µs 12.6±0.59µs +4.13%
String concatenation (Compiler) 2.1±0.15µs 2.1±0.16µs 0.00%
String concatenation (Execution) 6.4±0.39µs 6.3±0.31µs -1.56%
String concatenation (Parser) 8.4±0.49µs 9.0±0.56µs +7.14%
String copy (Compiler) 1731.9±173.79ns 1731.8±97.51ns -0.01%
String copy (Execution) 6.0±0.32µs 5.7±0.31µs -5.00%
String copy (Parser) 6.3±0.35µs 6.4±0.50µs +1.59%
Symbols (Compiler) 1276.3±79.53ns 1181.5±79.75ns -7.43%
Symbols (Execution) 5.6±0.28µs 5.6±0.25µs 0.00%
Symbols (Parser) 4.8±0.27µs 4.7±0.23µs -2.08%

Copy link
Member

@jedel1043 jedel1043 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

@github-actions
Copy link

Benchmark for ac62294

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 509.8±1.86ns 496.3±2.64ns -2.65%
Arithmetic operations (Execution) 1979.4±4.24ns 1988.3±2.62ns +0.45%
Arithmetic operations (Parser) 5.2±0.01µs 5.2±0.00µs 0.00%
Array access (Compiler) 1329.2±1.09ns 1275.8±2.24ns -4.02%
Array access (Execution) 9.8±0.06µs 9.7±0.19µs -1.02%
Array access (Parser) 11.4±0.01µs 11.5±0.03µs +0.88%
Array creation (Compiler) 1867.2±4.85ns 1808.6±4.75ns -3.14%
Array creation (Execution) 3.1±0.00ms 3.2±0.00ms +3.23%
Array creation (Parser) 13.0±0.02µs 13.1±0.05µs +0.77%
Array pop (Compiler) 4.0±0.01µs 3.8±0.01µs -5.00%
Array pop (Execution) 1345.2±8.23µs 1395.1±21.29µs +3.71%
Array pop (Parser) 129.5±0.13µs 129.7±0.06µs +0.15%
Boolean Object Access (Compiler) 1107.7±3.70ns 1102.3±3.92ns -0.49%
Boolean Object Access (Execution) 5.7±0.02µs 5.7±0.01µs 0.00%
Boolean Object Access (Parser) 13.9±0.01µs 13.9±0.01µs 0.00%
Clean js (Compiler) 3.4±0.01µs 3.4±0.01µs 0.00%
Clean js (Execution) 1065.6±5.74µs 1094.8±8.92µs +2.74%
Clean js (Parser) 27.8±0.05µs 27.9±0.03µs +0.36%
Create Realm 271.7±0.34ns 274.6±0.24ns +1.07%
Dynamic Object Property Access (Compiler) 1651.9±4.70ns 1597.7±1.49ns -3.28%
Dynamic Object Property Access (Execution) 6.7±0.02µs 6.7±0.04µs 0.00%
Dynamic Object Property Access (Parser) 10.3±0.02µs 10.4±0.02µs +0.97%
Fibonacci (Compiler) 2.3±0.02µs 2.3±0.00µs 0.00%
Fibonacci (Execution) 1810.5±3.28µs 1775.2±4.70µs -1.95%
Fibonacci (Parser) 15.6±0.02µs 15.7±0.02µs +0.64%
For loop (Compiler) 2.0±0.01µs 1952.1±4.98ns -2.40%
For loop (Execution) 42.2±0.07µs 42.7±0.11µs +1.18%
For loop (Parser) 13.3±0.01µs 13.4±0.01µs +0.75%
Mini js (Compiler) 3.3±0.01µs 3.3±0.01µs 0.00%
Mini js (Execution) 979.2±5.88µs 1002.9±7.35µs +2.42%
Mini js (Parser) 24.3±0.04µs 24.3±0.03µs 0.00%
Number Object Access (Compiler) 1038.1±2.99ns 1033.0±1.90ns -0.49%
Number Object Access (Execution) 4.5±0.02µs 4.4±0.01µs -2.22%
Number Object Access (Parser) 10.7±0.03µs 10.7±0.01µs 0.00%
Object Creation (Compiler) 1395.4±4.35ns 1389.3±5.93ns -0.44%
Object Creation (Execution) 6.0±0.02µs 6.0±0.03µs 0.00%
Object Creation (Parser) 8.9±0.01µs 9.0±0.02µs +1.12%
RegExp (Compiler) 1649.8±4.26ns 1627.3±2.74ns -1.36%
RegExp (Execution) 12.5±0.04µs 12.4±0.04µs -0.80%
RegExp (Parser) 9.9±0.02µs 9.8±0.03µs -1.01%
RegExp Creation (Compiler) 1436.6±4.99ns 1416.1±6.02ns -1.43%
RegExp Creation (Execution) 9.5±0.05µs 9.4±0.04µs -1.05%
RegExp Creation (Parser) 8.2±0.12µs 8.1±0.01µs -1.22%
RegExp Literal (Compiler) 1665.2±5.09ns 1629.9±4.58ns -2.12%
RegExp Literal (Execution) 12.4±0.04µs 12.3±0.05µs -0.81%
RegExp Literal (Parser) 7.9±0.02µs 7.9±0.02µs 0.00%
RegExp Literal Creation (Compiler) 1414.4±6.43ns 1424.0±4.61ns +0.68%
RegExp Literal Creation (Execution) 9.4±0.04µs 9.4±0.03µs 0.00%
RegExp Literal Creation (Parser) 6.1±0.01µs 6.2±0.02µs +1.64%
Static Object Property Access (Compiler) 1436.1±5.26ns 1400.9±3.97ns -2.45%
Static Object Property Access (Execution) 6.3±0.02µs 6.3±0.03µs 0.00%
Static Object Property Access (Parser) 9.6±0.02µs 9.6±0.01µs 0.00%
String Object Access (Compiler) 1472.1±6.61ns 1482.8±7.78ns +0.73%
String Object Access (Execution) 7.4±0.02µs 7.4±0.02µs 0.00%
String Object Access (Parser) 13.7±0.04µs 13.7±0.01µs 0.00%
String comparison (Compiler) 2.1±0.01µs 2.1±0.01µs 0.00%
String comparison (Execution) 5.8±0.01µs 5.7±0.04µs -1.72%
String comparison (Parser) 10.7±0.01µs 10.8±0.01µs +0.93%
String concatenation (Compiler) 1622.9±2.75ns 1629.9±4.11ns +0.43%
String concatenation (Execution) 5.2±0.02µs 5.2±0.02µs 0.00%
String concatenation (Parser) 7.3±0.01µs 7.4±0.01µs +1.37%
String copy (Compiler) 1317.1±1.93ns 1300.5±2.39ns -1.26%
String copy (Execution) 4.7±0.02µs 4.6±0.03µs -2.13%
String copy (Parser) 5.4±0.01µs 5.5±0.01µs +1.85%
Symbols (Compiler) 915.1±3.32ns 904.9±3.18ns -1.11%
Symbols (Execution) 4.5±0.01µs 4.4±0.01µs -2.22%
Symbols (Parser) 4.2±0.01µs 4.2±0.01µs 0.00%

@Razican Razican requested a review from RageKnify March 12, 2022 19:33
@HalidOdat
Copy link
Member

bors r+

bors bot pushed a commit that referenced this pull request Mar 13, 2022
It changes the following:

- Refreshes the vm and debugging docs to represent the current state
- Fix some bytecode trace output
- Rename a field in the `CodeBlock`
@bors
Copy link

bors bot commented Mar 13, 2022

Pull request successfully merged into main.

Build succeeded:

@bors bors bot changed the title Refresh vm docs and fix bytecode trace output [Merged by Bors] - Refresh vm docs and fix bytecode trace output Mar 13, 2022
@bors bors bot closed this Mar 13, 2022
@bors bors bot deleted the vm-docs branch March 13, 2022 18:58
Razican pushed a commit that referenced this pull request Jun 8, 2022
It changes the following:

- Refreshes the vm and debugging docs to represent the current state
- Fix some bytecode trace output
- Rename a field in the `CodeBlock`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation update documentation enhancement New feature or request vm Issues and PRs related to the Boa Virtual Machine.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants