| Index: src/ast/ast.h
|
| diff --git a/src/ast/ast.h b/src/ast/ast.h
|
| index ebb32208010177a511b6432bd23c96489e7e884e..c2ff617c482662d6acf80b475f45e121a6e4e0ba 100644
|
| --- a/src/ast/ast.h
|
| +++ b/src/ast/ast.h
|
| @@ -1738,9 +1738,7 @@ class Property final : public Expression {
|
| }
|
|
|
| // Returns the properties assign type.
|
| - static LhsKind GetAssignType(
|
| - Property* property,
|
| - HandleDereferenceMode deref_mode = HandleDereferenceMode::kAllowed) {
|
| + static LhsKind GetAssignType(Property* property) {
|
| if (property == NULL) return VARIABLE;
|
| bool super_access = property->IsSuperAccess();
|
| return (property->key()->IsPropertyName())
|
| @@ -1839,6 +1837,10 @@ class Call final : public Expression {
|
| bit_field_ = IsUninitializedField::update(bit_field_, b);
|
| }
|
|
|
| + bool is_possibly_eval() const {
|
| + return IsPossiblyEvalField::decode(bit_field_);
|
| + }
|
| +
|
| TailCallMode tail_call_mode() const {
|
| return IsTailField::decode(bit_field_) ? TailCallMode::kAllow
|
| : TailCallMode::kDisallow;
|
| @@ -1857,18 +1859,15 @@ class Call final : public Expression {
|
| OTHER_CALL
|
| };
|
|
|
| + enum PossiblyEval {
|
| + IS_POSSIBLY_EVAL,
|
| + NOT_EVAL,
|
| + };
|
| +
|
| // Helpers to determine how to handle the call.
|
| - // If called with |deref_mode| of kDisallowed, then the AST nodes must have
|
| - // been internalized within a CanonicalHandleScope.
|
| - CallType GetCallType(
|
| - Isolate* isolate,
|
| - HandleDereferenceMode deref_mode = HandleDereferenceMode::kAllowed) const;
|
| - bool IsUsingCallFeedbackSlot(
|
| - Isolate* isolate,
|
| - HandleDereferenceMode deref_mode = HandleDereferenceMode::kAllowed) const;
|
| - bool IsUsingCallFeedbackICSlot(
|
| - Isolate* isolate,
|
| - HandleDereferenceMode deref_mode = HandleDereferenceMode::kAllowed) const;
|
| + CallType GetCallType() const;
|
| + bool IsUsingCallFeedbackSlot() const;
|
| + bool IsUsingCallFeedbackICSlot() const;
|
|
|
| #ifdef DEBUG
|
| // Used to assert that the FullCodeGenerator records the return site.
|
| @@ -1879,9 +1878,11 @@ class Call final : public Expression {
|
| friend class AstNodeFactory;
|
|
|
| Call(Zone* zone, Expression* expression, ZoneList<Expression*>* arguments,
|
| - int pos)
|
| + int pos, PossiblyEval possibly_eval)
|
| : Expression(zone, pos, kCall),
|
| - bit_field_(IsUninitializedField::encode(false)),
|
| + bit_field_(
|
| + IsUninitializedField::encode(false) |
|
| + IsPossiblyEvalField::encode(possibly_eval == IS_POSSIBLY_EVAL)),
|
| expression_(expression),
|
| arguments_(arguments) {
|
| if (expression->IsProperty()) {
|
| @@ -1894,6 +1895,7 @@ class Call final : public Expression {
|
|
|
| class IsUninitializedField : public BitField8<bool, 0, 1> {};
|
| class IsTailField : public BitField8<bool, 1, 1> {};
|
| + class IsPossiblyEvalField : public BitField8<bool, 2, 1> {};
|
|
|
| uint8_t bit_field_;
|
| FeedbackVectorSlot ic_slot_;
|
| @@ -3241,10 +3243,9 @@ class AstNodeFactory final BASE_EMBEDDED {
|
| return new (zone_) Property(zone_, obj, key, pos);
|
| }
|
|
|
| - Call* NewCall(Expression* expression,
|
| - ZoneList<Expression*>* arguments,
|
| - int pos) {
|
| - return new (zone_) Call(zone_, expression, arguments, pos);
|
| + Call* NewCall(Expression* expression, ZoneList<Expression*>* arguments,
|
| + int pos, Call::PossiblyEval possibly_eval = Call::NOT_EVAL) {
|
| + return new (zone_) Call(zone_, expression, arguments, pos, possibly_eval);
|
| }
|
|
|
| CallNew* NewCallNew(Expression* expression,
|
|
|