| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 <iomanip> | 5 #include <iomanip> |
| 6 #include <sstream> | 6 #include <sstream> |
| 7 | 7 |
| 8 #include "src/v8.h" | 8 #include "src/v8.h" |
| 9 | 9 |
| 10 #include "src/accessors.h" | 10 #include "src/accessors.h" |
| (...skipping 8620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8631 innermost_handler = handler_offset; | 8631 innermost_handler = handler_offset; |
| 8632 innermost_start = start_offset; | 8632 innermost_start = start_offset; |
| 8633 *stack_depth_out = stack_depth; | 8633 *stack_depth_out = stack_depth; |
| 8634 } | 8634 } |
| 8635 } | 8635 } |
| 8636 return innermost_handler; | 8636 return innermost_handler; |
| 8637 } | 8637 } |
| 8638 | 8638 |
| 8639 | 8639 |
| 8640 // TODO(turbofan): Make sure table is sorted and use binary search. | 8640 // TODO(turbofan): Make sure table is sorted and use binary search. |
| 8641 int HandlerTable::LookupReturn(int pc_offset) { | 8641 int HandlerTable::LookupReturn(int pc_offset, CatchPrediction* prediction) { |
| 8642 for (int i = 0; i < length(); i += kReturnEntrySize) { | 8642 for (int i = 0; i < length(); i += kReturnEntrySize) { |
| 8643 int return_offset = Smi::cast(get(i + kReturnOffsetIndex))->value(); | 8643 int return_offset = Smi::cast(get(i + kReturnOffsetIndex))->value(); |
| 8644 int handler_offset = Smi::cast(get(i + kReturnHandlerIndex))->value(); | 8644 int handler_field = Smi::cast(get(i + kReturnHandlerIndex))->value(); |
| 8645 if (pc_offset == return_offset) return handler_offset; | 8645 if (pc_offset == return_offset) { |
| 8646 *prediction = HandlerPredictionField::decode(handler_field); |
| 8647 return HandlerOffsetField::decode(handler_field); |
| 8648 } |
| 8646 } | 8649 } |
| 8647 return -1; | 8650 return -1; |
| 8648 } | 8651 } |
| 8649 | 8652 |
| 8650 | 8653 |
| 8651 #ifdef DEBUG | 8654 #ifdef DEBUG |
| 8652 bool DescriptorArray::IsEqualTo(DescriptorArray* other) { | 8655 bool DescriptorArray::IsEqualTo(DescriptorArray* other) { |
| 8653 if (IsEmpty()) return other->IsEmpty(); | 8656 if (IsEmpty()) return other->IsEmpty(); |
| 8654 if (other->IsEmpty()) return false; | 8657 if (other->IsEmpty()) return false; |
| 8655 if (length() != other->length()) return false; | 8658 if (length() != other->length()) return false; |
| (...skipping 3171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11827 int pc_end = Smi::cast(get(i + kRangeEndIndex))->value(); | 11830 int pc_end = Smi::cast(get(i + kRangeEndIndex))->value(); |
| 11828 int handler = Smi::cast(get(i + kRangeHandlerIndex))->value(); | 11831 int handler = Smi::cast(get(i + kRangeHandlerIndex))->value(); |
| 11829 int depth = Smi::cast(get(i + kRangeDepthIndex))->value(); | 11832 int depth = Smi::cast(get(i + kRangeDepthIndex))->value(); |
| 11830 os << " (" << std::setw(4) << pc_start << "," << std::setw(4) << pc_end | 11833 os << " (" << std::setw(4) << pc_start << "," << std::setw(4) << pc_end |
| 11831 << ") -> " << std::setw(4) << handler << " (depth=" << depth << ")\n"; | 11834 << ") -> " << std::setw(4) << handler << " (depth=" << depth << ")\n"; |
| 11832 } | 11835 } |
| 11833 } | 11836 } |
| 11834 | 11837 |
| 11835 | 11838 |
| 11836 void HandlerTable::HandlerTableReturnPrint(std::ostream& os) { | 11839 void HandlerTable::HandlerTableReturnPrint(std::ostream& os) { |
| 11837 os << " off hdlr\n"; | 11840 os << " off hdlr (c)\n"; |
| 11838 for (int i = 0; i < length(); i += kReturnEntrySize) { | 11841 for (int i = 0; i < length(); i += kReturnEntrySize) { |
| 11839 int pc_offset = Smi::cast(get(i + kReturnOffsetIndex))->value(); | 11842 int pc_offset = Smi::cast(get(i + kReturnOffsetIndex))->value(); |
| 11840 int handler = Smi::cast(get(i + kReturnHandlerIndex))->value(); | 11843 int handler_field = Smi::cast(get(i + kReturnHandlerIndex))->value(); |
| 11844 int handler_offset = HandlerOffsetField::decode(handler_field); |
| 11845 CatchPrediction prediction = HandlerPredictionField::decode(handler_field); |
| 11841 os << " " << std::setw(4) << pc_offset << " -> " << std::setw(4) | 11846 os << " " << std::setw(4) << pc_offset << " -> " << std::setw(4) |
| 11842 << handler << "\n"; | 11847 << handler_offset << " (" << prediction << ")\n"; |
| 11843 } | 11848 } |
| 11844 } | 11849 } |
| 11845 | 11850 |
| 11846 | 11851 |
| 11847 const char* Code::ICState2String(InlineCacheState state) { | 11852 const char* Code::ICState2String(InlineCacheState state) { |
| 11848 switch (state) { | 11853 switch (state) { |
| 11849 case UNINITIALIZED: return "UNINITIALIZED"; | 11854 case UNINITIALIZED: return "UNINITIALIZED"; |
| 11850 case PREMONOMORPHIC: return "PREMONOMORPHIC"; | 11855 case PREMONOMORPHIC: return "PREMONOMORPHIC"; |
| 11851 case MONOMORPHIC: return "MONOMORPHIC"; | 11856 case MONOMORPHIC: return "MONOMORPHIC"; |
| 11852 case PROTOTYPE_FAILURE: | 11857 case PROTOTYPE_FAILURE: |
| (...skipping 5511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 17364 void PropertyCell::SetValueWithInvalidation(Handle<PropertyCell> cell, | 17369 void PropertyCell::SetValueWithInvalidation(Handle<PropertyCell> cell, |
| 17365 Handle<Object> new_value) { | 17370 Handle<Object> new_value) { |
| 17366 if (cell->value() != *new_value) { | 17371 if (cell->value() != *new_value) { |
| 17367 cell->set_value(*new_value); | 17372 cell->set_value(*new_value); |
| 17368 Isolate* isolate = cell->GetIsolate(); | 17373 Isolate* isolate = cell->GetIsolate(); |
| 17369 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 17374 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
| 17370 isolate, DependentCode::kPropertyCellChangedGroup); | 17375 isolate, DependentCode::kPropertyCellChangedGroup); |
| 17371 } | 17376 } |
| 17372 } | 17377 } |
| 17373 } } // namespace v8::internal | 17378 } } // namespace v8::internal |
| OLD | NEW |