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

Side by Side Diff: test/mjsunit/compiler/osr-typing-debug-change.js

Issue 2384113002: [turbofan] Osr value typing + dynamic type checks on entry. (Closed)
Patch Set: Fix liveness block Created 4 years, 2 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 | « test/cctest/compiler/test-osr.cc ('k') | 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 --expose-debug-as debug
6
7 var Debug = debug.Debug;
8
9 var changed = false;
10
11 function listenerSetJToResult(
12 event, exec_state, event_data, data) {
13
14 if (event == Debug.DebugEvent.Break) {
15 var scope = exec_state.frame(1).scope(0);
16 var newval = "result";
17 try {
18 scope.setVariableValue("j", newval);
19 changed = true;
20 } catch(e) {
21 changed = false;
22 }
23 }
24 }
25
26 Debug.setListener(listenerSetJToResult);
27
28 function g() { debugger; }
29 %NeverOptimizeFunction(g);
30
31 function ChangeSmiConstantAndOsr() {
32 var j = 1;
33 for (var i = 0; i < 4; i++) {
34 if (i == 2) {
35 %OptimizeOsr();
36 g();
37 }
38 }
39 return j;
40 }
41 var r1 = ChangeSmiConstantAndOsr();
42 if (changed) {
43 assertEquals("result", r1);
44 } else {
45 assertEquals(1, r1);
46 }
47
48 function ChangeFloatConstantAndOsr() {
49 var j = 0.1;
50 for (var i = 0; i < 4; i++) {
51 if (i == 2) {
52 %OptimizeOsr();
53 g();
54 }
55 }
56 return j;
57 }
58 var r2 = ChangeFloatConstantAndOsr();
59 if (changed) {
60 assertEquals("result", r2);
61 } else {
62 assertEquals(0.1, r2);
63 }
64
65 function ChangeFloatVarAndOsr() {
66 var j = 0.1;
67 for (var i = 0; i < 4; i++) {
68 j = j + 0.1;
69 if (i == 2) {
70 %OptimizeOsr();
71 g();
72 }
73 }
74 return j;
75 }
76 var r3 = ChangeFloatVarAndOsr();
77 if (changed) {
78 assertEquals("result0.1", r3);
79 } else {
80 assertEquals(0.5, r3);
81 }
82
83 var counter = 0;
84 var o = { toString : function() { counter++; return 100; } };
85
86 function listenerSetJToObject(
87 event, exec_state, event_data, data) {
88 if (event == Debug.DebugEvent.Break) {
89 var scope = exec_state.frame(1).scope(0);
90 try {
91 scope.setVariableValue("j", o);
92 changed = true;
93 } catch(e) {
94 changed = false;
95 }
96 }
97 }
98
99 Debug.setListener(listenerSetJToObject);
100
101 function ChangeIntVarAndOsr() {
102 var j = 1;
103 for (var i = 0; i < 4; i++) {
104 j = j + 1|0;
105 if (i == 2) {
106 %OptimizeOsr();
107 g();
108 }
109 }
110 return j;
111 }
112
113 var r4 = ChangeIntVarAndOsr();
114 if (changed) {
115 assertEquals(101, r4);
116 assertEquals(1, counter);
117 } else {
118 assertEquals(5, r4);
119 }
OLDNEW
« no previous file with comments | « test/cctest/compiler/test-osr.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698