| OLD | NEW | 
|---|
| 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a | 
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. | 
| 4 | 4 | 
| 5 #ifndef RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ | 5 #ifndef RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ | 
| 6 #define RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ | 6 #define RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ | 
| 7 | 7 | 
| 8 #include "vm/allocation.h" | 8 #include "vm/allocation.h" | 
| 9 #include "vm/ast.h" | 9 #include "vm/ast.h" | 
| 10 #include "vm/growable_array.h" | 10 #include "vm/growable_array.h" | 
| (...skipping 7248 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 7259 | 7259 | 
| 7260  private: | 7260  private: | 
| 7261   const Token::Kind op_kind_; | 7261   const Token::Kind op_kind_; | 
| 7262 | 7262 | 
| 7263   DISALLOW_COPY_AND_ASSIGN(UnaryDoubleOpInstr); | 7263   DISALLOW_COPY_AND_ASSIGN(UnaryDoubleOpInstr); | 
| 7264 }; | 7264 }; | 
| 7265 | 7265 | 
| 7266 | 7266 | 
| 7267 class CheckStackOverflowInstr : public TemplateInstruction<0, NoThrow> { | 7267 class CheckStackOverflowInstr : public TemplateInstruction<0, NoThrow> { | 
| 7268  public: | 7268  public: | 
|  | 7269   enum Kind { | 
|  | 7270     // Full stack overflow checks are emitted in both unoptimized and | 
|  | 7271     // optimized versions of the code. | 
|  | 7272     kFull, | 
|  | 7273 | 
|  | 7274     // OsrEntry stack overflow checks are only needed in the unoptimized code | 
|  | 7275     // because we can't OSR optimized code. | 
|  | 7276     kOsrEntry, | 
|  | 7277   }; | 
|  | 7278 | 
| 7269   CheckStackOverflowInstr(TokenPosition token_pos, | 7279   CheckStackOverflowInstr(TokenPosition token_pos, | 
| 7270                           intptr_t loop_depth, | 7280                           intptr_t loop_depth, | 
| 7271                           intptr_t deopt_id) | 7281                           intptr_t deopt_id, | 
|  | 7282                           Kind kind = kFull) | 
| 7272       : TemplateInstruction(deopt_id), | 7283       : TemplateInstruction(deopt_id), | 
| 7273         token_pos_(token_pos), | 7284         token_pos_(token_pos), | 
| 7274         loop_depth_(loop_depth) {} | 7285         loop_depth_(loop_depth), | 
|  | 7286         kind_(kind) { | 
|  | 7287     ASSERT(kind != kOsrEntry || loop_depth > 0); | 
|  | 7288   } | 
| 7275 | 7289 | 
| 7276   virtual TokenPosition token_pos() const { return token_pos_; } | 7290   virtual TokenPosition token_pos() const { return token_pos_; } | 
| 7277   bool in_loop() const { return loop_depth_ > 0; } | 7291   bool in_loop() const { return loop_depth_ > 0; } | 
| 7278   intptr_t loop_depth() const { return loop_depth_; } | 7292   intptr_t loop_depth() const { return loop_depth_; } | 
| 7279 | 7293 | 
| 7280   DECLARE_INSTRUCTION(CheckStackOverflow) | 7294   DECLARE_INSTRUCTION(CheckStackOverflow) | 
| 7281 | 7295 | 
| 7282   virtual bool ComputeCanDeoptimize() const { return true; } | 7296   virtual bool ComputeCanDeoptimize() const { return true; } | 
| 7283 | 7297 | 
|  | 7298   virtual Instruction* Canonicalize(FlowGraph* flow_graph); | 
|  | 7299 | 
| 7284   virtual EffectSet Effects() const { return EffectSet::None(); } | 7300   virtual EffectSet Effects() const { return EffectSet::None(); } | 
| 7285 | 7301 | 
| 7286   PRINT_OPERANDS_TO_SUPPORT | 7302   PRINT_OPERANDS_TO_SUPPORT | 
| 7287 | 7303 | 
| 7288  private: | 7304  private: | 
| 7289   const TokenPosition token_pos_; | 7305   const TokenPosition token_pos_; | 
| 7290   const intptr_t loop_depth_; | 7306   const intptr_t loop_depth_; | 
|  | 7307   const Kind kind_; | 
| 7291 | 7308 | 
| 7292   DISALLOW_COPY_AND_ASSIGN(CheckStackOverflowInstr); | 7309   DISALLOW_COPY_AND_ASSIGN(CheckStackOverflowInstr); | 
| 7293 }; | 7310 }; | 
| 7294 | 7311 | 
| 7295 | 7312 | 
| 7296 // TODO(vegorov): remove this instruction in favor of Int32ToDouble. | 7313 // TODO(vegorov): remove this instruction in favor of Int32ToDouble. | 
| 7297 class SmiToDoubleInstr : public TemplateDefinition<1, NoThrow, Pure> { | 7314 class SmiToDoubleInstr : public TemplateDefinition<1, NoThrow, Pure> { | 
| 7298  public: | 7315  public: | 
| 7299   SmiToDoubleInstr(Value* value, TokenPosition token_pos) | 7316   SmiToDoubleInstr(Value* value, TokenPosition token_pos) | 
| 7300       : token_pos_(token_pos) { | 7317       : token_pos_(token_pos) { | 
| (...skipping 934 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 8235   LocationSummary* Name::MakeLocationSummary(Zone* zone, bool opt) const {     \ | 8252   LocationSummary* Name::MakeLocationSummary(Zone* zone, bool opt) const {     \ | 
| 8236     UNIMPLEMENTED();                                                           \ | 8253     UNIMPLEMENTED();                                                           \ | 
| 8237     return NULL;                                                               \ | 8254     return NULL;                                                               \ | 
| 8238   }                                                                            \ | 8255   }                                                                            \ | 
| 8239   void Name::EmitNativeCode(FlowGraphCompiler* compiler) { UNIMPLEMENTED(); } | 8256   void Name::EmitNativeCode(FlowGraphCompiler* compiler) { UNIMPLEMENTED(); } | 
| 8240 | 8257 | 
| 8241 | 8258 | 
| 8242 }  // namespace dart | 8259 }  // namespace dart | 
| 8243 | 8260 | 
| 8244 #endif  // RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ | 8261 #endif  // RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ | 
| OLD | NEW | 
|---|