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

Side by Side Diff: test/mjsunit/compiler/concurrent-invalidate-transition-map.js

Issue 2598543003: [runtime][ic] Constant field tracking support. (Closed)
Patch Set: Created 3 years, 11 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
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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
(...skipping 23 matching lines...) Expand all
34 } 34 }
35 35
36 function new_object() { 36 function new_object() {
37 var o = {}; 37 var o = {};
38 o.a = 1; 38 o.a = 1;
39 o.b = 2; 39 o.b = 2;
40 return o; 40 return o;
41 } 41 }
42 42
43 function add_field(obj) { 43 function add_field(obj) {
44 // Assign twice to make the field non-constant.
45 // TODO(ishell): update test once constant field tracking is done.
46 obj.c = 0;
44 obj.c = 3; 47 obj.c = 3;
45 } 48 }
46 var obj1 = new_object(); 49 var obj1 = new_object();
47 var obj2 = new_object(); 50 var obj2 = new_object();
48 add_field(obj1); 51 add_field(obj1);
49 add_field(obj2); 52 add_field(obj2);
50 %OptimizeFunctionOnNextCall(add_field, "concurrent"); 53 %OptimizeFunctionOnNextCall(add_field, "concurrent");
51 54
52 var o = new_object(); 55 var o = new_object();
53 // Kick off recompilation. 56 // Kick off recompilation.
54 add_field(o); 57 add_field(o);
55 // Invalidate transition map after compile graph has been created. 58 // Invalidate transition map after compile graph has been created.
56 o.c = 2.2; 59 o.c = 2.2;
57 // In the mean time, concurrent recompiling is still blocked. 60 // In the mean time, concurrent recompiling is still blocked.
58 assertUnoptimized(add_field, "no sync"); 61 assertUnoptimized(add_field, "no sync");
59 // Let concurrent recompilation proceed. 62 // Let concurrent recompilation proceed.
60 %UnblockConcurrentRecompilation(); 63 %UnblockConcurrentRecompilation();
61 // Sync with background thread to conclude optimization that bailed out. 64 // Sync with background thread to conclude optimization that bailed out.
62 assertUnoptimized(add_field, "sync"); 65 assertUnoptimized(add_field, "sync");
63 // Clear type info for stress runs. 66 // Clear type info for stress runs.
64 %ClearFunctionTypeFeedback(add_field); 67 %ClearFunctionTypeFeedback(add_field);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698