| OLD | NEW | 
|     1 // Copyright 2012 the V8 project authors. All rights reserved. |     1 // Copyright 2012 the V8 project authors. All rights reserved. | 
|     2 // Use of this source code is governed by a BSD-style license that can be |     2 // Use of this source code is governed by a BSD-style license that can be | 
|     3 // found in the LICENSE file. |     3 // found in the LICENSE file. | 
|     4  |     4  | 
|     5 #ifndef V8_DEOPTIMIZER_H_ |     5 #ifndef V8_DEOPTIMIZER_H_ | 
|     6 #define V8_DEOPTIMIZER_H_ |     6 #define V8_DEOPTIMIZER_H_ | 
|     7  |     7  | 
|     8 #include "src/allocation.h" |     8 #include "src/allocation.h" | 
|     9 #include "src/macro-assembler.h" |     9 #include "src/macro-assembler.h" | 
|    10  |    10  | 
| (...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   392   V(kUnknownMap, "Unknown map")                                                \ |   392   V(kUnknownMap, "Unknown map")                                                \ | 
|   393   V(kValueMismatch, "value mismatch")                                          \ |   393   V(kValueMismatch, "value mismatch")                                          \ | 
|   394   V(kWrongInstanceType, "wrong instance type")                                 \ |   394   V(kWrongInstanceType, "wrong instance type")                                 \ | 
|   395   V(kWrongMap, "wrong map")                                                    \ |   395   V(kWrongMap, "wrong map")                                                    \ | 
|   396   V(kUndefinedOrNullInForIn, "null or undefined in for-in")                    \ |   396   V(kUndefinedOrNullInForIn, "null or undefined in for-in")                    \ | 
|   397   V(kUndefinedOrNullInToObject, "null or undefined in ToObject") |   397   V(kUndefinedOrNullInToObject, "null or undefined in ToObject") | 
|   398  |   398  | 
|   399  |   399  | 
|   400 class Deoptimizer : public Malloced { |   400 class Deoptimizer : public Malloced { | 
|   401  public: |   401  public: | 
|   402   enum BailoutType { |   402   enum BailoutType { EAGER, LAZY, SOFT, kLastBailoutType = SOFT }; | 
|   403     EAGER, |  | 
|   404     LAZY, |  | 
|   405     SOFT, |  | 
|   406     // This last bailout type is not really a bailout, but used by the |  | 
|   407     // debugger to deoptimize stack frames to allow inspection. |  | 
|   408     DEBUGGER, |  | 
|   409     kBailoutTypesWithCodeEntry = SOFT + 1 |  | 
|   410   }; |  | 
|   411  |   403  | 
|   412 #define DEOPT_MESSAGES_CONSTANTS(C, T) C, |   404 #define DEOPT_MESSAGES_CONSTANTS(C, T) C, | 
|   413   enum DeoptReason { |   405   enum DeoptReason { | 
|   414     DEOPT_MESSAGES_LIST(DEOPT_MESSAGES_CONSTANTS) kLastDeoptReason |   406     DEOPT_MESSAGES_LIST(DEOPT_MESSAGES_CONSTANTS) kLastDeoptReason | 
|   415   }; |   407   }; | 
|   416 #undef DEOPT_MESSAGES_CONSTANTS |   408 #undef DEOPT_MESSAGES_CONSTANTS | 
|   417   static const char* GetDeoptReason(DeoptReason deopt_reason); |   409   static const char* GetDeoptReason(DeoptReason deopt_reason); | 
|   418  |   410  | 
|   419   struct DeoptInfo { |   411   struct DeoptInfo { | 
|   420     DeoptInfo(SourcePosition position, const char* m, DeoptReason d) |   412     DeoptInfo(SourcePosition position, const char* m, DeoptReason d) | 
| (...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   875 }; |   867 }; | 
|   876  |   868  | 
|   877  |   869  | 
|   878 class DeoptimizerData { |   870 class DeoptimizerData { | 
|   879  public: |   871  public: | 
|   880   explicit DeoptimizerData(MemoryAllocator* allocator); |   872   explicit DeoptimizerData(MemoryAllocator* allocator); | 
|   881   ~DeoptimizerData(); |   873   ~DeoptimizerData(); | 
|   882  |   874  | 
|   883  private: |   875  private: | 
|   884   MemoryAllocator* allocator_; |   876   MemoryAllocator* allocator_; | 
|   885   int deopt_entry_code_entries_[Deoptimizer::kBailoutTypesWithCodeEntry]; |   877   int deopt_entry_code_entries_[Deoptimizer::kLastBailoutType + 1]; | 
|   886   MemoryChunk* deopt_entry_code_[Deoptimizer::kBailoutTypesWithCodeEntry]; |   878   MemoryChunk* deopt_entry_code_[Deoptimizer::kLastBailoutType + 1]; | 
|   887  |   879  | 
|   888   Deoptimizer* current_; |   880   Deoptimizer* current_; | 
|   889  |   881  | 
|   890   friend class Deoptimizer; |   882   friend class Deoptimizer; | 
|   891  |   883  | 
|   892   DISALLOW_COPY_AND_ASSIGN(DeoptimizerData); |   884   DISALLOW_COPY_AND_ASSIGN(DeoptimizerData); | 
|   893 }; |   885 }; | 
|   894  |   886  | 
|   895  |   887  | 
|   896 class TranslationBuffer BASE_EMBEDDED { |   888 class TranslationBuffer BASE_EMBEDDED { | 
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1099   std::vector<Handle<Object> > expression_stack_; |  1091   std::vector<Handle<Object> > expression_stack_; | 
|  1100   int source_position_; |  1092   int source_position_; | 
|  1101  |  1093  | 
|  1102   friend class Deoptimizer; |  1094   friend class Deoptimizer; | 
|  1103 }; |  1095 }; | 
|  1104  |  1096  | 
|  1105 }  // namespace internal |  1097 }  // namespace internal | 
|  1106 }  // namespace v8 |  1098 }  // namespace v8 | 
|  1107  |  1099  | 
|  1108 #endif  // V8_DEOPTIMIZER_H_ |  1100 #endif  // V8_DEOPTIMIZER_H_ | 
| OLD | NEW |