// Reflect.parse Latin1 var ast = Reflect.parse("function f() { return 3; }"); assertEq(ast.body[0].id.name, "f"); assertEq(isLatin1(ast.body[0].id.name), true); // Reflect.parse TwoByte var ast = Reflect.parse("function f\u1200() { return 3; }"); assertEq(ast.body[0].id.name, "f\u1200"); // obj.toSource Latin1 var o = {}; Object.defineProperty(o, "prop", {get: function() { return 1; }, set: function() { return 2; }, enumerable: true, configurable: true}); assertEq(o.toSource(), "({get prop () { return 1; }, set prop () { return 2; }})"); // obj.toSource TwoByte Object.defineProperty(o, "prop", {get: function() { return "\u1200"; }, set: function() { return "\u1200"; }, enumerable: true}); assertEq(o.toSource(), '({get prop () { return "\\u1200"; }, set prop () { return "\\u1200"; }})'); var ff = function() { return 10; }; ff.toSource = function() { return "((11))"; } Object.defineProperty(o, "prop", {get: ff, set: ff, enumerable: true}); assertEq(o.toSource(), "({prop:((11)), prop:((11))})"); // XDR load(libdir + 'bytecode-cache.js'); // Latin1 string constant test = "'string123';"; evalWithCache(test, { assertEqBytecode: true, assertEqResult : true }); // TwoByte string constant test = "'string\u1234';"; evalWithCache(test, { assertEqBytecode: true, assertEqResult : true });