| Index: src/code-stubs.h
|
| diff --git a/src/code-stubs.h b/src/code-stubs.h
|
| index 03075d92372fe7da40c6244ab42d0c2cd3e80b38..b5ea4427c3369c91190e7c95c08fb16c06a54d58 100644
|
| --- a/src/code-stubs.h
|
| +++ b/src/code-stubs.h
|
| @@ -39,6 +39,8 @@ namespace internal {
|
| V(JSEntry) \
|
| V(KeyedLoadICTrampoline) \
|
| V(LoadICTrampoline) \
|
| + V(CallICTrampoline) \
|
| + V(CallIC_ArrayTrampoline) \
|
| V(LoadIndexedInterceptor) \
|
| V(LoadIndexedString) \
|
| V(MathPow) \
|
| @@ -829,7 +831,7 @@ class CallICStub: public PlatformCodeStub {
|
| private:
|
| void PrintState(std::ostream& os) const OVERRIDE; // NOLINT
|
|
|
| - DEFINE_CALL_INTERFACE_DESCRIPTOR(CallFunctionWithFeedback);
|
| + DEFINE_CALL_INTERFACE_DESCRIPTOR(CallFunctionWithFeedbackAndVector);
|
| DEFINE_PLATFORM_CODE_STUB(CallIC, PlatformCodeStub);
|
| };
|
|
|
| @@ -1938,6 +1940,41 @@ class KeyedLoadICTrampolineStub : public LoadICTrampolineStub {
|
| };
|
|
|
|
|
| +class CallICTrampolineStub : public PlatformCodeStub {
|
| + public:
|
| + CallICTrampolineStub(Isolate* isolate, const CallICState& state)
|
| + : PlatformCodeStub(isolate) {
|
| + minor_key_ = state.GetExtraICState();
|
| + }
|
| +
|
| + Code::Kind GetCodeKind() const OVERRIDE { return Code::CALL_IC; }
|
| +
|
| + InlineCacheState GetICState() const FINAL { return DEFAULT; }
|
| +
|
| + ExtraICState GetExtraICState() const FINAL {
|
| + return static_cast<ExtraICState>(minor_key_);
|
| + }
|
| +
|
| + protected:
|
| + CallICState state() const {
|
| + return CallICState(static_cast<ExtraICState>(minor_key_));
|
| + }
|
| +
|
| + DEFINE_CALL_INTERFACE_DESCRIPTOR(CallFunctionWithFeedback);
|
| + DEFINE_PLATFORM_CODE_STUB(CallICTrampoline, PlatformCodeStub);
|
| +};
|
| +
|
| +
|
| +class CallIC_ArrayTrampolineStub : public CallICTrampolineStub {
|
| + public:
|
| + CallIC_ArrayTrampolineStub(Isolate* isolate, const CallICState& state)
|
| + : CallICTrampolineStub(isolate, state) {}
|
| +
|
| + private:
|
| + DEFINE_PLATFORM_CODE_STUB(CallIC_ArrayTrampoline, CallICTrampolineStub);
|
| +};
|
| +
|
| +
|
| class MegamorphicLoadStub : public HydrogenCodeStub {
|
| public:
|
| MegamorphicLoadStub(Isolate* isolate, const LoadICState& state)
|
|
|