diff options
Diffstat (limited to 'deps/v8/src/ic/handler-compiler.h')
-rw-r--r-- | deps/v8/src/ic/handler-compiler.h | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/deps/v8/src/ic/handler-compiler.h b/deps/v8/src/ic/handler-compiler.h index 525889b80b..63ca050ca2 100644 --- a/deps/v8/src/ic/handler-compiler.h +++ b/deps/v8/src/ic/handler-compiler.h @@ -53,6 +53,9 @@ class PropertyHandlerCompiler : public PropertyAccessCompiler { void DiscardVectorAndSlot(); + void PushReturnAddress(Register tmp); + void PopReturnAddress(Register tmp); + // TODO(verwaest): Make non-static. static void GenerateApiAccessorCall(MacroAssembler* masm, const CallOptimization& optimization, @@ -212,13 +215,24 @@ class NamedLoadHandlerCompiler : public PropertyHandlerCompiler { class NamedStoreHandlerCompiler : public PropertyHandlerCompiler { public: + // All store handlers use StoreWithVectorDescriptor calling convention. + typedef StoreWithVectorDescriptor Descriptor; + explicit NamedStoreHandlerCompiler(Isolate* isolate, Handle<Map> map, Handle<JSObject> holder) : PropertyHandlerCompiler(isolate, Code::STORE_IC, map, holder, - kCacheOnReceiver) {} + kCacheOnReceiver) { +#ifdef DEBUG + if (Descriptor::kPassLastArgsOnStack) { + ZapStackArgumentsRegisterAliases(); + } +#endif + } virtual ~NamedStoreHandlerCompiler() {} + void ZapStackArgumentsRegisterAliases(); + Handle<Code> CompileStoreTransition(Handle<Map> transition, Handle<Name> name); Handle<Code> CompileStoreField(LookupIterator* it); @@ -249,10 +263,6 @@ class NamedStoreHandlerCompiler : public PropertyHandlerCompiler { virtual void FrontendFooter(Handle<Name> name, Label* miss); void GenerateRestoreName(Label* label, Handle<Name> name); - // Pop the vector and slot into appropriate registers, moving the map in - // the process. (This is an accomodation for register pressure on ia32). - void RearrangeVectorAndSlot(Register current_map, Register destination_map); - private: void GenerateRestoreName(Handle<Name> name); void GenerateRestoreMap(Handle<Map> transition, Register map_reg, @@ -283,8 +293,6 @@ class ElementHandlerCompiler : public PropertyHandlerCompiler { Isolate* isolate); void CompileElementHandlers(MapHandleList* receiver_maps, List<Handle<Object>>* handlers); - - static void GenerateStoreSlow(MacroAssembler* masm); }; } // namespace internal } // namespace v8 |