Changeset 169221 in webkit
- Timestamp:
- May 22, 2014 2:40:21 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r169202 r169221 1 2014-05-22 Mark Lam <mark.lam@apple.com> 2 3 REGRESSION(r154797): Debugger crashes when stepping over an uncaught exception. 4 <https://webkit.org/b/133182> 5 6 Reviewed by Oliver Hunt. 7 8 * inspector-protocol/debugger/regress-133182-expected.txt: Added. 9 * inspector-protocol/debugger/regress-133182.html: Added. 10 1 11 2014-05-22 Michał Pakuła vel Rutka <m.pakula@samsung.com> 2 12 -
trunk/Source/JavaScriptCore/ChangeLog
r169184 r169221 1 2014-05-22 Mark Lam <mark.lam@apple.com> 2 3 REGRESSION(r154797): Debugger crashes when stepping over an uncaught exception. 4 <https://webkit.org/b/133182> 5 6 Reviewed by Oliver Hunt. 7 8 Before r154797, we used to clear the VM exception before calling into the 9 debugger. After r154797, we don't. This patch will restore this clearing 10 of the exception before calling into the debugger. 11 12 Also added assertions after returning from calls into the debugger to 13 ensure that the debugger did not introduce any exceptions. 14 15 * interpreter/Interpreter.cpp: 16 (JSC::unwindCallFrame): 17 (JSC::Interpreter::unwind): 18 (JSC::Interpreter::debug): 19 - Fixed the assertion here. Interpreter::debug() should never be called 20 with a pending exception. Debugger callbacks for exceptions should be 21 handled by Interpreter::unwind() and Interpreter::unwindCallFrame(). 22 1 23 2014-05-21 Filip Pizlo <fpizlo@apple.com> 2 24 -
trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp
r169139 r169221 448 448 449 449 if (Debugger* debugger = callFrame->vmEntryGlobalObject()->debugger()) { 450 ClearExceptionScope scope(&callFrame->vm()); 450 451 if (callFrame->callee()) 451 452 debugger->returnEvent(callFrame); 452 453 else 453 454 debugger->didExecuteProgram(callFrame); 455 ASSERT(!callFrame->hadException()); 454 456 } 455 457 … … 701 703 exceptionValue = jsNull(); 702 704 703 if (exceptionValue.isObject()) {705 if (exceptionValue.isObject()) 704 706 isTermination = isTerminatedExecutionException(asObject(exceptionValue)); 705 }706 707 707 708 ASSERT(callFrame->vm().exceptionStack().size()); … … 727 728 728 729 debugger->exception(callFrame, exceptionValue, hasHandler); 730 ASSERT(!callFrame->hadException()); 729 731 } 730 732 … … 1226 1228 if (!debugger) 1227 1229 return; 1228 ASSERT(callFrame->codeBlock()->hasDebuggerRequests() || callFrame->hadException()); 1230 1231 ASSERT(callFrame->codeBlock()->hasDebuggerRequests()); 1232 ASSERT(!callFrame->hadException()); 1229 1233 1230 1234 switch (debugHookID) { 1231 1235 case DidEnterCallFrame: 1232 1236 debugger->callEvent(callFrame); 1233 return;1237 break; 1234 1238 case WillLeaveCallFrame: 1235 1239 debugger->returnEvent(callFrame); 1236 return;1240 break; 1237 1241 case WillExecuteStatement: 1238 1242 debugger->atStatement(callFrame); 1239 return;1243 break; 1240 1244 case WillExecuteProgram: 1241 1245 debugger->willExecuteProgram(callFrame); 1242 return;1246 break; 1243 1247 case DidExecuteProgram: 1244 1248 debugger->didExecuteProgram(callFrame); 1245 return;1249 break; 1246 1250 case DidReachBreakpoint: 1247 1251 debugger->didReachBreakpoint(callFrame); 1248 return; 1249 } 1252 break; 1253 } 1254 ASSERT(!callFrame->hadException()); 1250 1255 } 1251 1256
Note: See TracChangeset
for help on using the changeset viewer.