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

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

Issue 11783066: Optimize function at its entry instead of at exit. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 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 | Annotate | Revision Log
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/stub_code_ia32.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 4
5 #include "vm/object.h" 5 #include "vm/object.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/assembler.h" 9 #include "vm/assembler.h"
10 #include "vm/bigint_operations.h" 10 #include "vm/bigint_operations.h"
(...skipping 6562 matching lines...) Expand 10 before | Expand all | Expand 10 after
6573 result.SetLength(num_descriptors); 6573 result.SetLength(num_descriptors);
6574 } 6574 }
6575 return result.raw(); 6575 return result.raw();
6576 } 6576 }
6577 6577
6578 6578
6579 const char* PcDescriptors::KindAsStr(intptr_t index) const { 6579 const char* PcDescriptors::KindAsStr(intptr_t index) const {
6580 switch (DescriptorKind(index)) { 6580 switch (DescriptorKind(index)) {
6581 case PcDescriptors::kDeoptBefore: return "deopt-before "; 6581 case PcDescriptors::kDeoptBefore: return "deopt-before ";
6582 case PcDescriptors::kDeoptAfter: return "deopt-after "; 6582 case PcDescriptors::kDeoptAfter: return "deopt-after ";
6583 case PcDescriptors::kEntryPatch: return "entry-patch ";
6583 case PcDescriptors::kPatchCode: return "patch "; 6584 case PcDescriptors::kPatchCode: return "patch ";
6584 case PcDescriptors::kLazyDeoptJump: return "lazy-deopt "; 6585 case PcDescriptors::kLazyDeoptJump: return "lazy-deopt ";
6585 case PcDescriptors::kIcCall: return "ic-call "; 6586 case PcDescriptors::kIcCall: return "ic-call ";
6586 case PcDescriptors::kFuncCall: return "fn-call "; 6587 case PcDescriptors::kFuncCall: return "fn-call ";
6587 case PcDescriptors::kReturn: return "return "; 6588 case PcDescriptors::kReturn: return "return ";
6588 case PcDescriptors::kOther: return "other "; 6589 case PcDescriptors::kOther: return "other ";
6589 } 6590 }
6590 UNREACHABLE(); 6591 UNREACHABLE();
6591 return ""; 6592 return "";
6592 } 6593 }
(...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after
7266 return token_pos; 7267 return token_pos;
7267 } 7268 }
7268 7269
7269 7270
7270 uword Code::GetPcForDeoptId(intptr_t deopt_id, PcDescriptors::Kind kind) const { 7271 uword Code::GetPcForDeoptId(intptr_t deopt_id, PcDescriptors::Kind kind) const {
7271 const PcDescriptors& descriptors = PcDescriptors::Handle(pc_descriptors()); 7272 const PcDescriptors& descriptors = PcDescriptors::Handle(pc_descriptors());
7272 for (intptr_t i = 0; i < descriptors.Length(); i++) { 7273 for (intptr_t i = 0; i < descriptors.Length(); i++) {
7273 if ((descriptors.DeoptId(i) == deopt_id) && 7274 if ((descriptors.DeoptId(i) == deopt_id) &&
7274 (descriptors.DescriptorKind(i) == kind)) { 7275 (descriptors.DescriptorKind(i) == kind)) {
7275 uword pc = descriptors.PC(i); 7276 uword pc = descriptors.PC(i);
7276 ASSERT((EntryPoint() < pc) && (pc < (EntryPoint() + Size()))); 7277 ASSERT((EntryPoint() <= pc) && (pc < (EntryPoint() + Size())));
7277 return pc; 7278 return pc;
7278 } 7279 }
7279 } 7280 }
7280 return 0; 7281 return 0;
7281 } 7282 }
7282 7283
7283 7284
7284 uword Code::GetDeoptBeforePcAtDeoptId(intptr_t deopt_id) const { 7285 uword Code::GetDeoptBeforePcAtDeoptId(intptr_t deopt_id) const {
7285 ASSERT(!is_optimized()); 7286 ASSERT(!is_optimized());
7286 return GetPcForDeoptId(deopt_id, PcDescriptors::kDeoptBefore); 7287 return GetPcForDeoptId(deopt_id, PcDescriptors::kDeoptBefore);
(...skipping 5141 matching lines...) Expand 10 before | Expand all | Expand 10 after
12428 } 12429 }
12429 return result.raw(); 12430 return result.raw();
12430 } 12431 }
12431 12432
12432 12433
12433 const char* WeakProperty::ToCString() const { 12434 const char* WeakProperty::ToCString() const {
12434 return "_WeakProperty"; 12435 return "_WeakProperty";
12435 } 12436 }
12436 12437
12437 } // namespace dart 12438 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/stub_code_ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698