Changeset 220752 in webkit


Ignore:
Timestamp:
Aug 15, 2017 1:11:57 PM (7 years ago)
Author:
msaboff@apple.com
Message:

Add Offline Assembler parsing test to RexBench
https://bugs.webkit.org/show_bug.cgi?id=175581

Reviewed by Saam Barati.

This is a port of the JavaScriptCore offline assmebler's lexer, parser, AST and
supporting code from Ruby to JavaScript turned into a benchmark. The benchmark
timing includes parsing through AST. The validation processing time is not
part of the benchmark measurement.

The input data is the current tip of tree LLInt .asm source files. Those file
were converted to JavaScript using the python script, convert_asm_to_js.py.
There is also a new JavaScript file, generate_expected.js, to create the
expected output JavaScript file.

  • RexBench/OfflineAssembler: Added.
  • RexBench/OfflineAssembler/ast.js: Added.
  • RexBench/OfflineAssembler/instructions.js: Added.
  • RexBench/OfflineAssembler/parser.js: Added.
  • RexBench/OfflineAssembler/registers.js: Added.

These are JavaScript translation of the Ruby Offline Assembler. Code not
needed for the benchmark was not translated and therefore missing.

  • RexBench/OfflineAssembler/InitBytecodes.asm: Added.
  • RexBench/OfflineAssembler/InitBytecodes.js: Added.
  • RexBench/OfflineAssembler/LowLevelInterpreter.asm: Added.
  • RexBench/OfflineAssembler/LowLevelInterpreter.js: Added.
  • RexBench/OfflineAssembler/LowLevelInterpreter32_64.asm: Added.
  • RexBench/OfflineAssembler/LowLevelInterpreter32_64.js: Added.
  • RexBench/OfflineAssembler/LowLevelInterpreter64.asm: Added.
  • RexBench/OfflineAssembler/LowLevelInterpreter64.js: Added.

Copies of the current LLInt source and conversion to JavaScript.

  • RexBench/OfflineAssembler/file.js: Added.

(File):
(File.open):
(File.prototype.read):
Mock File class used to simulate filesystem access.

  • RexBench/OfflineAssembler/expected.js: Added.

Expected output of the AST dumped and split into individual lines.

  • RexBench/OfflineAssembler/benchmark.js: Added.

(OfflineAssemblerBenchmark):
(OfflineAssemblerBenchmark.prototype.runOnce):
(OfflineAssemblerBenchmark.prototype.validate):
Benchmark sub class for this test.

  • RexBench/OfflineAssembler/convert_asm_to_js.py: Added.

(convertFile):
Converts .asm into .js files compatible to the benchmark.

  • RexBench/OfflineAssembler/generate_expected.js: Added.

Converts AST output into the expected file format.

  • RexBench/about.html: Added description of this sub-benchmark test.
  • RexBench/cli.js:
  • RexBench/glue.js:
  • RexBench/index.html:
  • RexBench/offline_assembler_benchmark.js: Added.

Updates to add this sub-benchmark.

