mirror of
https://github.com/bellard/quickjs.git
synced 2025-11-15 10:12:14 +03:00
- optimized global variable access
- removed full compliance with the spec for strict mode variable assignment so that they are as fast as in non strict mode (V8, SpiderMonkey and JavascriptCore do the same, so IMHO the spec should be updated).
This commit is contained in:
@@ -527,22 +527,21 @@ function global_read(n)
|
||||
return n * 4;
|
||||
}
|
||||
|
||||
// non strict version
|
||||
var global_write =
|
||||
(1, eval)(`(function global_write(n)
|
||||
{
|
||||
var j;
|
||||
for(j = 0; j < n; j++) {
|
||||
global_var0 = j;
|
||||
global_var0 = j;
|
||||
global_var0 = j;
|
||||
global_var0 = j;
|
||||
}
|
||||
return n * 4;
|
||||
})`);
|
||||
function global_write(n)
|
||||
{
|
||||
var j;
|
||||
for(j = 0; j < n; j++) {
|
||||
global_var0 = j;
|
||||
global_var0 = j;
|
||||
global_var0 = j;
|
||||
global_var0 = j;
|
||||
}
|
||||
return n * 4;
|
||||
}
|
||||
|
||||
function global_write_strict(n)
|
||||
{
|
||||
"use strict";
|
||||
var j;
|
||||
for(j = 0; j < n; j++) {
|
||||
global_var0 = j;
|
||||
@@ -570,23 +569,22 @@ function local_destruct(n)
|
||||
var global_v1, global_v2, global_v3, global_v4;
|
||||
var global_a, global_b, global_c, global_d;
|
||||
|
||||
// non strict version
|
||||
var global_destruct =
|
||||
(1, eval)(`(function global_destruct(n)
|
||||
{
|
||||
var j, v1, v2, v3, v4;
|
||||
var array = [ 1, 2, 3, 4, 5 ];
|
||||
var o = { a:1, b:2, c:3, d:4 };
|
||||
var a, b, c, d;
|
||||
for(j = 0; j < n; j++) {
|
||||
[ global_v1, global_v2,, global_v3, ...global_v4] = array;
|
||||
({ a: global_a, b: global_b, c: global_c, d: global_d } = o);
|
||||
}
|
||||
return n * 8;
|
||||
})`);
|
||||
function global_destruct(n)
|
||||
{
|
||||
var j, v1, v2, v3, v4;
|
||||
var array = [ 1, 2, 3, 4, 5 ];
|
||||
var o = { a:1, b:2, c:3, d:4 };
|
||||
var a, b, c, d;
|
||||
for(j = 0; j < n; j++) {
|
||||
[ global_v1, global_v2,, global_v3, ...global_v4] = array;
|
||||
({ a: global_a, b: global_b, c: global_c, d: global_d } = o);
|
||||
}
|
||||
return n * 8;
|
||||
}
|
||||
|
||||
function global_destruct_strict(n)
|
||||
{
|
||||
"use strict";
|
||||
var j, v1, v2, v3, v4;
|
||||
var array = [ 1, 2, 3, 4, 5 ];
|
||||
var o = { a:1, b:2, c:3, d:4 };
|
||||
|
||||
Reference in New Issue
Block a user