| Index: src/deoptimizer.h | 
| diff --git a/src/deoptimizer.h b/src/deoptimizer.h | 
| index edf6c504f1c1340ae9345dd510a7dbc8c34d5f11..d4d3c48698a10d0d4fdd9b53d567f5bd45e76cd0 100644 | 
| --- a/src/deoptimizer.h | 
| +++ b/src/deoptimizer.h | 
| @@ -98,53 +98,34 @@ class OptimizedFunctionFilter BASE_EMBEDDED { | 
| class Deoptimizer; | 
|  | 
|  | 
| -class DeoptimizerData { | 
| - public: | 
| -  explicit DeoptimizerData(MemoryAllocator* allocator); | 
| -  ~DeoptimizerData(); | 
| - | 
| -#ifdef ENABLE_DEBUGGER_SUPPORT | 
| -  void Iterate(ObjectVisitor* v); | 
| -#endif | 
| - | 
| -  Code* FindDeoptimizingCode(Address addr); | 
| -  void RemoveDeoptimizingCode(Code* code); | 
| - | 
| - private: | 
| -  MemoryAllocator* allocator_; | 
| -  int eager_deoptimization_entry_code_entries_; | 
| -  int lazy_deoptimization_entry_code_entries_; | 
| -  MemoryChunk* eager_deoptimization_entry_code_; | 
| -  MemoryChunk* lazy_deoptimization_entry_code_; | 
| -  Deoptimizer* current_; | 
| - | 
| -#ifdef ENABLE_DEBUGGER_SUPPORT | 
| -  DeoptimizedFrameInfo* deoptimized_frame_info_; | 
| -#endif | 
| - | 
| -  // List of deoptimized code which still have references from active stack | 
| -  // frames. These code objects are needed by the deoptimizer when deoptimizing | 
| -  // a frame for which the code object for the function function has been | 
| -  // changed from the code present when deoptimizing was done. | 
| -  DeoptimizingCodeListNode* deoptimizing_code_list_; | 
| - | 
| -  friend class Deoptimizer; | 
| - | 
| -  DISALLOW_COPY_AND_ASSIGN(DeoptimizerData); | 
| -}; | 
| - | 
| - | 
| class Deoptimizer : public Malloced { | 
| public: | 
| enum BailoutType { | 
| EAGER, | 
| LAZY, | 
| +    SOFT, | 
| OSR, | 
| // This last bailout type is not really a bailout, but used by the | 
| // debugger to deoptimize stack frames to allow inspection. | 
| DEBUGGER | 
| }; | 
|  | 
| +  static const int kBailoutTypesWithCodeEntry = SOFT + 1; | 
| + | 
| +  struct JumpTableEntry { | 
| +    inline JumpTableEntry(Address entry, | 
| +                          Deoptimizer::BailoutType type, | 
| +                          bool frame) | 
| +        : label(), | 
| +          address(entry), | 
| +          bailout_type(type), | 
| +          needs_frame(frame) { } | 
| +    Label label; | 
| +    Address address; | 
| +    Deoptimizer::BailoutType bailout_type; | 
| +    bool needs_frame; | 
| +  }; | 
| + | 
| static bool TraceEnabledFor(BailoutType deopt_type, | 
| StackFrame::Type frame_type); | 
| static const char* MessageFor(BailoutType type); | 
| @@ -626,6 +607,40 @@ class FrameDescription { | 
| }; | 
|  | 
|  | 
| +class DeoptimizerData { | 
| + public: | 
| +  explicit DeoptimizerData(MemoryAllocator* allocator); | 
| +  ~DeoptimizerData(); | 
| + | 
| +#ifdef ENABLE_DEBUGGER_SUPPORT | 
| +  void Iterate(ObjectVisitor* v); | 
| +#endif | 
| + | 
| +  Code* FindDeoptimizingCode(Address addr); | 
| +  void RemoveDeoptimizingCode(Code* code); | 
| + | 
| + private: | 
| +  MemoryAllocator* allocator_; | 
| +  int deopt_entry_code_entries_[Deoptimizer::kBailoutTypesWithCodeEntry]; | 
| +  MemoryChunk* deopt_entry_code_[Deoptimizer::kBailoutTypesWithCodeEntry]; | 
| +  Deoptimizer* current_; | 
| + | 
| +#ifdef ENABLE_DEBUGGER_SUPPORT | 
| +  DeoptimizedFrameInfo* deoptimized_frame_info_; | 
| +#endif | 
| + | 
| +  // List of deoptimized code which still have references from active stack | 
| +  // frames. These code objects are needed by the deoptimizer when deoptimizing | 
| +  // a frame for which the code object for the function function has been | 
| +  // changed from the code present when deoptimizing was done. | 
| +  DeoptimizingCodeListNode* deoptimizing_code_list_; | 
| + | 
| +  friend class Deoptimizer; | 
| + | 
| +  DISALLOW_COPY_AND_ASSIGN(DeoptimizerData); | 
| +}; | 
| + | 
| + | 
| class TranslationBuffer BASE_EMBEDDED { | 
| public: | 
| explicit TranslationBuffer(Zone* zone) : contents_(256, zone) { } | 
|  |