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

Side by Side Diff: runtime/vm/jit_optimizer.cc

Issue 2771013002: Add more safe points in compiler (Closed)
Patch Set: Add a safe point in the zone allocator Created 3 years, 9 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 (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 #ifndef DART_PRECOMPILED_RUNTIME 4 #ifndef DART_PRECOMPILED_RUNTIME
5 #include "vm/jit_optimizer.h" 5 #include "vm/jit_optimizer.h"
6 6
7 #include "vm/bit_vector.h" 7 #include "vm/bit_vector.h"
8 #include "vm/branch_optimizer.h" 8 #include "vm/branch_optimizer.h"
9 #include "vm/cha.h" 9 #include "vm/cha.h"
10 #include "vm/compiler.h" 10 #include "vm/compiler.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 // Optimize instance calls using cid. This is called after optimizer 55 // Optimize instance calls using cid. This is called after optimizer
56 // converted instance calls to instructions. Any remaining 56 // converted instance calls to instructions. Any remaining
57 // instance calls are either megamorphic calls, cannot be optimized or 57 // instance calls are either megamorphic calls, cannot be optimized or
58 // have no runtime type feedback collected. 58 // have no runtime type feedback collected.
59 // Attempts to convert an instance call (IC call) using propagated class-ids, 59 // Attempts to convert an instance call (IC call) using propagated class-ids,
60 // e.g., receiver class id, guarded-cid, or by guessing cid-s. 60 // e.g., receiver class id, guarded-cid, or by guessing cid-s.
61 void JitOptimizer::ApplyClassIds() { 61 void JitOptimizer::ApplyClassIds() {
62 ASSERT(current_iterator_ == NULL); 62 ASSERT(current_iterator_ == NULL);
63 for (BlockIterator block_it = flow_graph_->reverse_postorder_iterator(); 63 for (BlockIterator block_it = flow_graph_->reverse_postorder_iterator();
64 !block_it.Done(); block_it.Advance()) { 64 !block_it.Done(); block_it.Advance()) {
65 thread()->CheckForSafepoint();
65 ForwardInstructionIterator it(block_it.Current()); 66 ForwardInstructionIterator it(block_it.Current());
66 current_iterator_ = ⁢ 67 current_iterator_ = ⁢
67 for (; !it.Done(); it.Advance()) { 68 for (; !it.Done(); it.Advance()) {
68 Instruction* instr = it.Current(); 69 Instruction* instr = it.Current();
69 if (instr->IsInstanceCall()) { 70 if (instr->IsInstanceCall()) {
70 InstanceCallInstr* call = instr->AsInstanceCall(); 71 InstanceCallInstr* call = instr->AsInstanceCall();
71 if (call->HasICData()) { 72 if (call->HasICData()) {
72 if (TryCreateICData(call)) { 73 if (TryCreateICData(call)) {
73 VisitInstanceCall(call); 74 VisitInstanceCall(call);
74 } 75 }
(...skipping 1794 matching lines...) Expand 10 before | Expand all | Expand 10 after
1869 // Discard the environment from the original instruction because the store 1870 // Discard the environment from the original instruction because the store
1870 // can't deoptimize. 1871 // can't deoptimize.
1871 instr->RemoveEnvironment(); 1872 instr->RemoveEnvironment();
1872 ReplaceCall(instr, store); 1873 ReplaceCall(instr, store);
1873 return true; 1874 return true;
1874 } 1875 }
1875 1876
1876 1877
1877 } // namespace dart 1878 } // namespace dart
1878 #endif // DART_PRECOMPILED_RUNTIME 1879 #endif // DART_PRECOMPILED_RUNTIME
OLDNEW
« no previous file with comments | « runtime/vm/heap.cc ('k') | runtime/vm/pages.h » ('j') | runtime/vm/pages.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698