[turbofan] Disable LoadElimination completely for asm.js.
There's no point in running the LoadElimination on asm.js functions and it would take serious amount of effort to actually make it correct for the deprecated parts of the pipeline. R=jarin@chromium.org BUG=v8:5308 Review-Url: https://codereview.chromium.org/2276273002 Cr-Commit-Position: refs/heads/master@{#38884}
This commit is contained in:
parent
c83b21ab75
commit
b471d4ab5c
@ -1534,7 +1534,7 @@ bool PipelineImpl::CreateGraph() {
|
||||
RunPrintAndVerify("Escape Analysed");
|
||||
}
|
||||
|
||||
if (FLAG_turbo_load_elimination) {
|
||||
if (!info()->shared_info()->asm_function() && FLAG_turbo_load_elimination) {
|
||||
Run<LoadEliminationPhase>();
|
||||
RunPrintAndVerify("Load eliminated");
|
||||
}
|
||||
|
26
test/mjsunit/asm/load-elimination.js
Normal file
26
test/mjsunit/asm/load-elimination.js
Normal file
@ -0,0 +1,26 @@
|
||||
// Copyright 2016 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
|
||||
|
||||
var stdlib = this;
|
||||
var foreign = {};
|
||||
var heap = new ArrayBuffer(64 * 1024 * 1024);
|
||||
|
||||
var foo = (function(stdlib, foreign, heap) {
|
||||
"use asm";
|
||||
var M16 = new Int16Array(heap);
|
||||
var M32 = new Int32Array(heap);
|
||||
function foo() {
|
||||
M32[0] = 0x12341234;
|
||||
var i = M32[0];
|
||||
return M16[0];
|
||||
}
|
||||
return foo;
|
||||
})(stdlib, foreign, heap);
|
||||
|
||||
assertEquals(0x1234, foo());
|
||||
assertEquals(0x1234, foo());
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
assertEquals(0x1234, foo());
|
Loading…
Reference in New Issue
Block a user