UNPKG

walt-compiler

Version:

Alternative syntax for WebAssembly text format

309 lines (308 loc) 8.64 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for src/utils/output-stream.js</title> <meta charset="utf-8" /> <link rel="stylesheet" href="../../prettify.css" /> <link rel="stylesheet" href="../../base.css" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <style type='text/css'> .coverage-summary .sorter { background-image: url(../../sort-arrow-sprite.png); } </style> </head> <body> <div class='wrapper'> <div class='pad1'> <h1> <a href="../../index.html">All files</a> / <a href="index.html">src/utils</a> output-stream.js </h1> <div class='clearfix'> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Statements</span> <span class='fraction'>37/37</span> </div> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Branches</span> <span class='fraction'>12/12</span> </div> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Functions</span> <span class='fraction'>6/6</span> </div> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Lines</span> <span class='fraction'>36/36</span> </div> </div> </div> <div class='status-line high'></div> <pre><table class="coverage"> <tr><td class="line-count quiet">1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82</td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">23x</span> <span class="cline-any cline-yes">23x</span> <span class="cline-any cline-yes">23x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1576x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1576x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">14230x</span> <span class="cline-any cline-yes">14230x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">6297x</span> <span class="cline-any cline-yes">6297x</span> <span class="cline-any cline-yes">6297x</span> <span class="cline-any cline-yes">6297x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">844x</span> <span class="cline-any cline-yes">844x</span> <span class="cline-any cline-yes">844x</span> <span class="cline-any cline-yes">844x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">22x</span> <span class="cline-any cline-yes">22x</span> <span class="cline-any cline-yes">22x</span> <span class="cline-any cline-yes">22x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">7067x</span> <span class="cline-any cline-yes">7067x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">14230x</span> <span class="cline-any cline-yes">14230x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">14230x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">72x</span> <span class="cline-any cline-yes">72x</span> <span class="cline-any cline-yes">72x</span> <span class="cline-any cline-yes">14622x</span> <span class="cline-any cline-yes">8113x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">6779x</span> <span class="cline-any cline-yes">6779x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">72x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1951x</span> <span class="cline-any cline-yes">1453x</span> <span class="cline-any cline-yes">1453x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1951x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">// @flow import invariant from 'invariant'; import { encodeSigned, encodeUnsigned } from './leb128'; import { sizeof, set, u8 } from 'wasm-types'; &nbsp; // Used to output raw binary, holds values and types in a large array 'stream' export default class OutputStream { data: Array&lt;any&gt;; size: number; &nbsp; constructor() { // Our data, expand it this.data = []; &nbsp; // start at the beginning this.size = 0; } &nbsp; push(type: string, value: any, debug: string) { let size = 0; switch (type) { case 'varuint7': case 'varuint32': case 'varint7': case 'varint1': { // Encode all of the LEB128 aka 'var*' types value = encodeUnsigned(value); size = value.length; invariant(size, `Cannot write a value of size ${size}`); break; } case 'varint32': { value = encodeSigned(value); size = value.length; invariant(size, `Cannot write a value of size ${size}`); break; } case 'varint64': { value = encodeSigned(value); size = value.length; invariant(size, `Cannot write a value of size ${size}`); break; } default: { size = sizeof[type]; invariant(size, `Cannot write a value of size ${size}, type ${type}`); } } &nbsp; this.data.push({ type, value, debug }); this.size += size; &nbsp; return this; } &nbsp; // Get the BUFFER, not data array. // Returns a new buffer unless one is passed in to be written to. buffer(buffer: ArrayBuffer = new ArrayBuffer(this.size)) { const view = new DataView(buffer); let pc = 0; this.data.forEach(({ type, value }) =&gt; { if (Array.isArray(value)) { value.forEach(v =&gt; set(u8, pc++, view, v)); } else { set(type, pc, view, value); pc += sizeof[type]; } }); return buffer; } &nbsp; // Writes source OutputStream into the current buffer write(source: ?OutputStream) { if (source) { this.data = this.data.concat(source.data); this.size += source.size; } &nbsp; return this; } } &nbsp;</pre></td></tr> </table></pre> <div class='push'></div><!-- for sticky footer --> </div><!-- /wrapper --> <div class='footer quiet pad2 space-top1 center small'> Code coverage generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Sun Dec 23 2018 17:46:36 GMT+0000 (UTC) </div> </div> <script src="../../prettify.js"></script> <script> window.onload = function () { if (typeof prettyPrint === 'function') { prettyPrint(); } }; </script> <script src="../../sorter.js"></script> </body> </html>