| Index: test/mjsunit/debug-backtrace-text.js | 
| diff --git a/test/mjsunit/debug-backtrace-text.js b/test/mjsunit/debug-backtrace-text.js | 
| index 61648fa4e2e6ee4e8554556db02e18acd93fe0b1..cfc89e6c1d676238341e1d64f0b8ab8351419de1 100644 | 
| --- a/test/mjsunit/debug-backtrace-text.js | 
| +++ b/test/mjsunit/debug-backtrace-text.js | 
| @@ -35,7 +35,8 @@ function Point(x, y) { | 
|  | 
| Point.prototype.distanceTo = function(p) { | 
| debugger; | 
| -  return Math.sqrt(Math.pow(Math.abs(this.x - p.x), 2) + Math.pow(Math.abs(this.y - p.y), 2)) | 
| +  return Math.sqrt(Math.pow(Math.abs(this.x - p.x), 2) + | 
| +         Math.pow(Math.abs(this.y - p.y), 2)) | 
| } | 
|  | 
| p1 = new Point(1,1); | 
| @@ -58,7 +59,7 @@ a=[1,2,distance]; | 
| // Get the Debug object exposed from the debug context global object. | 
| Debug = debug.Debug | 
|  | 
| -testConstructor = false;  // Flag to control which part of the test is run. | 
| +what = 'constructor';  // Flag to control which part of the test is run. | 
| listenerCalled = false; | 
| exception = false; | 
|  | 
| @@ -72,30 +73,47 @@ function safeEval(code) { | 
|  | 
| function listener(event, exec_state, event_data, data) { | 
| try { | 
| -  if (event == Debug.DebugEvent.Break) | 
| -  { | 
| -    if (!testConstructor) { | 
| -      // The expected backtrace is | 
| -      // 0: Call distance on Point where distance is a property on the prototype | 
| -      // 1: Call distance on Point where distance is a direct property | 
| -      // 2: Call on function an array element 2 | 
| -      // 3: [anonymous] | 
| -      assertEquals("#<Point>.distanceTo(p=#<Point>)", exec_state.frame(0).invocationText()); | 
| -      assertEquals("#<Point>.distanceTo(p=#<Point>)", exec_state.frame(1).invocationText()); | 
| -      assertEquals("#<Array>[2](aka distance)(p=#<Point>, q=#<Point>)", exec_state.frame(2).invocationText()); | 
| -      assertEquals("[anonymous]()", exec_state.frame(3).invocationText()); | 
| -      listenerCalled = true; | 
| -    } else { | 
| -      // The expected backtrace is | 
| -      // 0: Call Point constructor | 
| -      // 1: Call on global function createPoint | 
| -      // 2: [anonymous] | 
| -      assertEquals("new Point(x=0, y=0)", exec_state.frame(0).invocationText()); | 
| -      assertEquals("createPoint(x=0, y=0)", exec_state.frame(1).invocationText()); | 
| -      assertEquals("[anonymous]()", exec_state.frame(2).invocationText()); | 
| -      listenerCalled = true; | 
| +    if (event == Debug.DebugEvent.Break) { | 
| +      if (what == 'constructor') { | 
| +        // The expected backtrace is | 
| +        // 0: Call distance on Point where distance is a prototype property | 
| +        // 1: Call distance on Point where distance is a direct property | 
| +        // 2: Call on function an array element 2 | 
| +        // 3: [anonymous] | 
| +        assertEquals("#<Point>.distanceTo(p=#<Point>)", | 
| +                     exec_state.frame(0).invocationText()); | 
| +        assertEquals("#<Point>.distanceTo(p=#<Point>)", | 
| +                     exec_state.frame(1).invocationText()); | 
| +        assertEquals("#<Array>[2](aka distance)(p=#<Point>, q=#<Point>)", | 
| +                     exec_state.frame(2).invocationText()); | 
| +        assertEquals("[anonymous]()", exec_state.frame(3).invocationText()); | 
| +        listenerCalled = true; | 
| +      } else if (what == 'breakpoint') { | 
| +        // The expected backtrace is | 
| +        // 0: Call Point constructor | 
| +        // 1: Call on global function createPoint | 
| +        // 2: [anonymous] | 
| +        assertEquals("new Point(x=0, y=0)", | 
| +                     exec_state.frame(0).invocationText()); | 
| +        assertEquals("createPoint(x=0, y=0)", | 
| +                     exec_state.frame(1).invocationText()); | 
| +        assertEquals("[anonymous]()", exec_state.frame(2).invocationText()); | 
| +        listenerCalled = true; | 
| +      } else if (what == 'symbol') { | 
| +        // The expected backtrace is | 
| +        // 0: Call Point constructor | 
| +        // 1: Call on symbol method | 
| +        // 2: [anonymous] | 
| +        assertEquals("new Point(x=0, y=0)", | 
| +                     exec_state.frame(0).invocationText()); | 
| +        assertEquals("#<Object>[Symbol(Das Symbol)](x=0, y=0)", | 
| +                     exec_state.frame(1).invocationText()); | 
| +        assertEquals("[anonymous]()", exec_state.frame(2).invocationText()); | 
| +        listenerCalled = true; | 
| +      } else { | 
| +        assertUnreachable(); | 
| +      } | 
| } | 
| -  } | 
| } catch (e) { | 
| exception = e | 
| }; | 
| @@ -112,11 +130,21 @@ assertTrue(listenerCalled); | 
| assertFalse(exception, "exception in listener") | 
|  | 
| // Set a break point and call to invoke the debug event listener. | 
| +what = 'breakpoint'; | 
| listenerCalled = false; | 
| -testConstructor = true; | 
| Debug.setBreakPoint(Point, 0, 0); | 
| createPoint(0, 0); | 
|  | 
| // Make sure that the debug event listener vas invoked (again). | 
| assertTrue(listenerCalled); | 
| assertFalse(exception, "exception in listener") | 
| + | 
| +what = 'symbol'; | 
| +listenerCalled = false; | 
| +var S = Symbol('Das Symbol'); | 
| +var o = { [S](x, y) { return new Point(x, y); } }; | 
| +Debug.setBreakPoint(Point, 0, 0); | 
| +o[S](0, 0); | 
| + | 
| +assertTrue(listenerCalled); | 
| +assertFalse(exception, "exception in listener") | 
|  |