[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:
bmeurer 2016-08-24 23:14:41 -07:00 committed by Commit bot
parent c83b21ab75
commit b471d4ab5c
2 changed files with 27 additions and 1 deletions

View File

@ -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");
}

View 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());