| Index: src/ast.h
|
| ===================================================================
|
| --- src/ast.h (revision 6800)
|
| +++ src/ast.h (working copy)
|
| @@ -1205,9 +1205,10 @@
|
| key_(key),
|
| pos_(pos),
|
| type_(type),
|
| + receiver_types_(NULL),
|
| is_monomorphic_(false),
|
| - receiver_types_(NULL),
|
| is_array_length_(false),
|
| + is_string_length_(false),
|
| is_function_prototype_(false),
|
| is_arguments_access_(false) { }
|
|
|
| @@ -1221,6 +1222,7 @@
|
| int position() const { return pos_; }
|
| bool is_synthetic() const { return type_ == SYNTHETIC; }
|
|
|
| + bool IsStringLength() const { return is_string_length_; }
|
| bool IsFunctionPrototype() const { return is_function_prototype_; }
|
|
|
| // Marks that this is actually an argument rewritten to a keyed property
|
| @@ -1249,11 +1251,12 @@
|
| int pos_;
|
| Type type_;
|
|
|
| - bool is_monomorphic_;
|
| ZoneMapList* receiver_types_;
|
| - bool is_array_length_;
|
| - bool is_function_prototype_;
|
| - bool is_arguments_access_;
|
| + bool is_monomorphic_ : 1;
|
| + bool is_array_length_ : 1;
|
| + bool is_string_length_ : 1;
|
| + bool is_function_prototype_ : 1;
|
| + bool is_arguments_access_ : 1;
|
| Handle<Map> monomorphic_receiver_type_;
|
|
|
| // Dummy property used during preparsing.
|
| @@ -1268,6 +1271,7 @@
|
| arguments_(arguments),
|
| pos_(pos),
|
| is_monomorphic_(false),
|
| + check_type_(RECEIVER_MAP_CHECK),
|
| receiver_types_(NULL),
|
| return_id_(GetNextId()) {
|
| }
|
| @@ -1283,6 +1287,7 @@
|
| void RecordTypeFeedback(TypeFeedbackOracle* oracle);
|
| virtual ZoneMapList* GetReceiverTypes() { return receiver_types_; }
|
| virtual bool IsMonomorphic() { return is_monomorphic_; }
|
| + CheckType check_type() const { return check_type_; }
|
| Handle<JSFunction> target() { return target_; }
|
| Handle<JSObject> holder() { return holder_; }
|
| Handle<JSGlobalPropertyCell> cell() { return cell_; }
|
| @@ -1306,6 +1311,7 @@
|
| int pos_;
|
|
|
| bool is_monomorphic_;
|
| + CheckType check_type_;
|
| ZoneMapList* receiver_types_;
|
| Handle<JSFunction> target_;
|
| Handle<JSObject> holder_;
|
| @@ -1392,7 +1398,7 @@
|
| Expression* left,
|
| Expression* right,
|
| int pos)
|
| - : op_(op), left_(left), right_(right), pos_(pos), is_smi_only_(false) {
|
| + : op_(op), left_(left), right_(right), pos_(pos) {
|
| ASSERT(Token::IsBinaryOp(op));
|
| right_id_ = (op == Token::AND || op == Token::OR)
|
| ? static_cast<int>(GetNextId())
|
| @@ -1413,10 +1419,6 @@
|
| Expression* right() const { return right_; }
|
| int position() const { return pos_; }
|
|
|
| - // Type feedback information.
|
| - void RecordTypeFeedback(TypeFeedbackOracle* oracle);
|
| - bool IsSmiOnly() const { return is_smi_only_; }
|
| -
|
| // Bailout support.
|
| int RightId() const { return right_id_; }
|
|
|
| @@ -1425,7 +1427,6 @@
|
| Expression* left_;
|
| Expression* right_;
|
| int pos_;
|
| - bool is_smi_only_;
|
| // The short-circuit logical operations have an AST ID for their
|
| // right-hand subexpression.
|
| int right_id_;
|
| @@ -1672,7 +1673,8 @@
|
| int start_position,
|
| int end_position,
|
| bool is_expression,
|
| - bool contains_loops)
|
| + bool contains_loops,
|
| + bool strict_mode)
|
| : name_(name),
|
| scope_(scope),
|
| body_(body),
|
| @@ -1686,6 +1688,7 @@
|
| end_position_(end_position),
|
| is_expression_(is_expression),
|
| contains_loops_(contains_loops),
|
| + strict_mode_(strict_mode),
|
| function_token_position_(RelocInfo::kNoPosition),
|
| inferred_name_(Heap::empty_string()),
|
| try_full_codegen_(false),
|
| @@ -1702,6 +1705,7 @@
|
| int end_position() const { return end_position_; }
|
| bool is_expression() const { return is_expression_; }
|
| bool contains_loops() const { return contains_loops_; }
|
| + bool strict_mode() const { return strict_mode_; }
|
|
|
| int materialized_literal_count() { return materialized_literal_count_; }
|
| int expected_property_count() { return expected_property_count_; }
|
| @@ -1714,7 +1718,6 @@
|
| int num_parameters() { return num_parameters_; }
|
|
|
| bool AllowsLazyCompilation();
|
| - bool AllowOptimize();
|
|
|
| Handle<String> debug_name() const {
|
| if (name_->length() > 0) return name_;
|
| @@ -1745,6 +1748,7 @@
|
| int end_position_;
|
| bool is_expression_;
|
| bool contains_loops_;
|
| + bool strict_mode_;
|
| int function_token_position_;
|
| Handle<String> inferred_name_;
|
| bool try_full_codegen_;
|
|
|