a784ec8ae7
This is a reland of commit 532ca59910
Fix interger overflow when result_location is invalid in
MaglevCompiler::InReturnValues.
Original change's description:
> [maglev] Support LdaModuleVariable and StaModuleVariable
>
> Bug: v8:7700
> Change-Id: I036ac71324e0c1c96a4da4aacdb5a6718726db31
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3821203
> Reviewed-by: Victor Gomes <victorgomes@chromium.org>
> Commit-Queue: 王澳 <wangao.james@bytedance.com>
> Cr-Commit-Position: refs/heads/main@{#82347}
Bug: v8:7700
Change-Id: I24f56691eefd1c6cb695fedd3b5c14264bb17943
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3824942
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/main@{#82379}
34 lines
884 B
JavaScript
34 lines
884 B
JavaScript
// Copyright 2022 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: --allow-natives-syntax --maglev --no-stress-opt --no-always-turbofan
|
|
|
|
// Test LdaModuleVariable with imports.
|
|
import {b} from './lda-module-variable-import.mjs'
|
|
|
|
function bar(y) {
|
|
// b = 1.
|
|
return b + y;
|
|
};
|
|
%PrepareFunctionForOptimization(bar);
|
|
assertEquals(2, bar(1));
|
|
assertEquals(3, bar(2));
|
|
%OptimizeMaglevOnNextCall(bar);
|
|
assertEquals(2, bar(1));
|
|
assertEquals(3, bar(2));
|
|
assertTrue(isMaglevved(bar));
|
|
|
|
// Test LdaModuleVariable with exports.
|
|
export let x = 1;
|
|
function foo(y) { return x + y };
|
|
|
|
%PrepareFunctionForOptimization(foo);
|
|
assertEquals(2, foo(1));
|
|
assertEquals(3, foo(2));
|
|
%OptimizeMaglevOnNextCall(foo);
|
|
assertEquals(2, foo(1));
|
|
assertEquals(3, foo(2));
|
|
assertTrue(isMaglevved(foo));
|
|
|