Location:
trunk/PerformanceTests
Files:
19 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/PerformanceTests/ChangeLog

    r220502 r220752  
     12017-08-15  Michael Saboff  <msaboff@apple.com>
     2
     3        Add Offline Assembler parsing test to RexBench
     4        https://bugs.webkit.org/show_bug.cgi?id=175581
     5
     6        Reviewed by Saam Barati.
     7
     8        This is a port of the JavaScriptCore offline assmebler's lexer, parser, AST and
     9        supporting code from Ruby to JavaScript turned into a benchmark.  The benchmark
     10        timing includes parsing through AST.  The validation processing time is not
     11        part of the benchmark measurement.
     12
     13        The input data is the current tip of tree LLInt .asm source files.  Those file
     14        were converted to JavaScript using the python script, convert_asm_to_js.py.
     15        There is also a new JavaScript file, generate_expected.js, to create the
     16        expected output JavaScript file.
     17
     18        * RexBench/OfflineAssembler: Added.
     19        * RexBench/OfflineAssembler/ast.js: Added.
     20        * RexBench/OfflineAssembler/instructions.js: Added.
     21        * RexBench/OfflineAssembler/parser.js: Added.
     22        * RexBench/OfflineAssembler/registers.js: Added.
     23        These are JavaScript translation of the Ruby Offline Assembler.  Code not
     24        needed for the benchmark was not translated and therefore missing.
     25
     26        * RexBench/OfflineAssembler/InitBytecodes.asm: Added.
     27        * RexBench/OfflineAssembler/InitBytecodes.js: Added.
     28        * RexBench/OfflineAssembler/LowLevelInterpreter.asm: Added.
     29        * RexBench/OfflineAssembler/LowLevelInterpreter.js: Added.
     30        * RexBench/OfflineAssembler/LowLevelInterpreter32_64.asm: Added.
     31        * RexBench/OfflineAssembler/LowLevelInterpreter32_64.js: Added.
     32        * RexBench/OfflineAssembler/LowLevelInterpreter64.asm: Added.
     33        * RexBench/OfflineAssembler/LowLevelInterpreter64.js: Added.
     34        Copies of the current LLInt source and conversion to JavaScript.
     35
     36        * RexBench/OfflineAssembler/file.js: Added.
     37        (File):
     38        (File.open):
     39        (File.prototype.read):
     40        Mock File class used to simulate filesystem access.
     41
     42        * RexBench/OfflineAssembler/expected.js: Added.
     43        Expected output of the AST dumped and split into individual lines.
     44
     45        * RexBench/OfflineAssembler/benchmark.js: Added.
     46        (OfflineAssemblerBenchmark):
     47        (OfflineAssemblerBenchmark.prototype.runOnce):
     48        (OfflineAssemblerBenchmark.prototype.validate):
     49        Benchmark sub class for this test.
     50
     51        * RexBench/OfflineAssembler/convert_asm_to_js.py: Added.
     52        (convertFile):
     53        Converts .asm into .js files compatible to the benchmark.
     54
     55        * RexBench/OfflineAssembler/generate_expected.js: Added.
     56        Converts AST output into the expected file format.
     57
     58        * RexBench/about.html: Added description of this sub-benchmark test.
     59
     60        * RexBench/cli.js:
     61        * RexBench/glue.js:
     62        * RexBench/index.html:
     63        * RexBench/offline_assembler_benchmark.js: Added.
     64        Updates to add this sub-benchmark.
     65
    1662017-08-09  Myles C. Maxfield  <mmaxfield@apple.com>
    267
  • trunk/PerformanceTests/RexBench/about.html

    r220307 r220752  
    2323        <p>Basic is the lexer / parser part of the benchmark test of the same name from the <a href="http://browserbench.org/ARES-6/">ARES-6</a> benchmark.</p>
    2424
     25        <p>Offline Assembler is the lexer, parser and AST layer of the offline assembler for JavaScriptCore.  It has been ported to JavaScript from the original Ruby.</p>
     26
    2527        <p>Flight Planner is a newly written benchmark taken from a flight management web application.  Flight Planner parses aircraft flight plans and computes distance, course and elapsed times for legs of flight plans as well as total time.  It uses FAA data for airports, navigation aids and airways.  The flight management app was originally written to help compete in a flying proficiency event.  See <a href="http://www.hwdairrally.org/index.shtml">Hayward Air Rally</a>.
    2628        </p>
  • trunk/PerformanceTests/RexBench/cli.js

    r220485 r220752  
    5353load("octane2_benchmark.js");
    5454load("basic_benchmark.js");
     55load("offline_assembler_benchmark.js");
    5556load("flightplan_benchmark.js");
    5657load("flightplan_unicode_benchmark.js");
  • trunk/PerformanceTests/RexBench/glue.js

    r220307 r220752  
    4040
    4141{
    42     const title = "RexBench 0.90";
     42    const title = "RexBench 0.92";
    4343    if (isInBrowser) {
    4444        document.title = title;
     
    5151driver.addBenchmark(Octane2RegExpBenchmarkRunner);
    5252driver.addBenchmark(BasicBenchmarkRunner);
     53driver.addBenchmark(OfflineAssemblerBenchmarkRunner);
    5354driver.addBenchmark(FlightPlannerBenchmarkRunner);
    5455driver.addBenchmark(FlightPlannerUnicodeBenchmarkRunner);
  • trunk/PerformanceTests/RexBench/index.html

    r220307 r220752  
    116116        </div>
    117117
     118        <div class="offline assembler test">
     119            <h2 id="OfflineAssemblerMessage">Offline Assembler</h2>
     120           
     121            <div class="score">
     122                <label>First Iteration</label>
     123                <span id="OfflineAssemblerFirstIteration">
     124                    <span class="value">0</span><span class="units">ms</span>                   
     125                </span>
     126            </div>
     127 
     128            <div class="score">
     129                <label>Worst 4 Iteratons</label>
     130                <span id="OfflineAssemblerAverageWorstCase">
     131                    <span class="value">0</span><span class="units">ms</span>                   
     132                </span>
     133            </div>
     134
     135            <div class="score">
     136                <label>Average</label>
     137                <span id="OfflineAssemblerSteadyState">
     138                    <span class="value">0</span><span class="units">ms</span>                   
     139                </span>
     140            </div>
     141        </div>
     142
    118143        <div class="flight planner test">
    119144            <h2 id="FlightPlannerMessage">Flight Planner</h2>
     
    173198    <script src="octane2_benchmark.js"></script>
    174199    <script src="basic_benchmark.js"></script>
     200    <script src="offline_assembler_benchmark.js"></script>
    175201    <script src="flightplan_benchmark.js"></script>
    176202    <script src="flightplan_unicode_benchmark.js"></script>
Note: See TracChangeset for help on using the changeset viewer.