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

Unified Diff: runtime/vm/debugger.cc

Issue 383523005: Specify descriptor kind to iterate on. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/coverage.cc ('k') | runtime/vm/object.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/debugger.cc
===================================================================
--- runtime/vm/debugger.cc (revision 38124)
+++ runtime/vm/debugger.cc (working copy)
@@ -359,7 +359,7 @@
if (token_pos_ < 0) {
token_pos_ = Scanner::kNoSourcePos;
GetPcDescriptors();
- PcDescriptors::Iterator iter(pc_desc_);
+ PcDescriptors::Iterator iter(pc_desc_, RawPcDescriptors::kAnyKind);
while (iter.HasNext()) {
const RawPcDescriptors::PcDescriptorRec& rec = iter.Next();
if (rec.pc == pc_) {
@@ -921,17 +921,14 @@
}
-static bool IsSafeDescKind(int8_t kind) {
- return ((kind == RawPcDescriptors::kIcCall) ||
- (kind == RawPcDescriptors::kOptStaticCall) ||
- (kind == RawPcDescriptors::kUnoptStaticCall) ||
- (kind == RawPcDescriptors::kClosureCall) ||
- (kind == RawPcDescriptors::kRuntimeCall));
-}
+const uint8_t kSafepointKind =
+ RawPcDescriptors::kIcCall | RawPcDescriptors::kOptStaticCall |
+ RawPcDescriptors::kUnoptStaticCall | RawPcDescriptors::kClosureCall |
+ RawPcDescriptors::kRuntimeCall;
-static bool IsSafePoint(const RawPcDescriptors::PcDescriptorRec& rec) {
- return IsSafeDescKind(rec.kind()) && (rec.token_pos != Scanner::kNoSourcePos);
+static bool HasTokenPos(const RawPcDescriptors::PcDescriptorRec& rec) {
+ return rec.token_pos != Scanner::kNoSourcePos;
}
@@ -949,7 +946,7 @@
ASSERT(!code.IsNull());
ASSERT(token_pos_ > 0);
ASSERT(pc_ != 0);
- ASSERT(IsSafeDescKind(breakpoint_kind_));
+ ASSERT((breakpoint_kind_ & kSafepointKind) != 0);
}
@@ -1202,10 +1199,10 @@
DeoptimizeWorld();
ASSERT(!target_function.HasOptimizedCode());
PcDescriptors& desc = PcDescriptors::Handle(isolate, code.pc_descriptors());
- PcDescriptors::Iterator iter(desc);
+ PcDescriptors::Iterator iter(desc, kSafepointKind);
while (iter.HasNext()) {
const RawPcDescriptors::PcDescriptorRec& rec = iter.Next();
- if (IsSafePoint(rec)) {
+ if (HasTokenPos(rec)) {
CodeBreakpoint* bpt = GetCodeBreakpoint(rec.pc);
if (bpt != NULL) {
// There is already a breakpoint for this address. Make sure
@@ -1253,10 +1250,10 @@
bool is_closure_call = false;
const PcDescriptors& pc_desc =
PcDescriptors::Handle(isolate, code.pc_descriptors());
- PcDescriptors::Iterator iter(pc_desc);
+ PcDescriptors::Iterator iter(pc_desc, RawPcDescriptors::kClosureCall);
while (iter.HasNext()) {
const RawPcDescriptors::PcDescriptorRec& rec = iter.Next();
- if ((rec.pc == pc) && (rec.kind() == RawPcDescriptors::kClosureCall)) {
+ if (rec.pc == pc) {
is_closure_call = true;
break;
}
@@ -1552,12 +1549,12 @@
const RawPcDescriptors::PcDescriptorRec* lowest_pc_rec = NULL;
const RawPcDescriptors::PcDescriptorRec* rec = NULL;
- PcDescriptors::Iterator iter(desc);
+ PcDescriptors::Iterator iter(desc, kSafepointKind);
while (iter.HasNext()) {
rec = &iter.Next();
intptr_t desc_token_pos = rec->token_pos;
ASSERT(desc_token_pos >= 0);
- if (IsSafePoint(*rec)) {
+ if (HasTokenPos(*rec)) {
if ((desc_token_pos < requested_token_pos) ||
(desc_token_pos > last_token_pos)) {
// This descriptor is outside the desired token range.
@@ -1605,12 +1602,12 @@
uword lowest_pc = kUwordMax;
// Find the safe point with the lowest compiled code address
// that maps to the token position of the source breakpoint.
- PcDescriptors::Iterator iter(desc);
+ PcDescriptors::Iterator iter(desc, kSafepointKind);
const RawPcDescriptors::PcDescriptorRec* lowest_rec = NULL;
while (iter.HasNext()) {
const RawPcDescriptors::PcDescriptorRec& rec = iter.Next();
intptr_t desc_token_pos = rec.token_pos;
- if ((desc_token_pos == bpt->token_pos_) && IsSafePoint(rec)) {
+ if ((desc_token_pos == bpt->token_pos_) && HasTokenPos(rec)) {
if (rec.pc < lowest_pc) {
lowest_pc = rec.pc;
lowest_rec = &rec;
« no previous file with comments | « runtime/vm/coverage.cc ('k') | runtime/vm/object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698