OLD | NEW |
---|---|
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 1694 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1705 stream->Add("."); | 1705 stream->Add("."); |
1706 stream->Add(*String::cast(*name())->ToCString()); | 1706 stream->Add(*String::cast(*name())->ToCString()); |
1707 } | 1707 } |
1708 | 1708 |
1709 | 1709 |
1710 void HLoadKeyedFastElement::PrintDataTo(StringStream* stream) { | 1710 void HLoadKeyedFastElement::PrintDataTo(StringStream* stream) { |
1711 object()->PrintNameTo(stream); | 1711 object()->PrintNameTo(stream); |
1712 stream->Add("["); | 1712 stream->Add("["); |
1713 key()->PrintNameTo(stream); | 1713 key()->PrintNameTo(stream); |
1714 stream->Add("]"); | 1714 stream->Add("]"); |
1715 if (hole_check_mode_ == PERFORM_HOLE_CHECK) { | 1715 if (IsFastHoleyElementsKind(elements_kind())) { |
Michael Starzinger
2012/06/12 11:30:17
We could base the output of "check_hole" on the re
danno
2012/06/12 12:16:06
Done.
| |
1716 stream->Add(" check_hole"); | 1716 stream->Add(" check_hole"); |
1717 } | 1717 } |
1718 } | 1718 } |
1719 | 1719 |
1720 | 1720 |
1721 bool HLoadKeyedFastElement::RequiresHoleCheck() { | 1721 bool HLoadKeyedFastElement::RequiresHoleCheck() { |
1722 if (hole_check_mode_ == OMIT_HOLE_CHECK) { | 1722 if (IsFastPackedElementsKind(elements_kind())) { |
1723 return false; | 1723 return false; |
1724 } | 1724 } |
1725 | 1725 |
1726 for (HUseIterator it(uses()); !it.Done(); it.Advance()) { | 1726 for (HUseIterator it(uses()); !it.Done(); it.Advance()) { |
1727 HValue* use = it.value(); | 1727 HValue* use = it.value(); |
1728 if (!use->IsChange()) return true; | 1728 if (!use->IsChange()) return true; |
1729 } | 1729 } |
1730 | 1730 |
1731 return false; | 1731 return false; |
1732 } | 1732 } |
(...skipping 25 matching lines...) Expand all Loading... | |
1758 HForInCacheArray* names_cache = | 1758 HForInCacheArray* names_cache = |
1759 HForInCacheArray::cast(key_load->object()); | 1759 HForInCacheArray::cast(key_load->object()); |
1760 | 1760 |
1761 if (names_cache->enumerable() == object()) { | 1761 if (names_cache->enumerable() == object()) { |
1762 HForInCacheArray* index_cache = | 1762 HForInCacheArray* index_cache = |
1763 names_cache->index_cache(); | 1763 names_cache->index_cache(); |
1764 HCheckMapValue* map_check = | 1764 HCheckMapValue* map_check = |
1765 new(block()->zone()) HCheckMapValue(object(), names_cache->map()); | 1765 new(block()->zone()) HCheckMapValue(object(), names_cache->map()); |
1766 HInstruction* index = new(block()->zone()) HLoadKeyedFastElement( | 1766 HInstruction* index = new(block()->zone()) HLoadKeyedFastElement( |
1767 index_cache, | 1767 index_cache, |
1768 key_load->key(), | 1768 key_load->key()); |
1769 OMIT_HOLE_CHECK); | |
1770 map_check->InsertBefore(this); | 1769 map_check->InsertBefore(this); |
1771 index->InsertBefore(this); | 1770 index->InsertBefore(this); |
1772 HLoadFieldByIndex* load = new(block()->zone()) HLoadFieldByIndex( | 1771 HLoadFieldByIndex* load = new(block()->zone()) HLoadFieldByIndex( |
1773 object(), index); | 1772 object(), index); |
1774 load->InsertBefore(this); | 1773 load->InsertBefore(this); |
1775 return load; | 1774 return load; |
1776 } | 1775 } |
1777 } | 1776 } |
1778 } | 1777 } |
1779 | 1778 |
(...skipping 698 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2478 | 2477 |
2479 | 2478 |
2480 void HCheckPrototypeMaps::Verify() { | 2479 void HCheckPrototypeMaps::Verify() { |
2481 HInstruction::Verify(); | 2480 HInstruction::Verify(); |
2482 ASSERT(HasNoUses()); | 2481 ASSERT(HasNoUses()); |
2483 } | 2482 } |
2484 | 2483 |
2485 #endif | 2484 #endif |
2486 | 2485 |
2487 } } // namespace v8::internal | 2486 } } // namespace v8::internal |
OLD | NEW |