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

Side by Side Diff: src/hydrogen-instructions.cc

Issue 10209027: Implement tracking and optimizations of packed arrays. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: New upload Created 8 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 1657 matching lines...) Expand 10 before | Expand all | Expand 10 after
1668 stream->Add("."); 1668 stream->Add(".");
1669 stream->Add(*String::cast(*name())->ToCString()); 1669 stream->Add(*String::cast(*name())->ToCString());
1670 } 1670 }
1671 1671
1672 1672
1673 void HLoadKeyedFastElement::PrintDataTo(StringStream* stream) { 1673 void HLoadKeyedFastElement::PrintDataTo(StringStream* stream) {
1674 object()->PrintNameTo(stream); 1674 object()->PrintNameTo(stream);
1675 stream->Add("["); 1675 stream->Add("[");
1676 key()->PrintNameTo(stream); 1676 key()->PrintNameTo(stream);
1677 stream->Add("]"); 1677 stream->Add("]");
1678 if (hole_check_mode_ == PERFORM_HOLE_CHECK) {
1679 stream->Add(" check_hole");
1680 }
1678 } 1681 }
1679 1682
1680 1683
1681 bool HLoadKeyedFastElement::RequiresHoleCheck() { 1684 bool HLoadKeyedFastElement::RequiresHoleCheck() {
1682 if (hole_check_mode_ == OMIT_HOLE_CHECK) { 1685 if (hole_check_mode_ == OMIT_HOLE_CHECK) {
1683 return false; 1686 return false;
1684 } 1687 }
1685 1688
1686 for (HUseIterator it(uses()); !it.Done(); it.Advance()) { 1689 for (HUseIterator it(uses()); !it.Done(); it.Advance()) {
1687 HValue* use = it.value(); 1690 HValue* use = it.value();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1719 HForInCacheArray::cast(key_load->object()); 1722 HForInCacheArray::cast(key_load->object());
1720 1723
1721 if (names_cache->enumerable() == object()) { 1724 if (names_cache->enumerable() == object()) {
1722 HForInCacheArray* index_cache = 1725 HForInCacheArray* index_cache =
1723 names_cache->index_cache(); 1726 names_cache->index_cache();
1724 HCheckMapValue* map_check = 1727 HCheckMapValue* map_check =
1725 new(block()->zone()) HCheckMapValue(object(), names_cache->map()); 1728 new(block()->zone()) HCheckMapValue(object(), names_cache->map());
1726 HInstruction* index = new(block()->zone()) HLoadKeyedFastElement( 1729 HInstruction* index = new(block()->zone()) HLoadKeyedFastElement(
1727 index_cache, 1730 index_cache,
1728 key_load->key(), 1731 key_load->key(),
1729 HLoadKeyedFastElement::OMIT_HOLE_CHECK); 1732 OMIT_HOLE_CHECK);
1730 HLoadFieldByIndex* load = new(block()->zone()) HLoadFieldByIndex( 1733 HLoadFieldByIndex* load = new(block()->zone()) HLoadFieldByIndex(
1731 object(), index); 1734 object(), index);
1732 map_check->InsertBefore(this); 1735 map_check->InsertBefore(this);
1733 index->InsertBefore(this); 1736 index->InsertBefore(this);
1734 load->InsertBefore(this); 1737 load->InsertBefore(this);
1735 return load; 1738 return load;
1736 } 1739 }
1737 } 1740 }
1738 } 1741 }
1739 1742
(...skipping 27 matching lines...) Expand all
1767 case EXTERNAL_FLOAT_ELEMENTS: 1770 case EXTERNAL_FLOAT_ELEMENTS:
1768 stream->Add("float"); 1771 stream->Add("float");
1769 break; 1772 break;
1770 case EXTERNAL_DOUBLE_ELEMENTS: 1773 case EXTERNAL_DOUBLE_ELEMENTS:
1771 stream->Add("double"); 1774 stream->Add("double");
1772 break; 1775 break;
1773 case EXTERNAL_PIXEL_ELEMENTS: 1776 case EXTERNAL_PIXEL_ELEMENTS:
1774 stream->Add("pixel"); 1777 stream->Add("pixel");
1775 break; 1778 break;
1776 case FAST_ELEMENTS: 1779 case FAST_ELEMENTS:
1777 case FAST_SMI_ONLY_ELEMENTS: 1780 case FAST_SMI_ELEMENTS:
1778 case FAST_DOUBLE_ELEMENTS: 1781 case FAST_DOUBLE_ELEMENTS:
1782 case FAST_HOLEY_ELEMENTS:
1783 case FAST_HOLEY_SMI_ELEMENTS:
1784 case FAST_HOLEY_DOUBLE_ELEMENTS:
1779 case DICTIONARY_ELEMENTS: 1785 case DICTIONARY_ELEMENTS:
1780 case NON_STRICT_ARGUMENTS_ELEMENTS: 1786 case NON_STRICT_ARGUMENTS_ELEMENTS:
1781 UNREACHABLE(); 1787 UNREACHABLE();
1782 break; 1788 break;
1783 } 1789 }
1784 stream->Add("["); 1790 stream->Add("[");
1785 key()->PrintNameTo(stream); 1791 key()->PrintNameTo(stream);
1786 stream->Add("]"); 1792 stream->Add("]");
1787 } 1793 }
1788 1794
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1865 break; 1871 break;
1866 case EXTERNAL_FLOAT_ELEMENTS: 1872 case EXTERNAL_FLOAT_ELEMENTS:
1867 stream->Add("float"); 1873 stream->Add("float");
1868 break; 1874 break;
1869 case EXTERNAL_DOUBLE_ELEMENTS: 1875 case EXTERNAL_DOUBLE_ELEMENTS:
1870 stream->Add("double"); 1876 stream->Add("double");
1871 break; 1877 break;
1872 case EXTERNAL_PIXEL_ELEMENTS: 1878 case EXTERNAL_PIXEL_ELEMENTS:
1873 stream->Add("pixel"); 1879 stream->Add("pixel");
1874 break; 1880 break;
1875 case FAST_SMI_ONLY_ELEMENTS: 1881 case FAST_SMI_ELEMENTS:
1876 case FAST_ELEMENTS: 1882 case FAST_ELEMENTS:
1877 case FAST_DOUBLE_ELEMENTS: 1883 case FAST_DOUBLE_ELEMENTS:
1884 case FAST_HOLEY_SMI_ELEMENTS:
1885 case FAST_HOLEY_ELEMENTS:
1886 case FAST_HOLEY_DOUBLE_ELEMENTS:
1878 case DICTIONARY_ELEMENTS: 1887 case DICTIONARY_ELEMENTS:
1879 case NON_STRICT_ARGUMENTS_ELEMENTS: 1888 case NON_STRICT_ARGUMENTS_ELEMENTS:
1880 UNREACHABLE(); 1889 UNREACHABLE();
1881 break; 1890 break;
1882 } 1891 }
1883 stream->Add("["); 1892 stream->Add("[");
1884 key()->PrintNameTo(stream); 1893 key()->PrintNameTo(stream);
1885 stream->Add("] = "); 1894 stream->Add("] = ");
1886 value()->PrintNameTo(stream); 1895 value()->PrintNameTo(stream);
1887 } 1896 }
1888 1897
1889 1898
1890 void HTransitionElementsKind::PrintDataTo(StringStream* stream) { 1899 void HTransitionElementsKind::PrintDataTo(StringStream* stream) {
1891 object()->PrintNameTo(stream); 1900 object()->PrintNameTo(stream);
1892 stream->Add(" %p -> %p", *original_map(), *transitioned_map()); 1901 ElementsKind from_kind = original_map()->elements_kind();
1902 ElementsKind to_kind = transitioned_map()->elements_kind();
1903 stream->Add(" %p [%s] -> %p [%s]",
1904 *original_map(),
1905 ElementsAccessor::ForKind(from_kind)->name(),
1906 *transitioned_map(),
1907 ElementsAccessor::ForKind(to_kind)->name());
1893 } 1908 }
1894 1909
1895 1910
1896 void HLoadGlobalCell::PrintDataTo(StringStream* stream) { 1911 void HLoadGlobalCell::PrintDataTo(StringStream* stream) {
1897 stream->Add("[%p]", *cell()); 1912 stream->Add("[%p]", *cell());
1898 if (!details_.IsDontDelete()) stream->Add(" (deleteable)"); 1913 if (!details_.IsDontDelete()) stream->Add(" (deleteable)");
1899 if (details_.IsReadOnly()) stream->Add(" (read-only)"); 1914 if (details_.IsReadOnly()) stream->Add(" (read-only)");
1900 } 1915 }
1901 1916
1902 1917
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after
2426 2441
2427 2442
2428 void HCheckPrototypeMaps::Verify() { 2443 void HCheckPrototypeMaps::Verify() {
2429 HInstruction::Verify(); 2444 HInstruction::Verify();
2430 ASSERT(HasNoUses()); 2445 ASSERT(HasNoUses());
2431 } 2446 }
2432 2447
2433 #endif 2448 #endif
2434 2449
2435 } } // namespace v8::internal 2450 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/hydrogen-instructions.h ('k') | src/ia32/builtins-ia32.cc » ('j') | src/objects.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698