Commit ab97fd76 authored by ahaas's avatar ahaas Committed by Commit bot

[wasm][arm] Emit MaybeCheckConstPool in the trap code generation

Without the check it happened that the builtin call in the trap code
was too far away from the constant pool and therefore crashed.

BUG=v8:6054
R=bmeurer@chromium.org, v8-arm-ports@googlegroups.com

Review-Url: https://codereview.chromium.org/2738683003
Cr-Commit-Position: refs/heads/master@{#43928}
parent 086ec2bd
......@@ -102,6 +102,8 @@ void MacroAssembler::Call(Address target,
RelocInfo::Mode rmode,
Condition cond,
TargetAddressStorageMode mode) {
// Check if we have to emit the constant pool before we block it.
MaybeCheckConstPool();
// Block constant pool for the call instruction sequence.
BlockConstPoolScope block_const_pool(this);
Label start;
......@@ -147,11 +149,8 @@ int MacroAssembler::CallSize(Handle<Code> code,
return CallSize(reinterpret_cast<Address>(code.location()), rmode, cond);
}
void MacroAssembler::Call(Handle<Code> code,
RelocInfo::Mode rmode,
TypeFeedbackId ast_id,
Condition cond,
void MacroAssembler::Call(Handle<Code> code, RelocInfo::Mode rmode,
TypeFeedbackId ast_id, Condition cond,
TargetAddressStorageMode mode) {
Label start;
bind(&start);
......
// Copyright 2017 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.
load('test/mjsunit/wasm/wasm-constants.js');
load('test/mjsunit/wasm/wasm-module-builder.js');
(function() {
var builder = new WasmModuleBuilder();
builder.addMemory(16, 32, false);
builder.addFunction('test', kSig_i_i)
.addBodyWithEnd([
kExprI32Const, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprI32LoadMem8S, 0x00, 0x00,
kExprEnd, // @44
])
.exportFunc();
var module = builder.instantiate();
assertEquals(0, module.exports.test(1));
})();
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment