| Index: src/ic.h
|
| diff --git a/src/ic.h b/src/ic.h
|
| index 829c6b1547666c708e41f15c36a7dcc49f4211ee..61bf848ee63a5a5bd8db1aa17b465f58edf7e7a4 100644
|
| --- a/src/ic.h
|
| +++ b/src/ic.h
|
| @@ -57,7 +57,6 @@ namespace internal {
|
| ICU(LoadPropertyWithInterceptorForCall) \
|
| ICU(KeyedLoadPropertyWithInterceptor) \
|
| ICU(StoreInterceptorProperty) \
|
| - ICU(UnaryOp_Patch) \
|
| ICU(BinaryOp_Patch) \
|
| ICU(CompareIC_Miss) \
|
| ICU(CompareNilIC_Miss) \
|
| @@ -560,7 +559,8 @@ class StoreIC: public IC {
|
| virtual Handle<Code> ComputeStoreMonomorphic(LookupResult* lookup,
|
| StrictModeFlag strict_mode,
|
| Handle<JSObject> receiver,
|
| - Handle<String> name);
|
| + Handle<String> name,
|
| + Handle<Object> value);
|
|
|
| private:
|
| void set_target(Code* code) {
|
| @@ -627,7 +627,8 @@ class KeyedStoreIC: public StoreIC {
|
| virtual Handle<Code> ComputeStoreMonomorphic(LookupResult* lookup,
|
| StrictModeFlag strict_mode,
|
| Handle<JSObject> receiver,
|
| - Handle<String> name);
|
| + Handle<String> name,
|
| + Handle<Object> value);
|
| virtual void UpdateMegamorphicCache(Map* map, Name* name, Code* code) { }
|
|
|
| virtual Handle<Code> megamorphic_stub() {
|
| @@ -681,28 +682,9 @@ class KeyedStoreIC: public StoreIC {
|
|
|
| class UnaryOpIC: public IC {
|
| public:
|
| - // sorted: increasingly more unspecific (ignoring UNINITIALIZED)
|
| - // TODO(svenpanne) Using enums+switch is an antipattern, use a class instead.
|
| - enum TypeInfo {
|
| - UNINITIALIZED,
|
| - SMI,
|
| - NUMBER,
|
| - GENERIC
|
| - };
|
| -
|
| - static Handle<Type> TypeInfoToType(TypeInfo info, Isolate* isolate);
|
| -
|
| - explicit UnaryOpIC(Isolate* isolate) : IC(NO_EXTRA_FRAME, isolate) { }
|
| -
|
| - void patch(Code* code);
|
| -
|
| - static const char* GetName(TypeInfo type_info);
|
| -
|
| - static State ToState(TypeInfo type_info);
|
| -
|
| - static TypeInfo GetTypeInfo(Handle<Object> operand);
|
| + explicit UnaryOpIC(Isolate* isolate) : IC(EXTRA_CALL_FRAME, isolate) { }
|
|
|
| - static TypeInfo ComputeNewType(TypeInfo type, TypeInfo previous);
|
| + MUST_USE_RESULT MaybeObject* Transition(Handle<Object> object);
|
| };
|
|
|
|
|
| @@ -838,6 +820,8 @@ void PatchInlinedSmiCode(Address address, InlinedSmiCheck check);
|
|
|
| DECLARE_RUNTIME_FUNCTION(MaybeObject*, KeyedLoadIC_MissFromStubFailure);
|
| DECLARE_RUNTIME_FUNCTION(MaybeObject*, KeyedStoreIC_MissFromStubFailure);
|
| +DECLARE_RUNTIME_FUNCTION(MaybeObject*, UnaryOpIC_Miss);
|
| +DECLARE_RUNTIME_FUNCTION(MaybeObject*, StoreIC_MissFromStubFailure);
|
| DECLARE_RUNTIME_FUNCTION(MaybeObject*, CompareNilIC_Miss);
|
| DECLARE_RUNTIME_FUNCTION(MaybeObject*, ToBooleanIC_Miss);
|
|
|
|
|