| Index: src/ic.h
|
| diff --git a/src/ic.h b/src/ic.h
|
| index cb60bcb86a6de0a1e738d1318a68365cb5985495..92dd773198ae0144022b8dd655259d91def0a0b1 100644
|
| --- a/src/ic.h
|
| +++ b/src/ic.h
|
| @@ -20,6 +20,7 @@ const int kMaxKeyedPolymorphism = 4;
|
| ICU(LoadIC_Miss) \
|
| ICU(KeyedLoadIC_Miss) \
|
| ICU(CallIC_Miss) \
|
| + ICU(CallIC_Customization_Miss) \
|
| ICU(StoreIC_Miss) \
|
| ICU(StoreIC_ArrayLength) \
|
| ICU(StoreIC_Slow) \
|
| @@ -333,34 +334,16 @@ class IC_Utility {
|
| class CallIC: public IC {
|
| public:
|
| enum CallType { METHOD, FUNCTION };
|
| - enum StubType { DEFAULT, MONOMORPHIC_ARRAY };
|
|
|
| class State V8_FINAL BASE_EMBEDDED {
|
| public:
|
| explicit State(ExtraICState extra_ic_state);
|
|
|
| - static State MonomorphicArrayCallState(int argc, CallType call_type) {
|
| - return State(argc, call_type, MONOMORPHIC_ARRAY);
|
| + State(int argc, CallType call_type)
|
| + : argc_(argc), call_type_(call_type) {
|
| }
|
|
|
| - static State DefaultCallState(int argc, CallType call_type) {
|
| - return State(argc, call_type, DEFAULT);
|
| - }
|
| -
|
| - // Transition from the current state to another.
|
| - State ToGenericState() const {
|
| - return DefaultCallState(arg_count(), call_type());
|
| - }
|
| -
|
| - State ToMonomorphicArrayCallState() const {
|
| - return MonomorphicArrayCallState(arg_count(), call_type());
|
| - }
|
| -
|
| - InlineCacheState GetICState() const {
|
| - return stub_type_ == CallIC::DEFAULT
|
| - ? ::v8::internal::GENERIC
|
| - : ::v8::internal::MONOMORPHIC;
|
| - }
|
| + InlineCacheState GetICState() const { return ::v8::internal::GENERIC; }
|
|
|
| ExtraICState GetExtraICState() const;
|
|
|
| @@ -369,43 +352,25 @@ class CallIC: public IC {
|
|
|
| int arg_count() const { return argc_; }
|
| CallType call_type() const { return call_type_; }
|
| - StubType stub_type() const { return stub_type_; }
|
|
|
| bool CallAsMethod() const { return call_type_ == METHOD; }
|
|
|
| void Print(StringStream* stream) const;
|
|
|
| - bool operator==(const State& other_state) const {
|
| - return (argc_ == other_state.argc_ &&
|
| - call_type_ == other_state.call_type_ &&
|
| - stub_type_ == other_state.stub_type_);
|
| - }
|
| -
|
| - bool operator!=(const State& other_state) const {
|
| - return !(*this == other_state);
|
| - }
|
| -
|
| private:
|
| - State(int argc, CallType call_type, StubType stub_type)
|
| - : argc_(argc),
|
| - call_type_(call_type),
|
| - stub_type_(stub_type) {
|
| - }
|
| -
|
| class ArgcBits: public BitField<int, 0, Code::kArgumentsBits> {};
|
| class CallTypeBits: public BitField<CallType, Code::kArgumentsBits, 1> {};
|
| - class StubTypeBits:
|
| - public BitField<StubType, Code::kArgumentsBits + 1, 1> {}; // NOLINT
|
|
|
| const int argc_;
|
| const CallType call_type_;
|
| - const StubType stub_type_;
|
| };
|
|
|
| explicit CallIC(Isolate* isolate)
|
| : IC(EXTRA_CALL_FRAME, isolate) {
|
| }
|
|
|
| + void PatchMegamorphic(Handle<FixedArray> vector, Handle<Smi> slot);
|
| +
|
| void HandleMiss(Handle<Object> receiver,
|
| Handle<Object> function,
|
| Handle<FixedArray> vector,
|
| @@ -416,7 +381,7 @@ class CallIC: public IC {
|
| Handle<Object> function,
|
| Handle<FixedArray> vector,
|
| Handle<Smi> slot,
|
| - const State& new_state);
|
| + const State& state);
|
|
|
| // Code generator routines.
|
| static Handle<Code> initialize_stub(Isolate* isolate,
|
|
|