Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(388)

Side by Side Diff: test/mjsunit/compiler/try-context.js

Issue 1681933002: Add test for exception handler context switch. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2016 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Flags: --allow-natives-syntax
6
7 (function TryBlockCatch() {
8 var global = 0;
9 function f(a) {
10 var x = a + 23
11 try {
12 let y = a + 42;
13 function capture() { return x + y }
14 throw "boom!";
15 } catch(e) {
16 global = x;
17 }
18 return x;
19 }
20 assertEquals(23, f(0));
21 assertEquals(24, f(1));
22 %OptimizeFunctionOnNextCall(f);
23 assertEquals(25, f(2));
24 assertEquals(25, global);
25 })();
26
27 (function TryBlockFinally() {
28 var global = 0;
29 function f(a) {
30 var x = a + 23
31 try {
32 let y = a + 42;
33 function capture() { return x + y }
34 throw "boom!";
35 } finally {
36 global = x;
37 }
38 return x;
39 }
40 assertThrows(function() { f(0) });
41 assertThrows(function() { f(1) });
42 %OptimizeFunctionOnNextCall(f);
43 assertThrows(function() { f(2) });
44 assertEquals(25, global);
45 })();
46
47 (function TryCatchCatch() {
48 var global = 0;
49 function f(a) {
50 var x = a + 23
51 try {
52 try {
53 throw "boom!";
54 } catch(e2) {
55 function capture() { return x + y }
56 throw "boom!";
57 }
58 } catch(e) {
59 global = x;
60 }
61 return x;
62 }
63 assertEquals(23, f(0));
64 assertEquals(24, f(1));
65 %OptimizeFunctionOnNextCall(f);
66 assertEquals(25, f(2));
67 assertEquals(25, global);
68 })();
69
70 (function TryWithCatch() {
71 var global = 0;
72 function f(a) {
73 var x = a + 23
74 try {
75 with ({ y : a + 42 }) {
76 function capture() { return x + y }
77 throw "boom!";
78 }
79 } catch(e) {
80 global = x;
81 }
82 return x;
83 }
84 assertEquals(23, f(0));
85 assertEquals(24, f(1));
86 %OptimizeFunctionOnNextCall(f);
87 assertEquals(25, f(2));
88 assertEquals(25, global);
89 })();
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698