michael@0: // |jit-test| debug michael@0: // Returning and throwing objects. michael@0: michael@0: load(libdir + "asserts.js"); michael@0: michael@0: var g = newGlobal(); michael@0: g.debuggeeGlobal = this; michael@0: g.eval("(" + function () { michael@0: var how, what; michael@0: var dbg = new Debugger(debuggeeGlobal); michael@0: dbg.onDebuggerStatement = function (frame) { michael@0: if (frame.callee.name === "configure") { michael@0: how = frame.arguments[0]; michael@0: what = frame.arguments[1]; michael@0: } else { michael@0: var resume = {}; michael@0: resume[how] = what; michael@0: return resume; michael@0: } michael@0: }; michael@0: } + ")();"); michael@0: michael@0: function configure(how, what) { debugger; } michael@0: function fire() { debugger; } michael@0: michael@0: var d = new Date; michael@0: configure('return', d); michael@0: assertEq(fire(), d); michael@0: configure('return', Math); michael@0: assertEq(fire(), Math); michael@0: michael@0: var x = new Error('oh no what are you doing'); michael@0: configure('throw', x); michael@0: assertThrowsValue(fire, x); michael@0: configure('throw', parseInt); michael@0: assertThrowsValue(fire, parseInt);