ccd8073c7b
Moves allocation of the WasmModuleObject for asm.js code out of SyncCompileTranslatedAsmJS since that is called when we are compiling the native context independent SharedFunctionInfo and the WasmModuleObject requires a native context. Instead save the members required to create the object in the AsmWasmData and create it during module instantiation. Note: since the Wasm module is an implementation detail for asm_wasm code and isn't exposed, this doeesn't have semantic change for asm.js code. As part of this change, the AsmWasmData is changed from a FixedArray to a dedicated struct. Some logic is also moved from module-compiler to wasm-engine to make the seperation between Wasm SyncCompile and AsmJS SyncCompile more clear. BUG=chromium:900535,v8:8395 Change-Id: Ia48469c095b0688f210aa86e7430c9ab4ea4b26b Reviewed-on: https://chromium-review.googlesource.com/c/1345509 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#57704}
71 lines
1.4 KiB
JavaScript
71 lines
1.4 KiB
JavaScript
// Copyright 2018 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// Flags: --compiler-dispatcher --parallel-compile-tasks --use-external-strings
|
|
|
|
(function(a) {
|
|
assertEquals(a, "IIFE");
|
|
})("IIFE");
|
|
|
|
(function(a, ...rest) {
|
|
assertEquals(a, 1);
|
|
assertEquals(rest.length, 2);
|
|
assertEquals(rest[0], 2);
|
|
assertEquals(rest[1], 3);
|
|
})(1,2,3);
|
|
|
|
var outer_var = 42;
|
|
|
|
function lazy_outer() {
|
|
return 42;
|
|
}
|
|
|
|
var eager_outer = (function() { return 42; });
|
|
|
|
(function() {
|
|
assertEquals(outer_var, 42);
|
|
assertEquals(lazy_outer(), 42);
|
|
assertEquals(eager_outer(), 42);
|
|
})();
|
|
|
|
var gen = (function*() {
|
|
yield 1;
|
|
yield 2;
|
|
})();
|
|
|
|
assertEquals(gen.next().value, 1);
|
|
assertEquals(gen.next().value, 2);
|
|
|
|
var result = (function recursive(a=0) {
|
|
if (a == 1) {
|
|
return 42;
|
|
}
|
|
return recursive(1);
|
|
})();
|
|
|
|
assertEquals(result, 42);
|
|
|
|
var a = 42;
|
|
var b;
|
|
var c = (a, b = (function z(){ return a+1; })());
|
|
assertEquals(b, 43);
|
|
assertEquals(c, 43);
|
|
var c = (a, b = (function z(){ return a+1; })()) => { return b; };
|
|
assertEquals(c(314), 315);
|
|
|
|
// http://crbug.com/898076
|
|
(function() {
|
|
class foo {};
|
|
}); // Don't call IIFE so that it is compiled during idle time
|
|
|
|
// http://crbug.com/900535
|
|
(function() {
|
|
"use asm";
|
|
function bar(i, j) {
|
|
i = i|0;
|
|
j = j|0;
|
|
}
|
|
return {bar: bar};
|
|
}); // Don't call IIFE so that it is compiled during idle time
|