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

Side by Side Diff: test/mjsunit/compiler/inline-construct.js

Issue 10332010: Implement ClearFunctionTypeFeedback for test cases. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « src/runtime.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
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
11 // with the distribution. 11 // with the distribution.
12 // * Neither the name of Google Inc. nor the names of its 12 // * Neither the name of Google Inc. nor the names of its
13 // contributors may be used to endorse or promote products derived 13 // contributors may be used to endorse or promote products derived
14 // from this software without specific prior written permission. 14 // from this software without specific prior written permission.
15 // 15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 27
28 // Flags: --allow-natives-syntax --expose-gc --inline-construct 28 // Flags: --allow-natives-syntax --inline-construct
29 29
30 // Test inlining of constructor calls. 30 // Test inlining of constructor calls.
31 31
32 function TestInlinedConstructor(closure) { 32 function TestInlinedConstructor(closure) {
33 var result; 33 var result;
34 var counter = { value:0 }; 34 var counter = { value:0 };
35 result = closure(11, 12, counter); 35 result = closure(11, 12, counter);
36 assertEquals(23, result); 36 assertEquals(23, result);
37 assertEquals(1, counter.value); 37 assertEquals(1, counter.value);
38 result = closure(23, 19, counter); 38 result = closure(23, 19, counter);
(...skipping 22 matching lines...) Expand all
61 function effect_context(a, b, counter) { 61 function effect_context(a, b, counter) {
62 new constructor(a, b, counter); 62 new constructor(a, b, counter);
63 return a + b; 63 return a + b;
64 } 64 }
65 TestInlinedConstructor(value_context); 65 TestInlinedConstructor(value_context);
66 TestInlinedConstructor(test_context); 66 TestInlinedConstructor(test_context);
67 TestInlinedConstructor(effect_context); 67 TestInlinedConstructor(effect_context);
68 %DeoptimizeFunction(value_context); 68 %DeoptimizeFunction(value_context);
69 %DeoptimizeFunction(test_context); 69 %DeoptimizeFunction(test_context);
70 %DeoptimizeFunction(effect_context); 70 %DeoptimizeFunction(effect_context);
71 gc(); // Makes V8 forget about type information for *_context. 71 %ClearFunctionTypeFeedback(value_context);
72 %ClearFunctionTypeFeedback(test_context);
73 %ClearFunctionTypeFeedback(effect_context);
72 } 74 }
73 75
74 76
75 // Test constructor returning nothing in all contexts. 77 // Test constructor returning nothing in all contexts.
76 function c1(a, b, counter) { 78 function c1(a, b, counter) {
77 this.x = a + b; 79 this.x = a + b;
78 counter.value++; 80 counter.value++;
79 } 81 }
80 TestInAllContexts(c1); 82 TestInAllContexts(c1);
81 83
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 145
144 146
145 // Regression test: Inlined constructors called as functions do not get their 147 // Regression test: Inlined constructors called as functions do not get their
146 // implicit receiver object set to undefined, even in strict mode. 148 // implicit receiver object set to undefined, even in strict mode.
147 function c_strict(a, b, counter) { 149 function c_strict(a, b, counter) {
148 "use strict"; 150 "use strict";
149 this.x = a + b; 151 this.x = a + b;
150 counter.value++; 152 counter.value++;
151 } 153 }
152 TestInAllContexts(c_strict); 154 TestInAllContexts(c_strict);
OLDNEW
« no previous file with comments | « src/runtime.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698