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

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

Issue 11411351: Implement basic array prefetching hints in Hydrogen. Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 7 years, 11 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
« no previous file with comments | « src/hydrogen-instructions.h ('k') | src/ia32/lithium-codegen-ia32.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 2030 matching lines...) Expand 10 before | Expand all | Expand 10 after
2041 stream->Add(" + %d]", index_offset()); 2041 stream->Add(" + %d]", index_offset());
2042 } else { 2042 } else {
2043 stream->Add("]"); 2043 stream->Add("]");
2044 } 2044 }
2045 2045
2046 if (HasDependency()) { 2046 if (HasDependency()) {
2047 stream->Add(" "); 2047 stream->Add(" ");
2048 dependency()->PrintNameTo(stream); 2048 dependency()->PrintNameTo(stream);
2049 } 2049 }
2050 2050
2051 stream->Add(" ");
2052 prefetch_distance()->PrintNameTo(stream);
2051 if (RequiresHoleCheck()) { 2053 if (RequiresHoleCheck()) {
2052 stream->Add(" check_hole"); 2054 stream->Add(" check_hole");
2053 } 2055 }
2054 } 2056 }
2055 2057
2056 2058
2057 bool HLoadKeyed::RequiresHoleCheck() const { 2059 bool HLoadKeyed::RequiresHoleCheck() const {
2058 if (IsFastPackedElementsKind(elements_kind())) { 2060 if (IsFastPackedElementsKind(elements_kind())) {
2059 return false; 2061 return false;
2060 } 2062 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2094 2096
2095 if (names_cache->enumerable() == object()) { 2097 if (names_cache->enumerable() == object()) {
2096 HForInCacheArray* index_cache = 2098 HForInCacheArray* index_cache =
2097 names_cache->index_cache(); 2099 names_cache->index_cache();
2098 HCheckMapValue* map_check = 2100 HCheckMapValue* map_check =
2099 new(block()->zone()) HCheckMapValue(object(), names_cache->map()); 2101 new(block()->zone()) HCheckMapValue(object(), names_cache->map());
2100 HInstruction* index = new(block()->zone()) HLoadKeyed( 2102 HInstruction* index = new(block()->zone()) HLoadKeyed(
2101 index_cache, 2103 index_cache,
2102 key_load->key(), 2104 key_load->key(),
2103 key_load->key(), 2105 key_load->key(),
2106 key_load->prefetch_distance(),
2104 key_load->elements_kind()); 2107 key_load->elements_kind());
2105 map_check->InsertBefore(this); 2108 map_check->InsertBefore(this);
2106 index->InsertBefore(this); 2109 index->InsertBefore(this);
2107 HLoadFieldByIndex* load = new(block()->zone()) HLoadFieldByIndex( 2110 HLoadFieldByIndex* load = new(block()->zone()) HLoadFieldByIndex(
2108 object(), index); 2111 object(), index);
2109 load->InsertBefore(this); 2112 load->InsertBefore(this);
2110 return load; 2113 return load;
2111 } 2114 }
2112 } 2115 }
2113 } 2116 }
(...skipping 678 matching lines...) Expand 10 before | Expand all | Expand 10 after
2792 2795
2793 2796
2794 void HCheckFunction::Verify() { 2797 void HCheckFunction::Verify() {
2795 HInstruction::Verify(); 2798 HInstruction::Verify();
2796 ASSERT(HasNoUses()); 2799 ASSERT(HasNoUses());
2797 } 2800 }
2798 2801
2799 #endif 2802 #endif
2800 2803
2801 } } // namespace v8::internal 2804 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/hydrogen-instructions.h ('k') | src/ia32/lithium-codegen-ia32.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698