| 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 "src/hydrogen.h" | 5 #include "src/hydrogen.h" |
| 6 | 6 |
| 7 #include <sstream> | 7 #include <sstream> |
| 8 | 8 |
| 9 #include "src/v8.h" | 9 #include "src/v8.h" |
| 10 | 10 |
| (...skipping 1733 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1744 | 1744 |
| 1745 IfBuilder found_key_match(this, &found_key_match_continuation); | 1745 IfBuilder found_key_match(this, &found_key_match_continuation); |
| 1746 found_key_match.Then(); | 1746 found_key_match.Then(); |
| 1747 // Key at current probe matches. Relevant bits in the |details| field must | 1747 // Key at current probe matches. Relevant bits in the |details| field must |
| 1748 // be zero, otherwise the dictionary element requires special handling. | 1748 // be zero, otherwise the dictionary element requires special handling. |
| 1749 HValue* details_index = | 1749 HValue* details_index = |
| 1750 AddUncasted<HAdd>(base_index, Add<HConstant>(start_offset + 2)); | 1750 AddUncasted<HAdd>(base_index, Add<HConstant>(start_offset + 2)); |
| 1751 details_index->ClearFlag(HValue::kCanOverflow); | 1751 details_index->ClearFlag(HValue::kCanOverflow); |
| 1752 HValue* details = | 1752 HValue* details = |
| 1753 Add<HLoadKeyed>(elements, details_index, nullptr, FAST_ELEMENTS); | 1753 Add<HLoadKeyed>(elements, details_index, nullptr, FAST_ELEMENTS); |
| 1754 int details_mask = PropertyDetails::TypeField::kMask | | 1754 int details_mask = PropertyDetails::TypeField::kMask; |
| 1755 PropertyDetails::DeletedField::kMask; | |
| 1756 details = AddUncasted<HBitwise>(Token::BIT_AND, details, | 1755 details = AddUncasted<HBitwise>(Token::BIT_AND, details, |
| 1757 Add<HConstant>(details_mask)); | 1756 Add<HConstant>(details_mask)); |
| 1758 IfBuilder details_compare(this); | 1757 IfBuilder details_compare(this); |
| 1759 details_compare.If<HCompareNumericAndBranch>( | 1758 details_compare.If<HCompareNumericAndBranch>( |
| 1760 details, graph()->GetConstant0(), Token::EQ); | 1759 details, graph()->GetConstant0(), Token::EQ); |
| 1761 details_compare.Then(); | 1760 details_compare.Then(); |
| 1762 HValue* result_index = | 1761 HValue* result_index = |
| 1763 AddUncasted<HAdd>(base_index, Add<HConstant>(start_offset + 1)); | 1762 AddUncasted<HAdd>(base_index, Add<HConstant>(start_offset + 1)); |
| 1764 result_index->ClearFlag(HValue::kCanOverflow); | 1763 result_index->ClearFlag(HValue::kCanOverflow); |
| 1765 Push(Add<HLoadKeyed>(elements, result_index, nullptr, FAST_ELEMENTS)); | 1764 Push(Add<HLoadKeyed>(elements, result_index, nullptr, FAST_ELEMENTS)); |
| (...skipping 11614 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13380 if (ShouldProduceTraceOutput()) { | 13379 if (ShouldProduceTraceOutput()) { |
| 13381 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 13380 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
| 13382 } | 13381 } |
| 13383 | 13382 |
| 13384 #ifdef DEBUG | 13383 #ifdef DEBUG |
| 13385 graph_->Verify(false); // No full verify. | 13384 graph_->Verify(false); // No full verify. |
| 13386 #endif | 13385 #endif |
| 13387 } | 13386 } |
| 13388 | 13387 |
| 13389 } } // namespace v8::internal | 13388 } } // namespace v8::internal |
| OLD | NEW |