376d242fbf
Change-Id: I28f2c87ffae32d16bcfb7cb17ec6e607e7fa2285 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1599172 Commit-Queue: Georg Schmid <gsps@google.com> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#61506}
29 lines
813 B
JavaScript
29 lines
813 B
JavaScript
// Copyright 2019 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
|
|
|
|
// Check that load elimination on const-marked fields works
|
|
(function() {
|
|
function maybe_sideeffect(b) { return 42; }
|
|
|
|
function f(k) {
|
|
let b = { value: k };
|
|
maybe_sideeffect(b);
|
|
let v1 = b.value;
|
|
maybe_sideeffect(b);
|
|
let v2 = b.value;
|
|
%TurbofanStaticAssert(v1 == v2);
|
|
// TODO(gsps): Improve analysis to also propagate stored value
|
|
// Eventually, this should also work:
|
|
// %TurbofanStaticAssert(v2 == k);
|
|
}
|
|
|
|
%NeverOptimizeFunction(maybe_sideeffect);
|
|
f(1);
|
|
f(2);
|
|
%OptimizeFunctionOnNextCall(f);
|
|
f(3);
|
|
})();
|