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

Side by Side Diff: src/stub-cache.cc

Issue 14847008: Update deprecated maps before generating optimized code. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed comment Created 7 years, 7 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/stub-cache.h ('k') | src/type-info.cc » ('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 1041 matching lines...) Expand 10 before | Expand all | Expand 10 after
1052 primary_[i].value = empty; 1052 primary_[i].value = empty;
1053 } 1053 }
1054 for (int j = 0; j < kSecondaryTableSize; j++) { 1054 for (int j = 0; j < kSecondaryTableSize; j++) {
1055 secondary_[j].key = heap()->empty_string(); 1055 secondary_[j].key = heap()->empty_string();
1056 secondary_[j].value = empty; 1056 secondary_[j].value = empty;
1057 } 1057 }
1058 } 1058 }
1059 1059
1060 1060
1061 void StubCache::CollectMatchingMaps(SmallMapList* types, 1061 void StubCache::CollectMatchingMaps(SmallMapList* types,
1062 Name* name, 1062 Handle<Name> name,
1063 Code::Flags flags, 1063 Code::Flags flags,
1064 Handle<Context> native_context, 1064 Handle<Context> native_context,
1065 Zone* zone) { 1065 Zone* zone) {
1066 for (int i = 0; i < kPrimaryTableSize; i++) { 1066 for (int i = 0; i < kPrimaryTableSize; i++) {
1067 if (primary_[i].key == name) { 1067 if (primary_[i].key == *name) {
1068 Map* map = primary_[i].map; 1068 Map* map = primary_[i].map;
1069 // Map can be NULL, if the stub is constant function call 1069 // Map can be NULL, if the stub is constant function call
1070 // with a primitive receiver. 1070 // with a primitive receiver.
1071 if (map == NULL) continue; 1071 if (map == NULL) continue;
1072 1072
1073 int offset = PrimaryOffset(name, flags, map); 1073 int offset = PrimaryOffset(*name, flags, map);
1074 if (entry(primary_, offset) == &primary_[i] && 1074 if (entry(primary_, offset) == &primary_[i] &&
1075 !TypeFeedbackOracle::CanRetainOtherContext(map, *native_context)) { 1075 !TypeFeedbackOracle::CanRetainOtherContext(map, *native_context)) {
1076 types->Add(Handle<Map>(map), zone); 1076 types->AddMapIfMissing(Handle<Map>(map), zone);
1077 } 1077 }
1078 } 1078 }
1079 } 1079 }
1080 1080
1081 for (int i = 0; i < kSecondaryTableSize; i++) { 1081 for (int i = 0; i < kSecondaryTableSize; i++) {
1082 if (secondary_[i].key == name) { 1082 if (secondary_[i].key == *name) {
1083 Map* map = secondary_[i].map; 1083 Map* map = secondary_[i].map;
1084 // Map can be NULL, if the stub is constant function call 1084 // Map can be NULL, if the stub is constant function call
1085 // with a primitive receiver. 1085 // with a primitive receiver.
1086 if (map == NULL) continue; 1086 if (map == NULL) continue;
1087 1087
1088 // Lookup in primary table and skip duplicates. 1088 // Lookup in primary table and skip duplicates.
1089 int primary_offset = PrimaryOffset(name, flags, map); 1089 int primary_offset = PrimaryOffset(*name, flags, map);
1090 Entry* primary_entry = entry(primary_, primary_offset);
1091 if (primary_entry->key == name) {
1092 Map* primary_map = primary_entry->map;
1093 if (map == primary_map) continue;
1094 }
1095 1090
1096 // Lookup in secondary table and add matches. 1091 // Lookup in secondary table and add matches.
1097 int offset = SecondaryOffset(name, flags, primary_offset); 1092 int offset = SecondaryOffset(*name, flags, primary_offset);
1098 if (entry(secondary_, offset) == &secondary_[i] && 1093 if (entry(secondary_, offset) == &secondary_[i] &&
1099 !TypeFeedbackOracle::CanRetainOtherContext(map, *native_context)) { 1094 !TypeFeedbackOracle::CanRetainOtherContext(map, *native_context)) {
1100 types->Add(Handle<Map>(map), zone); 1095 types->AddMapIfMissing(Handle<Map>(map), zone);
1101 } 1096 }
1102 } 1097 }
1103 } 1098 }
1104 } 1099 }
1105 1100
1106 1101
1107 // ------------------------------------------------------------------------ 1102 // ------------------------------------------------------------------------
1108 // StubCompiler implementation. 1103 // StubCompiler implementation.
1109 1104
1110 1105
(...skipping 1005 matching lines...) Expand 10 before | Expand all | Expand 10 after
2116 Handle<FunctionTemplateInfo>( 2111 Handle<FunctionTemplateInfo>(
2117 FunctionTemplateInfo::cast(signature->receiver())); 2112 FunctionTemplateInfo::cast(signature->receiver()));
2118 } 2113 }
2119 } 2114 }
2120 2115
2121 is_simple_api_call_ = true; 2116 is_simple_api_call_ = true;
2122 } 2117 }
2123 2118
2124 2119
2125 } } // namespace v8::internal 2120 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/stub-cache.h ('k') | src/type-info.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698