77f80d0f96
Reason for revert: OK, the failure really does seem to be due to this patch: It triggers Clang to crash FAILED: obj/test/unittests/unittests/function-body-decoder-unittest.obj E:\b\build\slave\cache\cipd\goma/gomacc.exe ../../third_party/llvm-build/Release+Asserts/bin/clang-cl.exe /nologo /showIncludes /FC @obj/test/unittests/unittests/function-body-decoder-unittest.obj.rsp /c ../../test/unittests/wasm/function-body-decoder-unittest.cc /Foobj/test/unittests/unittests/function-body-decoder-unittest.obj /Fd"obj/test/unittests/unittests_cc.pdb" Assertion failed: (NumGaps == 0 || Bias < MaxDefRange) && "large ranges should not have gaps", file E:\b\build\slave\win_upload_clang\build\src\third_party\llvm\lib\MC\MCCodeView.cpp, line 531 Wrote crash dump file "C:\Users\CHROME~2\AppData\Local\Temp\goma_temp.5068\clang-cl.exe-563144.dmp" Let's leave it out for now. Original issue's description: > Reland of [wasm] Enforce that function bodies end with the \"end\" opcode. (patchset #1 id:1 of https://codereview.chromium.org/2628883006/ ) > > Reason for revert: > Try a reland; this might not have been the source of tree-closing. > > Original issue's description: > > Revert of [wasm] Enforce that function bodies end with the \"end\" opcode. (patchset #3 id:40001 of https://codereview.chromium.org/2630553002/ ) > > > > Reason for revert: > > Caused tree to close by failing compilation: > > > > https://build.chromium.org/p/client.v8/builders/V8%20Win64%20-%20clang/builds/4451 > > > > Original issue's description: > > > [wasm] Enforce that function bodies end with the \"end\" opcode. > > > > > > R=rossberg@chromium.org > > > BUG=chromium:575167 > > > > > > Review-Url: https://codereview.chromium.org/2630553002 > > > Cr-Commit-Position: refs/heads/master@{#42286} > > > Committed:fcc6e85ec6
> > > > TBR=mtrofin@chromium.org,rossberg@chromium.org,jbroman@chromium.org,titzer@chromium.org > > # Skipping CQ checks because original CL landed less than 1 days ago. > > NOPRESUBMIT=true > > NOTREECHECKS=true > > NOTRY=true > > BUG=chromium:575167 > > > > Review-Url: https://codereview.chromium.org/2628883006 > > Cr-Commit-Position: refs/heads/master@{#42287} > > Committed:1d32a3989b
> > TBR=mtrofin@chromium.org,rossberg@chromium.org,jbroman@chromium.org,titzer@chromium.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=chromium:575167 > > Review-Url: https://codereview.chromium.org/2628203003 > Cr-Commit-Position: refs/heads/master@{#42296} > Committed:e539bd8e0e
TBR=mtrofin@chromium.org,rossberg@chromium.org,jbroman@chromium.org,titzer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:575167 Review-Url: https://codereview.chromium.org/2633583002 Cr-Commit-Position: refs/heads/master@{#42298}
73 lines
1.9 KiB
JavaScript
73 lines
1.9 KiB
JavaScript
// 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: --expose-wasm
|
|
|
|
load("test/mjsunit/wasm/wasm-constants.js");
|
|
load("test/mjsunit/wasm/wasm-module-builder.js");
|
|
|
|
Debug = debug.Debug
|
|
|
|
var exception = null;
|
|
var break_count = 0;
|
|
|
|
const expected_frames = [
|
|
// func-name; wasm?; pos; line; col
|
|
['call_debugger', false], // --
|
|
['wasm_2', true, 56, 2, 0], // --
|
|
['wasm_1', true, 52, 3, 0], // --
|
|
['testFrameInspection', false], // --
|
|
['', false]
|
|
];
|
|
|
|
function listener(event, exec_state, event_data, data) {
|
|
if (event != Debug.DebugEvent.Break) return;
|
|
++break_count;
|
|
try {
|
|
var break_id = exec_state.break_id;
|
|
var frame_count = exec_state.frameCount();
|
|
assertEquals(expected_frames.length, frame_count, 'frame count');
|
|
|
|
for (var i = 0; i < frame_count; ++i) {
|
|
var frame = exec_state.frame(i);
|
|
assertEquals(expected_frames[i][0], frame.func().name(), 'name at ' + i);
|
|
if (expected_frames[i][1]) { // wasm frame?
|
|
assertEquals(expected_frames[i][3], frame.sourceLine(), 'line at ' + i);
|
|
assertEquals(expected_frames[i][4], frame.sourceColumn(),
|
|
'column at ' + i);
|
|
}
|
|
}
|
|
} catch (e) {
|
|
exception = e;
|
|
}
|
|
};
|
|
|
|
var builder = new WasmModuleBuilder();
|
|
|
|
// wasm_1 calls wasm_2 on offset 2.
|
|
// wasm_2 calls call_debugger on offset 1.
|
|
|
|
builder.addImport("mod", 'func', kSig_v_v);
|
|
|
|
builder.addFunction('wasm_1', kSig_v_v)
|
|
.addBody([kExprNop, kExprCallFunction, 2])
|
|
.exportAs('main');
|
|
|
|
builder.addFunction('wasm_2', kSig_v_v).addBody([kExprCallFunction, 0]);
|
|
|
|
function call_debugger() {
|
|
debugger;
|
|
}
|
|
|
|
var module = builder.instantiate({mod: {func: call_debugger}});
|
|
|
|
(function testFrameInspection() {
|
|
Debug.setListener(listener);
|
|
module.exports.main();
|
|
Debug.setListener(null);
|
|
|
|
assertEquals(1, break_count);
|
|
if (exception) throw exception;
|
|
})();
|