How does it fair on test262? http://test262.ecmascript.org/

-- 
kangax

On Wed, Oct 19, 2011 at 6:26 AM, Yusuke Suzuki <[email protected]>wrote:

> Hello.
>
> I wrote new ECMA262 5.1 full support engine "iv / lv5" in C++.
> This is highly inspired from JSC, V8 and SpiderMonkey. (especially JSC)
>
> https://github.com/Constellation/iv
>
> This aims at most precise engine to ECMA262 5.1 specification. (like
> the great engine,)
>
> I read ECMA262 and wanted precise engine to understand this spec, so I
> created.
>
> features,
>
>  all ECMA262 5.1th features
>    (strict mode, direct call / indirect call to eval,
> PropertyDescriptor, early errors, Object.prototype.toString.call(null
> / undefined), Object extras, Array extras, etc.)
> BESEN    // for example, directive prologure including octal value and
> strict directive is rejected.
>    function test() { "¥02"; "use strict"; }
>  stack VM
>  JSC like bytecode based PIC
>  ES5 oriented structures in C++ (PropertyDescriptor,
> Attributes(Enumerable, Writable, Configurable))
>  optimized JSArray (using vector and hash map)
>    but this array implements full features of ECMA262 5.1th. for example,
>
>      var ary = [0, 1];
>      Object.defineProperty(ary, 'length', { writable : false });
>      ary.length = 4;  // of cource, in strict mode, this raises error.
>      print(ary.length);  // 2
>      try {
>        ary.push(2);  // throw TypeError, because [DefineOwnProperty]
> with throw = true is called.
>      } catch (e) {
>        print(e);
>      }
>      ary[3] = 2;  // of cource ...
>      print(ary.length);  // 2;
>
>  minimum source code
>  2 engines, VM and AST Interpreter. we can switch it by command line
> option.
>  bytecode based backtrack RegExp (read re1 report and source code to
> study VM based RegExp runtime, and implemented it)
>  ES5 oriented optimization
>    for example,
>      if I get "eval" keyword in strict mode, don't make variable
> dynamic (hold on heap variable with offset access)
>      because direct call to eval in strict mode cannot create new
> variable in upper local call site environment.
>
> At first, I created AST Interpreter (named "teleporter") which
> algorithm is just the same to ECMA262 specification.
> And after it is done, I created optimized bytecode VM (named "railgun").
> These 2 engines are abstracted, so we can switch it at runtime.
> ('--interp option')
> AST Interpreter is very slow, but this source code is exactly the same
> to ECMA262 specification algorithm, so this may be interesting for
> spec readers.
>
> And, SunSpider is available for this engine, so, you can bench it.
> (sorry, probably slow, because of no JIT...)
>
> I'm planning to create own GC (now using BoehmGC library), and create
> JIT module.
>
> Finally, I'm respecting JSC, V8, SpiderMonkey, BESEN implementors great
> works.
>
> Thanks.
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to