OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/objects.h" | 5 #include "src/objects.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 #include <iomanip> | 8 #include <iomanip> |
9 #include <sstream> | 9 #include <sstream> |
10 | 10 |
(...skipping 10933 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10944 Handle<FixedArray> literals = isolate->factory()->NewFixedArray( | 10944 Handle<FixedArray> literals = isolate->factory()->NewFixedArray( |
10945 number_of_literals + kFirstLiteralIndex, pretenure); | 10945 number_of_literals + kFirstLiteralIndex, pretenure); |
10946 Handle<LiteralsArray> casted_literals = Handle<LiteralsArray>::cast(literals); | 10946 Handle<LiteralsArray> casted_literals = Handle<LiteralsArray>::cast(literals); |
10947 casted_literals->set_feedback_vector(*vector); | 10947 casted_literals->set_feedback_vector(*vector); |
10948 return casted_literals; | 10948 return casted_literals; |
10949 } | 10949 } |
10950 | 10950 |
10951 | 10951 |
10952 int HandlerTable::LookupRange(int pc_offset, int* stack_depth_out, | 10952 int HandlerTable::LookupRange(int pc_offset, int* stack_depth_out, |
10953 CatchPrediction* prediction_out) { | 10953 CatchPrediction* prediction_out) { |
10954 int innermost_handler = -1, innermost_start = -1; | 10954 int innermost_handler = -1; |
10955 #ifdef DEBUG | 10955 #ifdef DEBUG |
10956 // Assuming that ranges are well nested, we don't need to track the innermost | 10956 // Assuming that ranges are well nested, we don't need to track the innermost |
10957 // end offset. This is just to verify that the table is actually well nested. | 10957 // offsets. This is just to verify that the table is actually well nested. |
| 10958 int innermost_start = std::numeric_limits<int>::min(); |
10958 int innermost_end = std::numeric_limits<int>::max(); | 10959 int innermost_end = std::numeric_limits<int>::max(); |
10959 #endif | 10960 #endif |
10960 for (int i = 0; i < length(); i += kRangeEntrySize) { | 10961 for (int i = 0; i < length(); i += kRangeEntrySize) { |
10961 int start_offset = Smi::cast(get(i + kRangeStartIndex))->value(); | 10962 int start_offset = Smi::cast(get(i + kRangeStartIndex))->value(); |
10962 int end_offset = Smi::cast(get(i + kRangeEndIndex))->value(); | 10963 int end_offset = Smi::cast(get(i + kRangeEndIndex))->value(); |
10963 int handler_field = Smi::cast(get(i + kRangeHandlerIndex))->value(); | 10964 int handler_field = Smi::cast(get(i + kRangeHandlerIndex))->value(); |
10964 int handler_offset = HandlerOffsetField::decode(handler_field); | 10965 int handler_offset = HandlerOffsetField::decode(handler_field); |
10965 CatchPrediction prediction = HandlerPredictionField::decode(handler_field); | 10966 CatchPrediction prediction = HandlerPredictionField::decode(handler_field); |
10966 int stack_depth = Smi::cast(get(i + kRangeDepthIndex))->value(); | 10967 int stack_depth = Smi::cast(get(i + kRangeDepthIndex))->value(); |
10967 if (pc_offset > start_offset && pc_offset <= end_offset) { | 10968 if (pc_offset > start_offset && pc_offset <= end_offset) { |
10968 if (start_offset < innermost_start) continue; | 10969 DCHECK_GE(start_offset, innermost_start); |
10969 DCHECK_LT(end_offset, innermost_end); | 10970 DCHECK_LT(end_offset, innermost_end); |
10970 innermost_handler = handler_offset; | 10971 innermost_handler = handler_offset; |
| 10972 #ifdef DEBUG |
10971 innermost_start = start_offset; | 10973 innermost_start = start_offset; |
10972 #ifdef DEBUG | |
10973 innermost_end = end_offset; | 10974 innermost_end = end_offset; |
10974 #endif | 10975 #endif |
10975 *stack_depth_out = stack_depth; | 10976 *stack_depth_out = stack_depth; |
10976 if (prediction_out) *prediction_out = prediction; | 10977 if (prediction_out) *prediction_out = prediction; |
10977 } | 10978 } |
10978 } | 10979 } |
10979 return innermost_handler; | 10980 return innermost_handler; |
10980 } | 10981 } |
10981 | 10982 |
10982 | 10983 |
(...skipping 8761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
19744 if (cell->value() != *new_value) { | 19745 if (cell->value() != *new_value) { |
19745 cell->set_value(*new_value); | 19746 cell->set_value(*new_value); |
19746 Isolate* isolate = cell->GetIsolate(); | 19747 Isolate* isolate = cell->GetIsolate(); |
19747 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 19748 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
19748 isolate, DependentCode::kPropertyCellChangedGroup); | 19749 isolate, DependentCode::kPropertyCellChangedGroup); |
19749 } | 19750 } |
19750 } | 19751 } |
19751 | 19752 |
19752 } // namespace internal | 19753 } // namespace internal |
19753 } // namespace v8 | 19754 } // namespace v8 |
OLD | NEW |