| OLD | NEW | 
|     1 // Copyright 2012 the V8 project authors. All rights reserved. |     1 // Copyright 2012 the V8 project authors. All rights reserved. | 
|     2 // Redistribution and use in source and binary forms, with or without |     2 // Redistribution and use in source and binary forms, with or without | 
|     3 // modification, are permitted provided that the following conditions are |     3 // modification, are permitted provided that the following conditions are | 
|     4 // met: |     4 // met: | 
|     5 // |     5 // | 
|     6 //     * Redistributions of source code must retain the above copyright |     6 //     * Redistributions of source code must retain the above copyright | 
|     7 //       notice, this list of conditions and the following disclaimer. |     7 //       notice, this list of conditions and the following disclaimer. | 
|     8 //     * Redistributions in binary form must reproduce the above |     8 //     * Redistributions in binary form must reproduce the above | 
|     9 //       copyright notice, this list of conditions and the following |     9 //       copyright notice, this list of conditions and the following | 
|    10 //       disclaimer in the documentation and/or other materials provided |    10 //       disclaimer in the documentation and/or other materials provided | 
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   111   void UpdateEnvironment(HEnvironment* env) { last_environment_ = env; } |   111   void UpdateEnvironment(HEnvironment* env) { last_environment_ = env; } | 
|   112   HBasicBlock* parent_loop_header() const { return parent_loop_header_; } |   112   HBasicBlock* parent_loop_header() const { return parent_loop_header_; } | 
|   113  |   113  | 
|   114   void set_parent_loop_header(HBasicBlock* block) { |   114   void set_parent_loop_header(HBasicBlock* block) { | 
|   115     ASSERT(parent_loop_header_ == NULL); |   115     ASSERT(parent_loop_header_ == NULL); | 
|   116     parent_loop_header_ = block; |   116     parent_loop_header_ = block; | 
|   117   } |   117   } | 
|   118  |   118  | 
|   119   bool HasParentLoopHeader() const { return parent_loop_header_ != NULL; } |   119   bool HasParentLoopHeader() const { return parent_loop_header_ != NULL; } | 
|   120  |   120  | 
|   121   void SetJoinId(int ast_id); |   121   void SetJoinId(BailoutId ast_id); | 
|   122  |   122  | 
|   123   void Finish(HControlInstruction* last); |   123   void Finish(HControlInstruction* last); | 
|   124   void FinishExit(HControlInstruction* instruction); |   124   void FinishExit(HControlInstruction* instruction); | 
|   125   void Goto(HBasicBlock* block, FunctionState* state = NULL); |   125   void Goto(HBasicBlock* block, FunctionState* state = NULL); | 
|   126  |   126  | 
|   127   int PredecessorIndexOf(HBasicBlock* predecessor) const; |   127   int PredecessorIndexOf(HBasicBlock* predecessor) const; | 
|   128   void AddSimulate(int ast_id) { AddInstruction(CreateSimulate(ast_id)); } |   128   void AddSimulate(BailoutId ast_id) { AddInstruction(CreateSimulate(ast_id)); } | 
|   129   void AssignCommonDominator(HBasicBlock* other); |   129   void AssignCommonDominator(HBasicBlock* other); | 
|   130   void AssignLoopSuccessorDominators(); |   130   void AssignLoopSuccessorDominators(); | 
|   131  |   131  | 
|   132   void FinishExitWithDeoptimization(HDeoptimize::UseEnvironment has_uses) { |   132   void FinishExitWithDeoptimization(HDeoptimize::UseEnvironment has_uses) { | 
|   133     FinishExit(CreateDeoptimize(has_uses)); |   133     FinishExit(CreateDeoptimize(has_uses)); | 
|   134   } |   134   } | 
|   135  |   135  | 
|   136   // Add the inlined function exit sequence, adding an HLeaveInlined |   136   // Add the inlined function exit sequence, adding an HLeaveInlined | 
|   137   // instruction and updating the bailout environment. |   137   // instruction and updating the bailout environment. | 
|   138   void AddLeaveInlined(HValue* return_value, |   138   void AddLeaveInlined(HValue* return_value, | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
|   161   inline Zone* zone() const; |   161   inline Zone* zone() const; | 
|   162  |   162  | 
|   163 #ifdef DEBUG |   163 #ifdef DEBUG | 
|   164   void Verify(); |   164   void Verify(); | 
|   165 #endif |   165 #endif | 
|   166  |   166  | 
|   167  private: |   167  private: | 
|   168   void RegisterPredecessor(HBasicBlock* pred); |   168   void RegisterPredecessor(HBasicBlock* pred); | 
|   169   void AddDominatedBlock(HBasicBlock* block); |   169   void AddDominatedBlock(HBasicBlock* block); | 
|   170  |   170  | 
|   171   HSimulate* CreateSimulate(int ast_id); |   171   HSimulate* CreateSimulate(BailoutId ast_id); | 
|   172   HDeoptimize* CreateDeoptimize(HDeoptimize::UseEnvironment has_uses); |   172   HDeoptimize* CreateDeoptimize(HDeoptimize::UseEnvironment has_uses); | 
|   173  |   173  | 
|   174   int block_id_; |   174   int block_id_; | 
|   175   HGraph* graph_; |   175   HGraph* graph_; | 
|   176   ZoneList<HPhi*> phis_; |   176   ZoneList<HPhi*> phis_; | 
|   177   HInstruction* first_; |   177   HInstruction* first_; | 
|   178   HInstruction* last_; |   178   HInstruction* last_; | 
|   179   HControlInstruction* end_; |   179   HControlInstruction* end_; | 
|   180   HLoopInformation* loop_information_; |   180   HLoopInformation* loop_information_; | 
|   181   ZoneList<HBasicBlock*> predecessors_; |   181   ZoneList<HBasicBlock*> predecessors_; | 
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   424     return &assigned_variables_; |   424     return &assigned_variables_; | 
|   425   } |   425   } | 
|   426   FrameType frame_type() const { return frame_type_; } |   426   FrameType frame_type() const { return frame_type_; } | 
|   427   int parameter_count() const { return parameter_count_; } |   427   int parameter_count() const { return parameter_count_; } | 
|   428   int specials_count() const { return specials_count_; } |   428   int specials_count() const { return specials_count_; } | 
|   429   int local_count() const { return local_count_; } |   429   int local_count() const { return local_count_; } | 
|   430   HEnvironment* outer() const { return outer_; } |   430   HEnvironment* outer() const { return outer_; } | 
|   431   int pop_count() const { return pop_count_; } |   431   int pop_count() const { return pop_count_; } | 
|   432   int push_count() const { return push_count_; } |   432   int push_count() const { return push_count_; } | 
|   433  |   433  | 
|   434   int ast_id() const { return ast_id_; } |   434   BailoutId ast_id() const { return ast_id_; } | 
|   435   void set_ast_id(int id) { ast_id_ = id; } |   435   void set_ast_id(BailoutId id) { ast_id_ = id; } | 
|   436  |   436  | 
|   437   int length() const { return values_.length(); } |   437   int length() const { return values_.length(); } | 
|   438   bool is_special_index(int i) const { |   438   bool is_special_index(int i) const { | 
|   439     return i >= parameter_count() && i < parameter_count() + specials_count(); |   439     return i >= parameter_count() && i < parameter_count() + specials_count(); | 
|   440   } |   440   } | 
|   441  |   441  | 
|   442   int first_expression_index() const { |   442   int first_expression_index() const { | 
|   443     return parameter_count() + specials_count() + local_count(); |   443     return parameter_count() + specials_count() + local_count(); | 
|   444   } |   444   } | 
|   445  |   445  | 
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   567   // Value array [parameters] [specials] [locals] [temporaries]. |   567   // Value array [parameters] [specials] [locals] [temporaries]. | 
|   568   ZoneList<HValue*> values_; |   568   ZoneList<HValue*> values_; | 
|   569   ZoneList<int> assigned_variables_; |   569   ZoneList<int> assigned_variables_; | 
|   570   FrameType frame_type_; |   570   FrameType frame_type_; | 
|   571   int parameter_count_; |   571   int parameter_count_; | 
|   572   int specials_count_; |   572   int specials_count_; | 
|   573   int local_count_; |   573   int local_count_; | 
|   574   HEnvironment* outer_; |   574   HEnvironment* outer_; | 
|   575   int pop_count_; |   575   int pop_count_; | 
|   576   int push_count_; |   576   int push_count_; | 
|   577   int ast_id_; |   577   BailoutId ast_id_; | 
|   578   Zone* zone_; |   578   Zone* zone_; | 
|   579 }; |   579 }; | 
|   580  |   580  | 
|   581  |   581  | 
|   582 class HGraphBuilder; |   582 class HGraphBuilder; | 
|   583  |   583  | 
|   584 enum ArgumentsAllowedFlag { |   584 enum ArgumentsAllowedFlag { | 
|   585   ARGUMENTS_NOT_ALLOWED, |   585   ARGUMENTS_NOT_ALLOWED, | 
|   586   ARGUMENTS_ALLOWED |   586   ARGUMENTS_ALLOWED | 
|   587 }; |   587 }; | 
|   588  |   588  | 
|   589 // This class is not BASE_EMBEDDED because our inlining implementation uses |   589 // This class is not BASE_EMBEDDED because our inlining implementation uses | 
|   590 // new and delete. |   590 // new and delete. | 
|   591 class AstContext { |   591 class AstContext { | 
|   592  public: |   592  public: | 
|   593   bool IsEffect() const { return kind_ == Expression::kEffect; } |   593   bool IsEffect() const { return kind_ == Expression::kEffect; } | 
|   594   bool IsValue() const { return kind_ == Expression::kValue; } |   594   bool IsValue() const { return kind_ == Expression::kValue; } | 
|   595   bool IsTest() const { return kind_ == Expression::kTest; } |   595   bool IsTest() const { return kind_ == Expression::kTest; } | 
|   596  |   596  | 
|   597   // 'Fill' this context with a hydrogen value.  The value is assumed to |   597   // 'Fill' this context with a hydrogen value.  The value is assumed to | 
|   598   // have already been inserted in the instruction stream (or not need to |   598   // have already been inserted in the instruction stream (or not need to | 
|   599   // be, e.g., HPhi).  Call this function in tail position in the Visit |   599   // be, e.g., HPhi).  Call this function in tail position in the Visit | 
|   600   // functions for expressions. |   600   // functions for expressions. | 
|   601   virtual void ReturnValue(HValue* value) = 0; |   601   virtual void ReturnValue(HValue* value) = 0; | 
|   602  |   602  | 
|   603   // Add a hydrogen instruction to the instruction stream (recording an |   603   // Add a hydrogen instruction to the instruction stream (recording an | 
|   604   // environment simulation if necessary) and then fill this context with |   604   // environment simulation if necessary) and then fill this context with | 
|   605   // the instruction as value. |   605   // the instruction as value. | 
|   606   virtual void ReturnInstruction(HInstruction* instr, int ast_id) = 0; |   606   virtual void ReturnInstruction(HInstruction* instr, BailoutId ast_id) = 0; | 
|   607  |   607  | 
|   608   // Finishes the current basic block and materialize a boolean for |   608   // Finishes the current basic block and materialize a boolean for | 
|   609   // value context, nothing for effect, generate a branch for test context. |   609   // value context, nothing for effect, generate a branch for test context. | 
|   610   // Call this function in tail position in the Visit functions for |   610   // Call this function in tail position in the Visit functions for | 
|   611   // expressions. |   611   // expressions. | 
|   612   virtual void ReturnControl(HControlInstruction* instr, int ast_id) = 0; |   612   virtual void ReturnControl(HControlInstruction* instr, BailoutId ast_id) = 0; | 
|   613  |   613  | 
|   614   void set_for_typeof(bool for_typeof) { for_typeof_ = for_typeof; } |   614   void set_for_typeof(bool for_typeof) { for_typeof_ = for_typeof; } | 
|   615   bool is_for_typeof() { return for_typeof_; } |   615   bool is_for_typeof() { return for_typeof_; } | 
|   616  |   616  | 
|   617  protected: |   617  protected: | 
|   618   AstContext(HGraphBuilder* owner, Expression::Context kind); |   618   AstContext(HGraphBuilder* owner, Expression::Context kind); | 
|   619   virtual ~AstContext(); |   619   virtual ~AstContext(); | 
|   620  |   620  | 
|   621   HGraphBuilder* owner() const { return owner_; } |   621   HGraphBuilder* owner() const { return owner_; } | 
|   622  |   622  | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
|   637  |   637  | 
|   638  |   638  | 
|   639 class EffectContext: public AstContext { |   639 class EffectContext: public AstContext { | 
|   640  public: |   640  public: | 
|   641   explicit EffectContext(HGraphBuilder* owner) |   641   explicit EffectContext(HGraphBuilder* owner) | 
|   642       : AstContext(owner, Expression::kEffect) { |   642       : AstContext(owner, Expression::kEffect) { | 
|   643   } |   643   } | 
|   644   virtual ~EffectContext(); |   644   virtual ~EffectContext(); | 
|   645  |   645  | 
|   646   virtual void ReturnValue(HValue* value); |   646   virtual void ReturnValue(HValue* value); | 
|   647   virtual void ReturnInstruction(HInstruction* instr, int ast_id); |   647   virtual void ReturnInstruction(HInstruction* instr, BailoutId ast_id); | 
|   648   virtual void ReturnControl(HControlInstruction* instr, int ast_id); |   648   virtual void ReturnControl(HControlInstruction* instr, BailoutId ast_id); | 
|   649 }; |   649 }; | 
|   650  |   650  | 
|   651  |   651  | 
|   652 class ValueContext: public AstContext { |   652 class ValueContext: public AstContext { | 
|   653  public: |   653  public: | 
|   654   explicit ValueContext(HGraphBuilder* owner, ArgumentsAllowedFlag flag) |   654   explicit ValueContext(HGraphBuilder* owner, ArgumentsAllowedFlag flag) | 
|   655       : AstContext(owner, Expression::kValue), flag_(flag) { |   655       : AstContext(owner, Expression::kValue), flag_(flag) { | 
|   656   } |   656   } | 
|   657   virtual ~ValueContext(); |   657   virtual ~ValueContext(); | 
|   658  |   658  | 
|   659   virtual void ReturnValue(HValue* value); |   659   virtual void ReturnValue(HValue* value); | 
|   660   virtual void ReturnInstruction(HInstruction* instr, int ast_id); |   660   virtual void ReturnInstruction(HInstruction* instr, BailoutId ast_id); | 
|   661   virtual void ReturnControl(HControlInstruction* instr, int ast_id); |   661   virtual void ReturnControl(HControlInstruction* instr, BailoutId ast_id); | 
|   662  |   662  | 
|   663   bool arguments_allowed() { return flag_ == ARGUMENTS_ALLOWED; } |   663   bool arguments_allowed() { return flag_ == ARGUMENTS_ALLOWED; } | 
|   664  |   664  | 
|   665  private: |   665  private: | 
|   666   ArgumentsAllowedFlag flag_; |   666   ArgumentsAllowedFlag flag_; | 
|   667 }; |   667 }; | 
|   668  |   668  | 
|   669  |   669  | 
|   670 class TestContext: public AstContext { |   670 class TestContext: public AstContext { | 
|   671  public: |   671  public: | 
|   672   TestContext(HGraphBuilder* owner, |   672   TestContext(HGraphBuilder* owner, | 
|   673               Expression* condition, |   673               Expression* condition, | 
|   674               HBasicBlock* if_true, |   674               HBasicBlock* if_true, | 
|   675               HBasicBlock* if_false) |   675               HBasicBlock* if_false) | 
|   676       : AstContext(owner, Expression::kTest), |   676       : AstContext(owner, Expression::kTest), | 
|   677         condition_(condition), |   677         condition_(condition), | 
|   678         if_true_(if_true), |   678         if_true_(if_true), | 
|   679         if_false_(if_false) { |   679         if_false_(if_false) { | 
|   680   } |   680   } | 
|   681  |   681  | 
|   682   virtual void ReturnValue(HValue* value); |   682   virtual void ReturnValue(HValue* value); | 
|   683   virtual void ReturnInstruction(HInstruction* instr, int ast_id); |   683   virtual void ReturnInstruction(HInstruction* instr, BailoutId ast_id); | 
|   684   virtual void ReturnControl(HControlInstruction* instr, int ast_id); |   684   virtual void ReturnControl(HControlInstruction* instr, BailoutId ast_id); | 
|   685  |   685  | 
|   686   static TestContext* cast(AstContext* context) { |   686   static TestContext* cast(AstContext* context) { | 
|   687     ASSERT(context->IsTest()); |   687     ASSERT(context->IsTest()); | 
|   688     return reinterpret_cast<TestContext*>(context); |   688     return reinterpret_cast<TestContext*>(context); | 
|   689   } |   689   } | 
|   690  |   690  | 
|   691   Expression* condition() const { return condition_; } |   691   Expression* condition() const { return condition_; } | 
|   692   HBasicBlock* if_true() const { return if_true_; } |   692   HBasicBlock* if_true() const { return if_true_; } | 
|   693   HBasicBlock* if_false() const { return if_false_; } |   693   HBasicBlock* if_false() const { return if_false_; } | 
|   694  |   694  | 
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   846   HBasicBlock* current_block() const { return current_block_; } |   846   HBasicBlock* current_block() const { return current_block_; } | 
|   847   void set_current_block(HBasicBlock* block) { current_block_ = block; } |   847   void set_current_block(HBasicBlock* block) { current_block_ = block; } | 
|   848   HEnvironment* environment() const { |   848   HEnvironment* environment() const { | 
|   849     return current_block()->last_environment(); |   849     return current_block()->last_environment(); | 
|   850   } |   850   } | 
|   851  |   851  | 
|   852   bool inline_bailout() { return inline_bailout_; } |   852   bool inline_bailout() { return inline_bailout_; } | 
|   853  |   853  | 
|   854   // Adding instructions. |   854   // Adding instructions. | 
|   855   HInstruction* AddInstruction(HInstruction* instr); |   855   HInstruction* AddInstruction(HInstruction* instr); | 
|   856   void AddSimulate(int ast_id); |   856   void AddSimulate(BailoutId ast_id); | 
|   857  |   857  | 
|   858   // Bailout environment manipulation. |   858   // Bailout environment manipulation. | 
|   859   void Push(HValue* value) { environment()->Push(value); } |   859   void Push(HValue* value) { environment()->Push(value); } | 
|   860   HValue* Pop() { return environment()->Pop(); } |   860   HValue* Pop() { return environment()->Pop(); } | 
|   861  |   861  | 
|   862   void Bailout(const char* reason); |   862   void Bailout(const char* reason); | 
|   863  |   863  | 
|   864   HBasicBlock* CreateJoin(HBasicBlock* first, |   864   HBasicBlock* CreateJoin(HBasicBlock* first, | 
|   865                           HBasicBlock* second, |   865                           HBasicBlock* second, | 
|   866                           int join_id); |   866                           BailoutId join_id); | 
|   867  |   867  | 
|   868   TypeFeedbackOracle* oracle() const { return function_state()->oracle(); } |   868   TypeFeedbackOracle* oracle() const { return function_state()->oracle(); } | 
|   869  |   869  | 
|   870   FunctionState* function_state() const { return function_state_; } |   870   FunctionState* function_state() const { return function_state_; } | 
|   871  |   871  | 
|   872   void VisitDeclarations(ZoneList<Declaration*>* declarations); |   872   void VisitDeclarations(ZoneList<Declaration*>* declarations); | 
|   873  |   873  | 
|   874   void* operator new(size_t size, Zone* zone) { |   874   void* operator new(size_t size, Zone* zone) { | 
|   875     return zone->New(static_cast<int>(size)); |   875     return zone->New(static_cast<int>(size)); | 
|   876   } |   876   } | 
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1027   bool TryArgumentsAccess(Property* expr); |  1027   bool TryArgumentsAccess(Property* expr); | 
|  1028  |  1028  | 
|  1029   // Try to optimize fun.apply(receiver, arguments) pattern. |  1029   // Try to optimize fun.apply(receiver, arguments) pattern. | 
|  1030   bool TryCallApply(Call* expr); |  1030   bool TryCallApply(Call* expr); | 
|  1031  |  1031  | 
|  1032   int InliningAstSize(Handle<JSFunction> target); |  1032   int InliningAstSize(Handle<JSFunction> target); | 
|  1033   bool TryInline(CallKind call_kind, |  1033   bool TryInline(CallKind call_kind, | 
|  1034                  Handle<JSFunction> target, |  1034                  Handle<JSFunction> target, | 
|  1035                  int arguments_count, |  1035                  int arguments_count, | 
|  1036                  HValue* receiver, |  1036                  HValue* receiver, | 
|  1037                  int ast_id, |  1037                  BailoutId ast_id, | 
|  1038                  int return_id, |  1038                  BailoutId return_id, | 
|  1039                  ReturnHandlingFlag return_handling); |  1039                  ReturnHandlingFlag return_handling); | 
|  1040  |  1040  | 
|  1041   bool TryInlineCall(Call* expr, bool drop_extra = false); |  1041   bool TryInlineCall(Call* expr, bool drop_extra = false); | 
|  1042   bool TryInlineConstruct(CallNew* expr, HValue* receiver); |  1042   bool TryInlineConstruct(CallNew* expr, HValue* receiver); | 
|  1043   bool TryInlineGetter(Handle<JSFunction> getter, Property* prop); |  1043   bool TryInlineGetter(Handle<JSFunction> getter, Property* prop); | 
|  1044   bool TryInlineBuiltinMethodCall(Call* expr, |  1044   bool TryInlineBuiltinMethodCall(Call* expr, | 
|  1045                                   HValue* receiver, |  1045                                   HValue* receiver, | 
|  1046                                   Handle<Map> receiver_map, |  1046                                   Handle<Map> receiver_map, | 
|  1047                                   CheckType check_type); |  1047                                   CheckType check_type); | 
|  1048   bool TryInlineBuiltinFunctionCall(Call* expr, bool drop_extra); |  1048   bool TryInlineBuiltinFunctionCall(Call* expr, bool drop_extra); | 
|  1049  |  1049  | 
|  1050   // If --trace-inlining, print a line of the inlining trace.  Inlining |  1050   // If --trace-inlining, print a line of the inlining trace.  Inlining | 
|  1051   // succeeded if the reason string is NULL and failed if there is a |  1051   // succeeded if the reason string is NULL and failed if there is a | 
|  1052   // non-NULL reason string. |  1052   // non-NULL reason string. | 
|  1053   void TraceInline(Handle<JSFunction> target, |  1053   void TraceInline(Handle<JSFunction> target, | 
|  1054                    Handle<JSFunction> caller, |  1054                    Handle<JSFunction> caller, | 
|  1055                    const char* failure_reason); |  1055                    const char* failure_reason); | 
|  1056  |  1056  | 
|  1057   void HandleGlobalVariableAssignment(Variable* var, |  1057   void HandleGlobalVariableAssignment(Variable* var, | 
|  1058                                       HValue* value, |  1058                                       HValue* value, | 
|  1059                                       int position, |  1059                                       int position, | 
|  1060                                       int ast_id); |  1060                                       BailoutId ast_id); | 
|  1061  |  1061  | 
|  1062   void HandlePropertyAssignment(Assignment* expr); |  1062   void HandlePropertyAssignment(Assignment* expr); | 
|  1063   void HandleCompoundAssignment(Assignment* expr); |  1063   void HandleCompoundAssignment(Assignment* expr); | 
|  1064   void HandlePolymorphicLoadNamedField(Property* expr, |  1064   void HandlePolymorphicLoadNamedField(Property* expr, | 
|  1065                                        HValue* object, |  1065                                        HValue* object, | 
|  1066                                        SmallMapList* types, |  1066                                        SmallMapList* types, | 
|  1067                                        Handle<String> name); |  1067                                        Handle<String> name); | 
|  1068   void HandlePolymorphicStoreNamedField(Assignment* expr, |  1068   void HandlePolymorphicStoreNamedField(Assignment* expr, | 
|  1069                                         HValue* object, |  1069                                         HValue* object, | 
|  1070                                         HValue* value, |  1070                                         HValue* value, | 
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1112                                               HValue* key, |  1112                                               HValue* key, | 
|  1113                                               HValue* val, |  1113                                               HValue* val, | 
|  1114                                               HValue* dependency, |  1114                                               HValue* dependency, | 
|  1115                                               Handle<Map> map, |  1115                                               Handle<Map> map, | 
|  1116                                               bool is_store); |  1116                                               bool is_store); | 
|  1117  |  1117  | 
|  1118   HValue* HandlePolymorphicElementAccess(HValue* object, |  1118   HValue* HandlePolymorphicElementAccess(HValue* object, | 
|  1119                                          HValue* key, |  1119                                          HValue* key, | 
|  1120                                          HValue* val, |  1120                                          HValue* val, | 
|  1121                                          Expression* prop, |  1121                                          Expression* prop, | 
|  1122                                          int ast_id, |  1122                                          BailoutId ast_id, | 
|  1123                                          int position, |  1123                                          int position, | 
|  1124                                          bool is_store, |  1124                                          bool is_store, | 
|  1125                                          bool* has_side_effects); |  1125                                          bool* has_side_effects); | 
|  1126  |  1126  | 
|  1127   HValue* HandleKeyedElementAccess(HValue* obj, |  1127   HValue* HandleKeyedElementAccess(HValue* obj, | 
|  1128                                    HValue* key, |  1128                                    HValue* key, | 
|  1129                                    HValue* val, |  1129                                    HValue* val, | 
|  1130                                    Expression* expr, |  1130                                    Expression* expr, | 
|  1131                                    int ast_id, |  1131                                    BailoutId ast_id, | 
|  1132                                    int position, |  1132                                    int position, | 
|  1133                                    bool is_store, |  1133                                    bool is_store, | 
|  1134                                    bool* has_side_effects); |  1134                                    bool* has_side_effects); | 
|  1135  |  1135  | 
|  1136   // Tries to find a JavaScript accessor of the given name in the prototype |  1136   // Tries to find a JavaScript accessor of the given name in the prototype | 
|  1137   // chain starting at the given map. Return true iff there is one, including |  1137   // chain starting at the given map. Return true iff there is one, including | 
|  1138   // the corresponding AccessorPair plus its holder (which could be null when |  1138   // the corresponding AccessorPair plus its holder (which could be null when | 
|  1139   // the accessor is found directly in the given map). |  1139   // the accessor is found directly in the given map). | 
|  1140   bool LookupAccessorPair(Handle<Map> map, |  1140   bool LookupAccessorPair(Handle<Map> map, | 
|  1141                           Handle<String> name, |  1141                           Handle<String> name, | 
| (...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1467   const char* filename_; |  1467   const char* filename_; | 
|  1468   HeapStringAllocator string_allocator_; |  1468   HeapStringAllocator string_allocator_; | 
|  1469   StringStream trace_; |  1469   StringStream trace_; | 
|  1470   int indent_; |  1470   int indent_; | 
|  1471 }; |  1471 }; | 
|  1472  |  1472  | 
|  1473  |  1473  | 
|  1474 } }  // namespace v8::internal |  1474 } }  // namespace v8::internal | 
|  1475  |  1475  | 
|  1476 #endif  // V8_HYDROGEN_H_ |  1476 #endif  // V8_HYDROGEN_H_ | 
| OLD | NEW |