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

Side by Side Diff: src/ic/handler-compiler.h

Issue 2357323003: [ic][ia32][x87] Don't push/pop value/slot/vector in store handlers. (Closed)
Patch Set: Created 4 years, 3 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
« no previous file with comments | « src/ic/arm64/handler-compiler-arm64.cc ('k') | src/ic/handler-compiler.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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 #ifndef V8_IC_HANDLER_COMPILER_H_ 5 #ifndef V8_IC_HANDLER_COMPILER_H_
6 #define V8_IC_HANDLER_COMPILER_H_ 6 #define V8_IC_HANDLER_COMPILER_H_
7 7
8 #include "src/ic/access-compiler.h" 8 #include "src/ic/access-compiler.h"
9 #include "src/ic/ic-state.h" 9 #include "src/ic/ic-state.h"
10 10
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 int index, 208 int index,
209 Register prototype, 209 Register prototype,
210 Label* miss); 210 Label* miss);
211 211
212 Register scratch3() { return registers_[4]; } 212 Register scratch3() { return registers_[4]; }
213 }; 213 };
214 214
215 215
216 class NamedStoreHandlerCompiler : public PropertyHandlerCompiler { 216 class NamedStoreHandlerCompiler : public PropertyHandlerCompiler {
217 public: 217 public:
218 // All store handlers use StoreWithVectorDescriptor calling convention.
219 typedef StoreWithVectorDescriptor Descriptor;
220
218 explicit NamedStoreHandlerCompiler(Isolate* isolate, Handle<Map> map, 221 explicit NamedStoreHandlerCompiler(Isolate* isolate, Handle<Map> map,
219 Handle<JSObject> holder) 222 Handle<JSObject> holder)
220 : PropertyHandlerCompiler(isolate, Code::STORE_IC, map, holder, 223 : PropertyHandlerCompiler(isolate, Code::STORE_IC, map, holder,
221 kCacheOnReceiver) {} 224 kCacheOnReceiver) {
225 #ifdef DEBUG
226 if (Descriptor::kPassLastArgsOnStack) {
227 ZapStackArgumentsRegisterAliases();
228 }
229 #endif
230 }
222 231
223 virtual ~NamedStoreHandlerCompiler() {} 232 virtual ~NamedStoreHandlerCompiler() {}
224 233
234 void ZapStackArgumentsRegisterAliases();
235
225 Handle<Code> CompileStoreTransition(Handle<Map> transition, 236 Handle<Code> CompileStoreTransition(Handle<Map> transition,
226 Handle<Name> name); 237 Handle<Name> name);
227 Handle<Code> CompileStoreField(LookupIterator* it); 238 Handle<Code> CompileStoreField(LookupIterator* it);
228 Handle<Code> CompileStoreCallback(Handle<JSObject> object, Handle<Name> name, 239 Handle<Code> CompileStoreCallback(Handle<JSObject> object, Handle<Name> name,
229 Handle<AccessorInfo> callback, 240 Handle<AccessorInfo> callback,
230 LanguageMode language_mode); 241 LanguageMode language_mode);
231 Handle<Code> CompileStoreCallback(Handle<JSObject> object, Handle<Name> name, 242 Handle<Code> CompileStoreCallback(Handle<JSObject> object, Handle<Name> name,
232 const CallOptimization& call_optimization, 243 const CallOptimization& call_optimization,
233 int accessor_index, Handle<Code> slow_stub); 244 int accessor_index, Handle<Code> slow_stub);
234 Handle<Code> CompileStoreViaSetter(Handle<JSObject> object, Handle<Name> name, 245 Handle<Code> CompileStoreViaSetter(Handle<JSObject> object, Handle<Name> name,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 291
281 static Handle<Object> GetKeyedLoadHandler(Handle<Map> receiver_map, 292 static Handle<Object> GetKeyedLoadHandler(Handle<Map> receiver_map,
282 Isolate* isolate); 293 Isolate* isolate);
283 void CompileElementHandlers(MapHandleList* receiver_maps, 294 void CompileElementHandlers(MapHandleList* receiver_maps,
284 List<Handle<Object>>* handlers); 295 List<Handle<Object>>* handlers);
285 }; 296 };
286 } // namespace internal 297 } // namespace internal
287 } // namespace v8 298 } // namespace v8
288 299
289 #endif // V8_IC_HANDLER_COMPILER_H_ 300 #endif // V8_IC_HANDLER_COMPILER_H_
OLDNEW
« no previous file with comments | « src/ic/arm64/handler-compiler-arm64.cc ('k') | src/ic/handler-compiler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698