| Index: src/objects.h
 | 
| diff --git a/src/objects.h b/src/objects.h
 | 
| index 11b51bff19635998672ae906886ba531cd081573..a1a52b6eee75ef4c97542aedafc29f5e99f347b6 100644
 | 
| --- a/src/objects.h
 | 
| +++ b/src/objects.h
 | 
| @@ -10870,20 +10870,18 @@ class DebugInfo: public Struct {
 | 
|   public:
 | 
|    // The shared function info for the source being debugged.
 | 
|    DECL_ACCESSORS(shared, SharedFunctionInfo)
 | 
| -  // Code object for the patched code. This code object is the code object
 | 
| -  // currently active for the function.
 | 
| -  DECL_ACCESSORS(abstract_code, AbstractCode)
 | 
| +
 | 
| +  DECL_ACCESSORS(debug_bytecode_array, Object)
 | 
|    // Fixed array holding status information for each active break point.
 | 
|    DECL_ACCESSORS(break_points, FixedArray)
 | 
|  
 | 
|    // Check if there is a break point at a source position.
 | 
|    bool HasBreakPoint(int source_position);
 | 
| -  // Clear a break point.
 | 
| -  static void ClearBreakPoint(Handle<DebugInfo> debug_info, int source_position,
 | 
| +  // Attempt to clear a break point. Return true if successful.
 | 
| +  static bool ClearBreakPoint(Handle<DebugInfo> debug_info,
 | 
|                                Handle<Object> break_point_object);
 | 
|    // Set a break point.
 | 
|    static void SetBreakPoint(Handle<DebugInfo> debug_info, int source_position,
 | 
| -                            int statement_position,
 | 
|                              Handle<Object> break_point_object);
 | 
|    // Get the break point objects for a source position.
 | 
|    Handle<Object> GetBreakPointObjects(int source_position);
 | 
| @@ -10895,7 +10893,12 @@ class DebugInfo: public Struct {
 | 
|  
 | 
|    static Smi* uninitialized() { return Smi::FromInt(0); }
 | 
|  
 | 
| -  inline BytecodeArray* original_bytecode_array();
 | 
| +  inline bool HasDebugBytecodeArray();
 | 
| +  inline bool HasDebugCode();
 | 
| +
 | 
| +  inline BytecodeArray* OriginalBytecodeArray();
 | 
| +  inline BytecodeArray* DebugBytecodeArray();
 | 
| +  inline Code* DebugCode();
 | 
|  
 | 
|    DECLARE_CAST(DebugInfo)
 | 
|  
 | 
| @@ -10904,11 +10907,13 @@ class DebugInfo: public Struct {
 | 
|    DECLARE_VERIFIER(DebugInfo)
 | 
|  
 | 
|    static const int kSharedFunctionInfoIndex = Struct::kHeaderSize;
 | 
| -  static const int kAbstractCodeIndex = kSharedFunctionInfoIndex + kPointerSize;
 | 
| -  static const int kBreakPointsStateIndex = kAbstractCodeIndex + kPointerSize;
 | 
| +  static const int kDebugBytecodeArrayIndex =
 | 
| +      kSharedFunctionInfoIndex + kPointerSize;
 | 
| +  static const int kBreakPointsStateIndex =
 | 
| +      kDebugBytecodeArrayIndex + kPointerSize;
 | 
|    static const int kSize = kBreakPointsStateIndex + kPointerSize;
 | 
|  
 | 
| -  static const int kEstimatedNofBreakPointsInFunction = 16;
 | 
| +  static const int kEstimatedNofBreakPointsInFunction = 4;
 | 
|  
 | 
|   private:
 | 
|    // Get the break point info object for a source position.
 | 
| @@ -10940,6 +10945,8 @@ class BreakPointInfo: public Struct {
 | 
|    // Get the number of break points for this code offset.
 | 
|    int GetBreakPointCount();
 | 
|  
 | 
| +  int GetStatementPosition(Handle<DebugInfo> debug_info);
 | 
| +
 | 
|    DECLARE_CAST(BreakPointInfo)
 | 
|  
 | 
|    // Dispatched behavior.
 | 
| 
 |