| Index: src/hydrogen-instructions.h
|
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
|
| index fde3abcbe8d3567814a218ff515ab6c43940a9a6..1e270ab2c5c963c662dc20e194dc7a9158863789 100644
|
| --- a/src/hydrogen-instructions.h
|
| +++ b/src/hydrogen-instructions.h
|
| @@ -1245,7 +1245,7 @@ class HInstruction : public HValue {
|
| virtual void Verify() V8_OVERRIDE;
|
| #endif
|
|
|
| - virtual bool IsCall() { return false; }
|
| + virtual bool HasStackCheck() { return false; }
|
|
|
| DECLARE_ABSTRACT_INSTRUCTION(Instruction)
|
|
|
| @@ -2243,8 +2243,6 @@ class HCall : public HTemplateInstruction<V> {
|
| return -argument_count();
|
| }
|
|
|
| - virtual bool IsCall() V8_FINAL V8_OVERRIDE { return true; }
|
| -
|
| private:
|
| int argument_count_;
|
| };
|
| @@ -2300,6 +2298,9 @@ class HInvokeFunction V8_FINAL : public HBinaryCall {
|
| known_function_(known_function) {
|
| formal_parameter_count_ = known_function.is_null()
|
| ? 0 : known_function->shared()->formal_parameter_count();
|
| + has_stack_check_ = !known_function.is_null() &&
|
| + (known_function->code()->kind() == Code::FUNCTION ||
|
| + known_function->code()->kind() == Code::OPTIMIZED_FUNCTION);
|
| }
|
|
|
| static HInvokeFunction* New(Zone* zone,
|
| @@ -2316,15 +2317,21 @@ class HInvokeFunction V8_FINAL : public HBinaryCall {
|
| Handle<JSFunction> known_function() { return known_function_; }
|
| int formal_parameter_count() const { return formal_parameter_count_; }
|
|
|
| + virtual bool HasStackCheck() V8_FINAL V8_OVERRIDE {
|
| + return has_stack_check_;
|
| + }
|
| +
|
| DECLARE_CONCRETE_INSTRUCTION(InvokeFunction)
|
|
|
| private:
|
| HInvokeFunction(HValue* context, HValue* function, int argument_count)
|
| - : HBinaryCall(context, function, argument_count) {
|
| + : HBinaryCall(context, function, argument_count),
|
| + has_stack_check_(false) {
|
| }
|
|
|
| Handle<JSFunction> known_function_;
|
| int formal_parameter_count_;
|
| + bool has_stack_check_;
|
| };
|
|
|
|
|
| @@ -2348,16 +2355,24 @@ class HCallConstantFunction V8_FINAL : public HCall<0> {
|
| return Representation::None();
|
| }
|
|
|
| + virtual bool HasStackCheck() V8_FINAL V8_OVERRIDE {
|
| + return has_stack_check_;
|
| + }
|
| +
|
| DECLARE_CONCRETE_INSTRUCTION(CallConstantFunction)
|
|
|
| private:
|
| HCallConstantFunction(Handle<JSFunction> function, int argument_count)
|
| : HCall<0>(argument_count),
|
| function_(function),
|
| - formal_parameter_count_(function->shared()->formal_parameter_count()) {}
|
| + formal_parameter_count_(function->shared()->formal_parameter_count()),
|
| + has_stack_check_(
|
| + function->code()->kind() == Code::FUNCTION ||
|
| + function->code()->kind() == Code::OPTIMIZED_FUNCTION) {}
|
|
|
| Handle<JSFunction> function_;
|
| int formal_parameter_count_;
|
| + bool has_stack_check_;
|
| };
|
|
|
|
|
| @@ -2465,16 +2480,24 @@ class HCallKnownGlobal V8_FINAL : public HCall<0> {
|
| return Representation::None();
|
| }
|
|
|
| + virtual bool HasStackCheck() V8_FINAL V8_OVERRIDE {
|
| + return has_stack_check_;
|
| + }
|
| +
|
| DECLARE_CONCRETE_INSTRUCTION(CallKnownGlobal)
|
|
|
| private:
|
| HCallKnownGlobal(Handle<JSFunction> target, int argument_count)
|
| : HCall<0>(argument_count),
|
| target_(target),
|
| - formal_parameter_count_(target->shared()->formal_parameter_count()) { }
|
| + formal_parameter_count_(target->shared()->formal_parameter_count()),
|
| + has_stack_check_(
|
| + target->code()->kind() == Code::FUNCTION ||
|
| + target->code()->kind() == Code::OPTIMIZED_FUNCTION) {}
|
|
|
| Handle<JSFunction> target_;
|
| int formal_parameter_count_;
|
| + bool has_stack_check_;
|
| };
|
|
|
|
|
|
|