| Index: src/code-stubs.h
|
| diff --git a/src/code-stubs.h b/src/code-stubs.h
|
| index 41431d16691338a1dd99b0e8818f04fb0d21ff1e..5a88942330e7d8cabbc446ee4d8d96ac87159b72 100644
|
| --- a/src/code-stubs.h
|
| +++ b/src/code-stubs.h
|
| @@ -51,7 +51,6 @@ namespace internal {
|
| V(CompareIC) \
|
| V(CompareNilIC) \
|
| V(MathPow) \
|
| - V(CallIC) \
|
| V(FunctionPrototype) \
|
| V(RecordWrite) \
|
| V(StoreBufferOverflow) \
|
| @@ -840,59 +839,6 @@ class ICStub: public PlatformCodeStub {
|
| };
|
|
|
|
|
| -class CallICStub: public PlatformCodeStub {
|
| - public:
|
| - explicit CallICStub(const CallIC::State& state)
|
| - : state_(state) {}
|
| -
|
| - bool CallAsMethod() const { return state_.CallAsMethod(); }
|
| - bool IsGeneric() const {
|
| - return state_.IsGeneric();
|
| - }
|
| - bool ArgumentsMustMatch() const {
|
| - return state_.ArgumentsMustMatch();
|
| - }
|
| - bool IsSloppy() const {
|
| - return state_.IsSloppy();
|
| - }
|
| -
|
| - int arg_count() const { return state_.arg_count(); }
|
| -
|
| - static int ExtractArgcFromMinorKey(int minor_key) {
|
| - CallIC::State state((ExtraICState) minor_key);
|
| - return state.arg_count();
|
| - }
|
| -
|
| - virtual void Generate(MacroAssembler* masm);
|
| -
|
| - virtual Code::Kind GetCodeKind() const V8_OVERRIDE {
|
| - return Code::CALL_IC;
|
| - }
|
| -
|
| - virtual InlineCacheState GetICState() V8_FINAL V8_OVERRIDE {
|
| - return state_.GetICState();
|
| - }
|
| -
|
| - virtual ExtraICState GetExtraICState() V8_FINAL V8_OVERRIDE {
|
| - return state_.GetExtraICState();
|
| - }
|
| -
|
| - protected:
|
| - virtual int MinorKey() { return GetExtraICState(); }
|
| - virtual void PrintState(StringStream* stream) V8_FINAL V8_OVERRIDE;
|
| -
|
| - private:
|
| - virtual CodeStub::Major MajorKey() { return CallIC; }
|
| -
|
| - // Code generation helpers.
|
| - void GenerateMonomorphicCall(MacroAssembler* masm);
|
| - void GenerateSlowCall(MacroAssembler* masm);
|
| - void GenerateMiss(MacroAssembler* masm);
|
| -
|
| - CallIC::State state_;
|
| -};
|
| -
|
| -
|
| class FunctionPrototypeStub: public ICStub {
|
| public:
|
| explicit FunctionPrototypeStub(Code::Kind kind) : ICStub(kind) { }
|
| @@ -1684,6 +1630,10 @@ class CallFunctionStub: public PlatformCodeStub {
|
|
|
| void Generate(MacroAssembler* masm);
|
|
|
| + virtual void FinishCode(Handle<Code> code) {
|
| + code->set_has_function_cache(RecordCallTarget());
|
| + }
|
| +
|
| static int ExtractArgcFromMinorKey(int minor_key) {
|
| return ArgcBits::decode(minor_key);
|
| }
|
| @@ -1704,6 +1654,10 @@ class CallFunctionStub: public PlatformCodeStub {
|
| return FlagBits::encode(flags_) | ArgcBits::encode(argc_);
|
| }
|
|
|
| + bool RecordCallTarget() {
|
| + return flags_ == RECORD_CALL_TARGET;
|
| + }
|
| +
|
| bool CallAsMethod() {
|
| return flags_ == CALL_AS_METHOD || flags_ == WRAP_AND_CALL;
|
| }
|
| @@ -1716,7 +1670,7 @@ class CallFunctionStub: public PlatformCodeStub {
|
|
|
| class CallConstructStub: public PlatformCodeStub {
|
| public:
|
| - explicit CallConstructStub(CallConstructorFlags flags) : flags_(flags) {}
|
| + explicit CallConstructStub(CallFunctionFlags flags) : flags_(flags) {}
|
|
|
| void Generate(MacroAssembler* masm);
|
|
|
| @@ -1725,7 +1679,7 @@ class CallConstructStub: public PlatformCodeStub {
|
| }
|
|
|
| private:
|
| - CallConstructorFlags flags_;
|
| + CallFunctionFlags flags_;
|
|
|
| virtual void PrintName(StringStream* stream);
|
|
|
| @@ -1733,7 +1687,11 @@ class CallConstructStub: public PlatformCodeStub {
|
| int MinorKey() { return flags_; }
|
|
|
| bool RecordCallTarget() {
|
| - return (flags_ & RECORD_CONSTRUCTOR_TARGET) != 0;
|
| + return (flags_ & RECORD_CALL_TARGET) != 0;
|
| + }
|
| +
|
| + bool CallAsMethod() {
|
| + return (flags_ & CALL_AS_METHOD) != 0;
|
| }
|
| };
|
|
|
|
|