Commit 74c730a0 authored by mstarzinger's avatar mstarzinger Committed by Commit bot

[turbofan] Add mjsunit tests for try-catch-finally and OSR.

This adds some basic tests of the interaction between try-catch and
try-finally statements and OSR in TurboFan. The try-osr test suite
follows the structure of try-deopt closely.

R=titzer@chromium.org
TEST=mjsunit/compiler/try-osr

Review URL: https://codereview.chromium.org/1165103003

Cr-Commit-Position: refs/heads/master@{#28855}
parent 339b27a4
......@@ -80,10 +80,6 @@ TEST(ThrowMessageIndirectly) {
}
// TODO(mstarzinger): Increase test coverage by having similar tests within the
// mjsunit suite to also test integration with other components (e.g. OSR).
TEST(Catch) {
i::FLAG_turbo_try_catch = true;
const char* src =
......
// Copyright 2015 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 --turbo-osr
function OSRInsideTry(x) {
try {
for (var i = 0; i < 10; i++) { if (i == 5) %OptimizeOsr(); }
throw x;
} catch (e) {
return e + 1;
}
return x + 2;
}
assertEquals(24, OSRInsideTry(23));
function OSRInsideCatch(x) {
try {
throw x;
} catch (e) {
for (var i = 0; i < 10; i++) { if (i == 5) %OptimizeOsr(); }
return e + 1;
}
return x + 2;
}
assertEquals(24, OSRInsideCatch(23));
function OSRInsideFinally_Return(x) {
try {
throw x;
} finally {
for (var i = 0; i < 10; i++) { if (i == 5) %OptimizeOsr(); }
return x + 1;
}
return x + 2;
}
assertEquals(24, OSRInsideFinally_Return(23));
function OSRInsideFinally_ReThrow(x) {
try {
throw x;
} finally {
for (var i = 0; i < 10; i++) { if (i == 5) %OptimizeOsr(); }
}
return x + 2;
}
assertThrows("OSRInsideFinally_ReThrow(new Error)", Error);
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