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

Unified Diff: src/objects.cc

Issue 1154163006: Debugger: consider try-finally scopes not catching wrt debug events. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: remove modes for PredictExceptionCatcher Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/objects.h ('k') | test/cctest/test-debug.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index 91603ffe148340caf791fd2bc0e12807446feaf6..125a76716c034b8b61e74f2d62920fcf6b6615a0 100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -8618,12 +8618,15 @@ Handle<DeoptimizationOutputData> DeoptimizationOutputData::New(
}
-int HandlerTable::LookupRange(int pc_offset, int* stack_depth_out) {
+int HandlerTable::LookupRange(int pc_offset, int* stack_depth_out,
+ CatchPrediction* prediction_out) {
int innermost_handler = -1, innermost_start = -1;
for (int i = 0; i < length(); i += kRangeEntrySize) {
int start_offset = Smi::cast(get(i + kRangeStartIndex))->value();
int end_offset = Smi::cast(get(i + kRangeEndIndex))->value();
- int handler_offset = Smi::cast(get(i + kRangeHandlerIndex))->value();
+ int handler_field = Smi::cast(get(i + kRangeHandlerIndex))->value();
+ int handler_offset = HandlerOffsetField::decode(handler_field);
+ CatchPrediction prediction = HandlerPredictionField::decode(handler_field);
int stack_depth = Smi::cast(get(i + kRangeDepthIndex))->value();
if (pc_offset > start_offset && pc_offset <= end_offset) {
DCHECK_NE(start_offset, innermost_start);
@@ -8631,6 +8634,7 @@ int HandlerTable::LookupRange(int pc_offset, int* stack_depth_out) {
innermost_handler = handler_offset;
innermost_start = start_offset;
*stack_depth_out = stack_depth;
+ if (prediction_out) *prediction_out = prediction;
}
}
return innermost_handler;
@@ -8638,12 +8642,14 @@ int HandlerTable::LookupRange(int pc_offset, int* stack_depth_out) {
// TODO(turbofan): Make sure table is sorted and use binary search.
-int HandlerTable::LookupReturn(int pc_offset, CatchPrediction* prediction) {
+int HandlerTable::LookupReturn(int pc_offset, CatchPrediction* prediction_out) {
for (int i = 0; i < length(); i += kReturnEntrySize) {
int return_offset = Smi::cast(get(i + kReturnOffsetIndex))->value();
int handler_field = Smi::cast(get(i + kReturnHandlerIndex))->value();
if (pc_offset == return_offset) {
- *prediction = HandlerPredictionField::decode(handler_field);
+ if (prediction_out) {
+ *prediction_out = HandlerPredictionField::decode(handler_field);
+ }
return HandlerOffsetField::decode(handler_field);
}
}
@@ -11835,10 +11841,13 @@ void HandlerTable::HandlerTableRangePrint(std::ostream& os) {
for (int i = 0; i < length(); i += kRangeEntrySize) {
int pc_start = Smi::cast(get(i + kRangeStartIndex))->value();
int pc_end = Smi::cast(get(i + kRangeEndIndex))->value();
- int handler = Smi::cast(get(i + kRangeHandlerIndex))->value();
+ int handler_field = Smi::cast(get(i + kRangeHandlerIndex))->value();
+ int handler_offset = HandlerOffsetField::decode(handler_field);
+ CatchPrediction prediction = HandlerPredictionField::decode(handler_field);
int depth = Smi::cast(get(i + kRangeDepthIndex))->value();
os << " (" << std::setw(4) << pc_start << "," << std::setw(4) << pc_end
- << ") -> " << std::setw(4) << handler << " (depth=" << depth << ")\n";
+ << ") -> " << std::setw(4) << handler_offset
+ << " (prediction=" << prediction << ", depth=" << depth << ")\n";
}
}
@@ -11851,7 +11860,7 @@ void HandlerTable::HandlerTableReturnPrint(std::ostream& os) {
int handler_offset = HandlerOffsetField::decode(handler_field);
CatchPrediction prediction = HandlerPredictionField::decode(handler_field);
os << " " << std::setw(4) << pc_offset << " -> " << std::setw(4)
- << handler_offset << " (" << prediction << ")\n";
+ << handler_offset << " (prediction=" << prediction << ")\n";
}
}
« no previous file with comments | « src/objects.h ('k') | test/cctest/test-debug.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698