Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

asm-js/validator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

163 Commits

Repository files navigation

asm.js

A Mozilla Research project to specify and develop the extremely optimizable subset of JS targeted by compilers like Emscripten, Mandreel, and LLJS.

(削除) Discussion of the asm.js spec now takes place on Specifiction here. (削除ここまで)

The spec repo hosts the source for the current asm.js Working Draft.

This repo hosts JS source code which performs asm.js validation, however as of this update, this code is not up to date with the latest working draft and is not extensively tested. Patches to update it or fix bugs are welcome though.

Example

function mymodule(stdlib, foreign, heap) {
 "use asm";
 // -------------------------------------------------------------------------
 // SECTION 1: globals
 var H32 = new stdlib.Int32Array(heap);
 var HU32 = new stdlib.Uint32Array(heap);
 var log = foreign.consoleDotLog;
 var g_i = 0; // int global
 var g_f = 0.0; // double global
 // -------------------------------------------------------------------------
 // SECTION 2: functions
 function f(x, y) {
 // SECTION A: parameter type declarations
 x = x|0; // int parameter
 y = +y; // double parameter
 // SECTION B: function body
 log(x|0); // call into FFI -- must force the sign
 log(y); // call into FFI -- already know it's a double
 x = (x+3)|0; // signed addition
 // SECTION C: unconditional return
 return ((((x+1)|0)>>>0)/(x>>>0))|0; // compound expression
 }
 function g() {
 g_f = +(g_i|0); // read/write globals
 return;
 }
 
 function g2() {
 return;
 }
 function h(i, x) {
 i = i|0;
 x = x|0;
 H32[i>>2] = x; // shifted by log2(byte count)
 ftable_2[(x-2)&1](); // dynamic call of functions in table 2
 // no return necessary when return type is void
 }
 
 // -------------------------------------------------------------------------
 // SECTION 3: function tables
 var ftable_1 = [f];
 var ftable_2 = [g, g2]; // all of the same type
 // -------------------------------------------------------------------------
 // SECTION 4: exports
 return { f_export: f, goop: g };
}

License

Apache 2.0.

About

A reference validator for asm.js.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 7

AltStyle によって変換されたページ (->オリジナル) /