Changeset 114309 in webkit
- Timestamp:
- Apr 16, 2012, 3:26:36 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r114306 r114309 1 2012-04-16 Oliver Hunt <[email protected]> 2 3 Exception stack traces aren't complete when the exception starts in native code 4 https://bugs.webkit.org/show_bug.cgi?id=84073 5 6 Reviewed by Gavin Barraclough. 7 8 Update tests to include new exception property ordering, and new functions 9 10 * fast/js/exception-properties-expected.txt: 11 * fast/js/script-tests/exception-properties.js: 12 * fast/js/script-tests/stack-trace.js: 13 (selfRecursive1): Modified slightly so that we produce consistent traces 14 * fast/js/stack-trace-expected.txt: 15 1 16 2012-04-16 David Alcala <[email protected]> 2 17 -
trunk/LayoutTests/fast/js/exception-properties-expected.txt
r108112 r114309 5 5 6 6 PASS enumerableProperties(error) is [] 7 PASS enumerableProperties(nativeError) is [" line", "sourceURL", "stack"]7 PASS enumerableProperties(nativeError) is ["stack", "line", "sourceURL"] 8 8 PASS Object.getPrototypeOf(nativeError).name is "RangeError" 9 9 PASS Object.getPrototypeOf(nativeError).message is "" -
trunk/LayoutTests/fast/js/script-tests/exception-properties.js
r108112 r114309 17 17 18 18 shouldBe('enumerableProperties(error)', '[]'); 19 shouldBe('enumerableProperties(nativeError)', '[" line", "sourceURL", "stack"]');19 shouldBe('enumerableProperties(nativeError)', '["stack", "line", "sourceURL"]'); 20 20 21 21 shouldBe('Object.getPrototypeOf(nativeError).name', '"RangeError"'); -
trunk/LayoutTests/fast/js/script-tests/stack-trace.js
r109021 r114309 50 50 try { scripterOuter(); } catch (e) { printStack(e.stack) } // program -> scripter -> outer -> inner 51 51 52 function selfRecursive1() { 53 selfRecursive1(); 54 } 52 function selfRecursive1() { selfRecursive1(); 53 } 54 55 55 56 56 try { selfRecursive1(); } catch (e) { printStack(e.stack) } // selfRecursive1 -> selfRecursive1 -> selfRecursive1 -> selfRecursive1 ... -
trunk/LayoutTests/fast/js/stack-trace-expected.txt
r109461 r114309 34 34 35 35 --> Stack Trace: 36 0 hostThrower at stack-trace.js:25 37 1 global code at stack-trace.js:47 36 0 appendChild at [native code] 37 1 hostThrower at stack-trace.js:25 38 2 global code at stack-trace.js:47 38 39 39 40 --> Stack Trace: … … 49 50 50 51 --> Stack Trace: 51 0 selfRecursive1 at stack-trace.js:5 352 1 selfRecursive1 at stack-trace.js:5 353 2 selfRecursive1 at stack-trace.js:5 354 3 selfRecursive1 at stack-trace.js:5 355 4 selfRecursive1 at stack-trace.js:5 356 5 selfRecursive1 at stack-trace.js:5 357 6 selfRecursive1 at stack-trace.js:5 358 7 selfRecursive1 at stack-trace.js:5 359 8 selfRecursive1 at stack-trace.js:5 360 9 selfRecursive1 at stack-trace.js:5 361 10 selfRecursive1 at stack-trace.js:5 362 11 selfRecursive1 at stack-trace.js:5 363 12 selfRecursive1 at stack-trace.js:5 364 13 selfRecursive1 at stack-trace.js:5 365 14 selfRecursive1 at stack-trace.js:5 366 15 selfRecursive1 at stack-trace.js:5 367 16 selfRecursive1 at stack-trace.js:5 368 17 selfRecursive1 at stack-trace.js:5 369 18 selfRecursive1 at stack-trace.js:5 370 19 selfRecursive1 at stack-trace.js:5 371 20 selfRecursive1 at stack-trace.js:5 372 21 selfRecursive1 at stack-trace.js:5 373 22 selfRecursive1 at stack-trace.js:5 374 23 selfRecursive1 at stack-trace.js:5 375 24 selfRecursive1 at stack-trace.js:5 376 25 selfRecursive1 at stack-trace.js:5 377 26 selfRecursive1 at stack-trace.js:5 378 27 selfRecursive1 at stack-trace.js:5 379 28 selfRecursive1 at stack-trace.js:5 380 29 selfRecursive1 at stack-trace.js:5 381 30 selfRecursive1 at stack-trace.js:5 382 31 selfRecursive1 at stack-trace.js:5 383 32 selfRecursive1 at stack-trace.js:5 384 33 selfRecursive1 at stack-trace.js:5 385 34 selfRecursive1 at stack-trace.js:5 386 35 selfRecursive1 at stack-trace.js:5 387 36 selfRecursive1 at stack-trace.js:5 388 37 selfRecursive1 at stack-trace.js:5 389 38 selfRecursive1 at stack-trace.js:5 390 39 selfRecursive1 at stack-trace.js:5 391 40 selfRecursive1 at stack-trace.js:5 392 41 selfRecursive1 at stack-trace.js:5 393 42 selfRecursive1 at stack-trace.js:5 394 43 selfRecursive1 at stack-trace.js:5 395 44 selfRecursive1 at stack-trace.js:5 396 45 selfRecursive1 at stack-trace.js:5 397 46 selfRecursive1 at stack-trace.js:5 398 47 selfRecursive1 at stack-trace.js:5 399 48 selfRecursive1 at stack-trace.js:5 3100 49 selfRecursive1 at stack-trace.js:5 3101 50 selfRecursive1 at stack-trace.js:5 3102 51 selfRecursive1 at stack-trace.js:5 3103 52 selfRecursive1 at stack-trace.js:5 3104 53 selfRecursive1 at stack-trace.js:5 3105 54 selfRecursive1 at stack-trace.js:5 3106 55 selfRecursive1 at stack-trace.js:5 3107 56 selfRecursive1 at stack-trace.js:5 3108 57 selfRecursive1 at stack-trace.js:5 3109 58 selfRecursive1 at stack-trace.js:5 3110 59 selfRecursive1 at stack-trace.js:5 3111 60 selfRecursive1 at stack-trace.js:5 3112 61 selfRecursive1 at stack-trace.js:5 3113 62 selfRecursive1 at stack-trace.js:5 3114 63 selfRecursive1 at stack-trace.js:5 3115 64 selfRecursive1 at stack-trace.js:5 3116 65 selfRecursive1 at stack-trace.js:5 3117 66 selfRecursive1 at stack-trace.js:5 3118 67 selfRecursive1 at stack-trace.js:5 3119 68 selfRecursive1 at stack-trace.js:5 3120 69 selfRecursive1 at stack-trace.js:5 3121 70 selfRecursive1 at stack-trace.js:5 3122 71 selfRecursive1 at stack-trace.js:5 3123 72 selfRecursive1 at stack-trace.js:5 3124 73 selfRecursive1 at stack-trace.js:5 3125 74 selfRecursive1 at stack-trace.js:5 3126 75 selfRecursive1 at stack-trace.js:5 3127 76 selfRecursive1 at stack-trace.js:5 3128 77 selfRecursive1 at stack-trace.js:5 3129 78 selfRecursive1 at stack-trace.js:5 3130 79 selfRecursive1 at stack-trace.js:5 3131 80 selfRecursive1 at stack-trace.js:5 3132 81 selfRecursive1 at stack-trace.js:5 3133 82 selfRecursive1 at stack-trace.js:5 3134 83 selfRecursive1 at stack-trace.js:5 3135 84 selfRecursive1 at stack-trace.js:5 3136 85 selfRecursive1 at stack-trace.js:5 3137 86 selfRecursive1 at stack-trace.js:5 3138 87 selfRecursive1 at stack-trace.js:5 3139 88 selfRecursive1 at stack-trace.js:5 3140 89 selfRecursive1 at stack-trace.js:5 3141 90 selfRecursive1 at stack-trace.js:5 3142 91 selfRecursive1 at stack-trace.js:5 3143 92 selfRecursive1 at stack-trace.js:5 3144 93 selfRecursive1 at stack-trace.js:5 3145 94 selfRecursive1 at stack-trace.js:5 3146 95 selfRecursive1 at stack-trace.js:5 3147 96 selfRecursive1 at stack-trace.js:5 3148 97 selfRecursive1 at stack-trace.js:5 3149 98 selfRecursive1 at stack-trace.js:5 3150 99 selfRecursive1 at stack-trace.js:5 3151 152 --> Stack Trace: 153 0 selfRecursive2 at stack-trace.js: 6252 0 selfRecursive1 at stack-trace.js:52 53 1 selfRecursive1 at stack-trace.js:52 54 2 selfRecursive1 at stack-trace.js:52 55 3 selfRecursive1 at stack-trace.js:52 56 4 selfRecursive1 at stack-trace.js:52 57 5 selfRecursive1 at stack-trace.js:52 58 6 selfRecursive1 at stack-trace.js:52 59 7 selfRecursive1 at stack-trace.js:52 60 8 selfRecursive1 at stack-trace.js:52 61 9 selfRecursive1 at stack-trace.js:52 62 10 selfRecursive1 at stack-trace.js:52 63 11 selfRecursive1 at stack-trace.js:52 64 12 selfRecursive1 at stack-trace.js:52 65 13 selfRecursive1 at stack-trace.js:52 66 14 selfRecursive1 at stack-trace.js:52 67 15 selfRecursive1 at stack-trace.js:52 68 16 selfRecursive1 at stack-trace.js:52 69 17 selfRecursive1 at stack-trace.js:52 70 18 selfRecursive1 at stack-trace.js:52 71 19 selfRecursive1 at stack-trace.js:52 72 20 selfRecursive1 at stack-trace.js:52 73 21 selfRecursive1 at stack-trace.js:52 74 22 selfRecursive1 at stack-trace.js:52 75 23 selfRecursive1 at stack-trace.js:52 76 24 selfRecursive1 at stack-trace.js:52 77 25 selfRecursive1 at stack-trace.js:52 78 26 selfRecursive1 at stack-trace.js:52 79 27 selfRecursive1 at stack-trace.js:52 80 28 selfRecursive1 at stack-trace.js:52 81 29 selfRecursive1 at stack-trace.js:52 82 30 selfRecursive1 at stack-trace.js:52 83 31 selfRecursive1 at stack-trace.js:52 84 32 selfRecursive1 at stack-trace.js:52 85 33 selfRecursive1 at stack-trace.js:52 86 34 selfRecursive1 at stack-trace.js:52 87 35 selfRecursive1 at stack-trace.js:52 88 36 selfRecursive1 at stack-trace.js:52 89 37 selfRecursive1 at stack-trace.js:52 90 38 selfRecursive1 at stack-trace.js:52 91 39 selfRecursive1 at stack-trace.js:52 92 40 selfRecursive1 at stack-trace.js:52 93 41 selfRecursive1 at stack-trace.js:52 94 42 selfRecursive1 at stack-trace.js:52 95 43 selfRecursive1 at stack-trace.js:52 96 44 selfRecursive1 at stack-trace.js:52 97 45 selfRecursive1 at stack-trace.js:52 98 46 selfRecursive1 at stack-trace.js:52 99 47 selfRecursive1 at stack-trace.js:52 100 48 selfRecursive1 at stack-trace.js:52 101 49 selfRecursive1 at stack-trace.js:52 102 50 selfRecursive1 at stack-trace.js:52 103 51 selfRecursive1 at stack-trace.js:52 104 52 selfRecursive1 at stack-trace.js:52 105 53 selfRecursive1 at stack-trace.js:52 106 54 selfRecursive1 at stack-trace.js:52 107 55 selfRecursive1 at stack-trace.js:52 108 56 selfRecursive1 at stack-trace.js:52 109 57 selfRecursive1 at stack-trace.js:52 110 58 selfRecursive1 at stack-trace.js:52 111 59 selfRecursive1 at stack-trace.js:52 112 60 selfRecursive1 at stack-trace.js:52 113 61 selfRecursive1 at stack-trace.js:52 114 62 selfRecursive1 at stack-trace.js:52 115 63 selfRecursive1 at stack-trace.js:52 116 64 selfRecursive1 at stack-trace.js:52 117 65 selfRecursive1 at stack-trace.js:52 118 66 selfRecursive1 at stack-trace.js:52 119 67 selfRecursive1 at stack-trace.js:52 120 68 selfRecursive1 at stack-trace.js:52 121 69 selfRecursive1 at stack-trace.js:52 122 70 selfRecursive1 at stack-trace.js:52 123 71 selfRecursive1 at stack-trace.js:52 124 72 selfRecursive1 at stack-trace.js:52 125 73 selfRecursive1 at stack-trace.js:52 126 74 selfRecursive1 at stack-trace.js:52 127 75 selfRecursive1 at stack-trace.js:52 128 76 selfRecursive1 at stack-trace.js:52 129 77 selfRecursive1 at stack-trace.js:52 130 78 selfRecursive1 at stack-trace.js:52 131 79 selfRecursive1 at stack-trace.js:52 132 80 selfRecursive1 at stack-trace.js:52 133 81 selfRecursive1 at stack-trace.js:52 134 82 selfRecursive1 at stack-trace.js:52 135 83 selfRecursive1 at stack-trace.js:52 136 84 selfRecursive1 at stack-trace.js:52 137 85 selfRecursive1 at stack-trace.js:52 138 86 selfRecursive1 at stack-trace.js:52 139 87 selfRecursive1 at stack-trace.js:52 140 88 selfRecursive1 at stack-trace.js:52 141 89 selfRecursive1 at stack-trace.js:52 142 90 selfRecursive1 at stack-trace.js:52 143 91 selfRecursive1 at stack-trace.js:52 144 92 selfRecursive1 at stack-trace.js:52 145 93 selfRecursive1 at stack-trace.js:52 146 94 selfRecursive1 at stack-trace.js:52 147 95 selfRecursive1 at stack-trace.js:52 148 96 selfRecursive1 at stack-trace.js:52 149 97 selfRecursive1 at stack-trace.js:52 150 98 selfRecursive1 at stack-trace.js:52 151 99 selfRecursive1 at stack-trace.js:52 152 153 --> Stack Trace: 154 0 selfRecursive2 at stack-trace.js:58 154 155 1 selfRecursive2 at stack-trace.js:62 155 156 2 selfRecursive2 at stack-trace.js:62 … … 253 254 254 255 --> Stack Trace: 255 0 selfRecursive3 at stack-trace.js:69256 1 at eval code257 2 eval at [native code]258 3 selfRecursive3 at stack-trace.js:69259 4 at eval code260 5 eval at [native code]261 6 selfRecursive3 at stack-trace.js:69262 7 at eval code263 8 eval at [native code]264 9 selfRecursive3 at stack-trace.js:69265 10 at eval code266 11 eval at [native code]267 12 selfRecursive3 at stack-trace.js:69268 13 at eval code269 14 eval at [native code]270 15 selfRecursive3 at stack-trace.js:69271 16 at eval code272 17 eval at [native code]273 18 selfRecursive3 at stack-trace.js:69274 19 at eval code275 20 eval at [native code]276 21 selfRecursive3 at stack-trace.js:69277 22 at eval code278 23 eval at [native code]279 24 selfRecursive3 at stack-trace.js:69280 25 at eval code281 26 eval at [native code]282 27 selfRecursive3 at stack-trace.js:69283 28 at eval code284 29 eval at [native code]285 30 selfRecursive3 at stack-trace.js:69286 31 at eval code287 32 eval at [native code]288 33 selfRecursive3 at stack-trace.js:69289 34 at eval code290 35 eval at [native code]291 36 selfRecursive3 at stack-trace.js:69292 37 at eval code293 38 eval at [native code]294 39 selfRecursive3 at stack-trace.js:69295 40 at eval code296 41 eval at [native code]297 42 selfRecursive3 at stack-trace.js:69298 43 at eval code299 44 eval at [native code]300 45 selfRecursive3 at stack-trace.js:69301 46 at eval code302 47 eval at [native code]303 48 selfRecursive3 at stack-trace.js:69304 49 at eval code305 50 eval at [native code]306 51 selfRecursive3 at stack-trace.js:69307 52 at eval code308 53 eval at [native code]309 54 selfRecursive3 at stack-trace.js:69310 55 at eval code311 56 eval at [native code]312 57 selfRecursive3 at stack-trace.js:69313 58 at eval code314 59 eval at [native code]315 60 selfRecursive3 at stack-trace.js:69316 61 at eval code317 62 eval at [native code]318 63 selfRecursive3 at stack-trace.js:69319 64 at eval code320 65 eval at [native code]321 66 selfRecursive3 at stack-trace.js:69322 67 at eval code323 68 eval at [native code]324 69 selfRecursive3 at stack-trace.js:69325 70 at eval code326 71 eval at [native code]327 72 selfRecursive3 at stack-trace.js:69328 73 at eval code329 74 eval at [native code]330 75 selfRecursive3 at stack-trace.js:69331 76 at eval code332 77 eval at [native code]333 78 selfRecursive3 at stack-trace.js:69334 79 at eval code335 80 eval at [native code]336 81 selfRecursive3 at stack-trace.js:69337 82 at eval code338 83 eval at [native code]339 84 selfRecursive3 at stack-trace.js:69340 85 at eval code341 86 eval at [native code]342 87 selfRecursive3 at stack-trace.js:69343 88 at eval code344 89 eval at [native code]345 90 selfRecursive3 at stack-trace.js:69346 91 at eval code347 92 eval at [native code]348 93 selfRecursive3 at stack-trace.js:69349 94 at eval code350 95 eval at [native code]351 96 selfRecursive3 at stack-trace.js:69352 97 at eval code353 98 eval at [native code]354 99 selfRecursive3 at stack-trace.js:69256 0 eval at [native code] 257 1 selfRecursive3 at stack-trace.js:69 258 2 at eval code 259 3 eval at [native code] 260 4 selfRecursive3 at stack-trace.js:69 261 5 at eval code 262 6 eval at [native code] 263 7 selfRecursive3 at stack-trace.js:69 264 8 at eval code 265 9 eval at [native code] 266 10 selfRecursive3 at stack-trace.js:69 267 11 at eval code 268 12 eval at [native code] 269 13 selfRecursive3 at stack-trace.js:69 270 14 at eval code 271 15 eval at [native code] 272 16 selfRecursive3 at stack-trace.js:69 273 17 at eval code 274 18 eval at [native code] 275 19 selfRecursive3 at stack-trace.js:69 276 20 at eval code 277 21 eval at [native code] 278 22 selfRecursive3 at stack-trace.js:69 279 23 at eval code 280 24 eval at [native code] 281 25 selfRecursive3 at stack-trace.js:69 282 26 at eval code 283 27 eval at [native code] 284 28 selfRecursive3 at stack-trace.js:69 285 29 at eval code 286 30 eval at [native code] 287 31 selfRecursive3 at stack-trace.js:69 288 32 at eval code 289 33 eval at [native code] 290 34 selfRecursive3 at stack-trace.js:69 291 35 at eval code 292 36 eval at [native code] 293 37 selfRecursive3 at stack-trace.js:69 294 38 at eval code 295 39 eval at [native code] 296 40 selfRecursive3 at stack-trace.js:69 297 41 at eval code 298 42 eval at [native code] 299 43 selfRecursive3 at stack-trace.js:69 300 44 at eval code 301 45 eval at [native code] 302 46 selfRecursive3 at stack-trace.js:69 303 47 at eval code 304 48 eval at [native code] 305 49 selfRecursive3 at stack-trace.js:69 306 50 at eval code 307 51 eval at [native code] 308 52 selfRecursive3 at stack-trace.js:69 309 53 at eval code 310 54 eval at [native code] 311 55 selfRecursive3 at stack-trace.js:69 312 56 at eval code 313 57 eval at [native code] 314 58 selfRecursive3 at stack-trace.js:69 315 59 at eval code 316 60 eval at [native code] 317 61 selfRecursive3 at stack-trace.js:69 318 62 at eval code 319 63 eval at [native code] 320 64 selfRecursive3 at stack-trace.js:69 321 65 at eval code 322 66 eval at [native code] 323 67 selfRecursive3 at stack-trace.js:69 324 68 at eval code 325 69 eval at [native code] 326 70 selfRecursive3 at stack-trace.js:69 327 71 at eval code 328 72 eval at [native code] 329 73 selfRecursive3 at stack-trace.js:69 330 74 at eval code 331 75 eval at [native code] 332 76 selfRecursive3 at stack-trace.js:69 333 77 at eval code 334 78 eval at [native code] 335 79 selfRecursive3 at stack-trace.js:69 336 80 at eval code 337 81 eval at [native code] 338 82 selfRecursive3 at stack-trace.js:69 339 83 at eval code 340 84 eval at [native code] 341 85 selfRecursive3 at stack-trace.js:69 342 86 at eval code 343 87 eval at [native code] 344 88 selfRecursive3 at stack-trace.js:69 345 89 at eval code 346 90 eval at [native code] 347 91 selfRecursive3 at stack-trace.js:69 348 92 at eval code 349 93 eval at [native code] 350 94 selfRecursive3 at stack-trace.js:69 351 95 at eval code 352 96 eval at [native code] 353 97 selfRecursive3 at stack-trace.js:69 354 98 at eval code 355 99 eval at [native code] 355 356 356 357 --> Stack Trace: … … 408 409 409 410 --> Stack Trace: 410 0 h at stack-trace.js:153 411 1 map at [native code] 412 2 mapTest at stack-trace.js:158 413 3 mapTestDriver at stack-trace.js:164 414 4 global code at stack-trace.js:175 411 0 map at [native code] 412 1 h at stack-trace.js:153 413 2 map at [native code] 414 3 mapTest at stack-trace.js:158 415 4 mapTestDriver at stack-trace.js:164 416 5 global code at stack-trace.js:175 415 417 416 418 --> Stack Trace: -
trunk/Source/JavaScriptCore/ChangeLog
r114274 r114309 1 2012-04-16 Oliver Hunt <[email protected]> 2 3 Exception stack traces aren't complete when the exception starts in native code 4 https://bugs.webkit.org/show_bug.cgi?id=84073 5 6 Reviewed by Gavin Barraclough. 7 8 Refactored building the stack trace to so that we can construct 9 it earlier, and don't rely on any prior work performed in the 10 exception handling machinery. Also updated LLInt and the DFG to 11 completely initialise the callframes of host function calls. 12 13 * bytecode/CodeBlock.h: 14 (JSC::CodeBlock::codeOriginIndexForReturn): 15 (CodeBlock): 16 * dfg/DFGOperations.cpp: 17 * interpreter/Interpreter.cpp: 18 (JSC::Interpreter::getStackTrace): 19 (JSC::Interpreter::addStackTraceIfNecessary): 20 (JSC): 21 (JSC::Interpreter::throwException): 22 * interpreter/Interpreter.h: 23 (Interpreter): 24 * jit/JITStubs.cpp: 25 (JSC::DEFINE_STUB_FUNCTION): 26 * jsc.cpp: 27 (functionJSCStack): 28 * llint/LLIntSlowPaths.cpp: 29 (JSC::LLInt::handleHostCall): 30 * parser/Parser.h: 31 (JSC::::parse): 32 * runtime/Error.cpp: 33 (JSC::addErrorInfo): 34 (JSC::throwError): 35 * runtime/Error.h: 36 (JSC): 37 1 38 2012-04-16 Oliver Hunt <[email protected]> 2 39 -
trunk/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def
r114255 r114309 213 213 ?getPropertyNames@JSObject@JSC@@SAXPAV12@PAVExecState@2@AAVPropertyNameArray@2@W4EnumerationMode@2@@Z 214 214 ?getSlice@ArgList@JSC@@QBEXHAAV12@@Z 215 ?getStackTrace@Interpreter@JSC@@SAXPAVJSGlobalData@2@ HAAV?$Vector@UStackFrame@JSC@@$0A@@WTF@@@Z215 ?getStackTrace@Interpreter@JSC@@SAXPAVJSGlobalData@2@AAV?$Vector@UStackFrame@JSC@@$0A@@WTF@@@Z 216 216 ?getString@JSCell@JSC@@QBE?AVUString@2@PAVExecState@2@@Z 217 217 ?getString@JSCell@JSC@@QBE_NPAVExecState@2@AAVUString@2@@Z -
trunk/Source/JavaScriptCore/bytecode/CodeBlock.h
r113906 r114309 711 711 } 712 712 713 int codeOriginIndexForReturn(ReturnAddressPtr returnAddress) 714 { 715 ASSERT(hasCodeOrigins()); 716 unsigned offset = getJITCode().offsetOf(returnAddress.value()); 717 CodeOriginAtCallReturnOffset* entry = binarySearch<CodeOriginAtCallReturnOffset, unsigned, getCallReturnOffsetForCodeOrigin>(codeOrigins().begin(), codeOrigins().size(), offset, WTF::KeyMustNotBePresentInArray); 718 return entry - codeOrigins().begin(); 719 } 720 713 721 CodeOrigin codeOrigin(unsigned index) 714 722 { -
trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp
r113930 r114309 793 793 794 794 if (callType == CallTypeHost) { 795 execCallee->setCallee(asObject(callee)); 795 796 globalData->hostCallReturnValue = JSValue::decode(callData.native.function(execCallee)); 796 797 if (globalData->exception) … … 813 814 814 815 if (constructType == ConstructTypeHost) { 816 execCallee->setCallee(asObject(callee)); 815 817 globalData->hostCallReturnValue = JSValue::decode(constructData.native.function(execCallee)); 816 818 if (globalData->exception) -
trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp
r113363 r114309 66 66 #include <stdio.h> 67 67 #include <wtf/Threading.h> 68 #include <wtf/text/StringBuilder.h> 68 69 69 70 #if ENABLE(JIT) … … 953 954 } 954 955 955 void Interpreter::getStackTrace(JSGlobalData* globalData, int line,Vector<StackFrame>& results)956 void Interpreter::getStackTrace(JSGlobalData* globalData, Vector<StackFrame>& results) 956 957 { 957 CallFrame* callFrame = globalData->topCallFrame->removeHostCallFrameFlag() ->trueCallFrameFromVMCode();958 CallFrame* callFrame = globalData->topCallFrame->removeHostCallFrameFlag(); 958 959 if (!callFrame || callFrame == CallFrame::noCaller()) 959 960 return; 960 961 if (line == -1) 962 line = getLineNumberForCallFrame(globalData, callFrame);961 int line = getLineNumberForCallFrame(globalData, callFrame); 962 963 callFrame = callFrame->trueCallFrameFromVMCode(); 963 964 964 965 while (callFrame && callFrame != CallFrame::noCaller()) { … … 976 977 } 977 978 979 void Interpreter::addStackTraceIfNecessary(CallFrame* callFrame, JSObject* error) 980 { 981 JSGlobalData* globalData = &callFrame->globalData(); 982 if (error->hasProperty(callFrame, globalData->propertyNames->stack)) 983 return; 984 985 Vector<StackFrame> stackTrace; 986 getStackTrace(&callFrame->globalData(), stackTrace); 987 988 if (stackTrace.isEmpty()) 989 return; 990 991 JSGlobalObject* globalObject = 0; 992 if (isTerminatedExecutionException(error) || isInterruptedExecutionException(error)) 993 globalObject = globalData->dynamicGlobalObject; 994 else 995 globalObject = error->globalObject(); 996 StringBuilder builder; 997 for (unsigned i = 0; i < stackTrace.size(); i++) { 998 builder.append(String(stackTrace[i].toString(globalObject->globalExec()).impl())); 999 if (i != stackTrace.size() - 1) 1000 builder.append('\n'); 1001 } 1002 1003 error->putDirect(*globalData, globalData->propertyNames->stack, jsString(globalData, UString(builder.toString().impl())), ReadOnly | DontDelete); 1004 } 1005 978 1006 NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSValue& exceptionValue, unsigned bytecodeOffset) 979 1007 { … … 991 1019 if (codeBlock->hasExpressionInfo() && !hasErrorInfo(callFrame, exception)) { 992 1020 ASSERT(codeBlock->hasLineInfo()); 993 994 1021 // FIXME: should only really be adding these properties to VM generated exceptions, 995 1022 // but the inspector currently requires these for all thrown objects. 996 Vector<StackFrame> stackTrace; 997 getStackTrace(&callFrame->globalData(), codeBlock->lineNumberForBytecodeOffset(bytecodeOffset), stackTrace); 998 addErrorInfo(callFrame, exception, codeBlock->lineNumberForBytecodeOffset(bytecodeOffset), codeBlock->ownerExecutable()->source(), stackTrace); 1023 addErrorInfo(callFrame, exception, codeBlock->lineNumberForBytecodeOffset(bytecodeOffset), codeBlock->ownerExecutable()->source()); 999 1024 } 1000 1025 -
trunk/Source/JavaScriptCore/interpreter/Interpreter.h
r108444 r114309 223 223 NEVER_INLINE void debug(CallFrame*, DebugHookID, int firstLine, int lastLine); 224 224 static const UString getTraceLine(CallFrame*, StackFrameCodeType, const UString&, int); 225 JS_EXPORT_PRIVATE static void getStackTrace(JSGlobalData*, int line, Vector<StackFrame>& results); 225 JS_EXPORT_PRIVATE static void getStackTrace(JSGlobalData*, Vector<StackFrame>& results); 226 static void addStackTraceIfNecessary(CallFrame*, JSObject* error); 226 227 227 228 void dumpSampleData(ExecState* exec); -
trunk/Source/JavaScriptCore/jit/JITStubs.cpp
r114255 r114309 3519 3519 STUB_INIT_STACK_FRAME(stackFrame); 3520 3520 JSGlobalData* globalData = stackFrame.globalData; 3521 // It's possible for us to reach this point with incorrect origin metadata 3522 // if a native function throws an exception after being planted in certain 3523 // code paths as the native thunk doesn't can't unwind itself as if it were 3524 // a JS function. So we redetermine the correct data here just to be safe. 3525 if (CodeBlock* codeBlock = stackFrame.callFrame->codeBlock()) { 3526 #if ENABLE(DFG_JIT) 3527 if (codeBlock->hasCodeOrigins()) 3528 stackFrame.callFrame->setBytecodeOffsetForNonDFGCode(codeBlock->codeOriginIndexForReturn(globalData->exceptionLocation)); 3529 else 3530 #endif 3531 if (codeBlock->getJITType() == JITCode::BaselineJIT) 3532 stackFrame.callFrame->setBytecodeOffsetForNonDFGCode(codeBlock->bytecodeOffset(stackFrame.callFrame, globalData->exceptionLocation)); 3533 } 3521 3534 ExceptionHandler handler = jitThrow(globalData, stackFrame.callFrame, globalData->exception, globalData->exceptionLocation); 3522 3535 STUB_SET_RETURN_ADDRESS(handler.catchRoutine); -
trunk/Source/JavaScriptCore/jsc.cpp
r113553 r114309 278 278 String trace = "--> Stack trace:\n"; 279 279 Vector<StackFrame> stackTrace; 280 Interpreter::getStackTrace(&exec->globalData(), -1,stackTrace);280 Interpreter::getStackTrace(&exec->globalData(), stackTrace); 281 281 int i = 0; 282 282 -
trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp
r113930 r114309 1242 1242 1243 1243 if (callType == CallTypeHost) { 1244 execCallee->setCallee(asObject(callee)); 1244 1245 globalData.hostCallReturnValue = JSValue::decode(callData.native.function(execCallee)); 1245 1246 … … 1263 1264 1264 1265 if (constructType == ConstructTypeHost) { 1266 execCallee->setCallee(asObject(callee)); 1265 1267 globalData.hostCallReturnValue = JSValue::decode(constructData.native.function(execCallee)); 1266 1268 -
trunk/Source/JavaScriptCore/parser/Parser.h
r112555 r114309 994 994 *exception = createSyntaxError(lexicalGlobalObject, errMsg); 995 995 else 996 *exception = addErrorInfo( &lexicalGlobalObject->globalData(), createSyntaxError(lexicalGlobalObject, errMsg), errLine, *m_source, Vector<StackFrame>());996 *exception = addErrorInfo(lexicalGlobalObject->globalExec(), createSyntaxError(lexicalGlobalObject, errMsg), errLine, *m_source); 997 997 } 998 998 -
trunk/Source/JavaScriptCore/runtime/Error.cpp
r109034 r114309 121 121 } 122 122 123 JSObject* addErrorInfo( JSGlobalData* globalData, JSObject* error, int line, const SourceCode& source, const Vector<StackFrame>& stackTrace)123 JSObject* addErrorInfo(CallFrame* callFrame, JSObject* error, int line, const SourceCode& source) 124 124 { 125 JSGlobalData* globalData = &callFrame->globalData(); 125 126 const UString& sourceURL = source.provider()->url(); 126 127 … … 129 130 if (!sourceURL.isNull()) 130 131 error->putDirect(*globalData, Identifier(globalData, sourceURLPropertyName), jsString(globalData, sourceURL), ReadOnly | DontDelete); 131 if (!stackTrace.isEmpty()) {132 JSGlobalObject* globalObject = 0;133 if (isTerminatedExecutionException(error) || isInterruptedExecutionException(error))134 globalObject = globalData->dynamicGlobalObject;135 else136 globalObject = error->globalObject();137 StringBuilder builder;138 for (unsigned i = 0; i < stackTrace.size(); i++) {139 builder.append(String(stackTrace[i].toString(globalObject->globalExec()).impl()));140 if (i != stackTrace.size() - 1)141 builder.append('\n');142 }143 132 144 error->putDirect(*globalData, globalData->propertyNames->stack, jsString(globalData, UString(builder.toString().impl())), ReadOnly | DontDelete); 145 } 133 globalData->interpreter->addStackTraceIfNecessary(callFrame, error); 146 134 147 135 return error; 148 136 } 149 137 150 JSObject* addErrorInfo(ExecState* exec, JSObject* error, int line, const SourceCode& source, const Vector<StackFrame>& stackTrace)151 {152 return addErrorInfo(&exec->globalData(), error, line, source, stackTrace);153 }154 138 155 139 bool hasErrorInfo(ExecState* exec, JSObject* error) … … 161 145 JSValue throwError(ExecState* exec, JSValue error) 162 146 { 147 if (error.isObject()) 148 return throwError(exec, asObject(error)); 163 149 exec->globalData().exception = error; 164 150 return error; … … 167 153 JSObject* throwError(ExecState* exec, JSObject* error) 168 154 { 155 Interpreter::addStackTraceIfNecessary(exec, error); 169 156 exec->globalData().exception = error; 170 157 return error; -
trunk/Source/JavaScriptCore/runtime/Error.h
r108112 r114309 58 58 // Methods to add 59 59 bool hasErrorInfo(ExecState*, JSObject* error); 60 JSObject* addErrorInfo(JSGlobalData*, JSObject* error, int line, const SourceCode&, const Vector<StackFrame>&);61 60 // ExecState wrappers. 62 JSObject* addErrorInfo(ExecState*, JSObject* error, int line, const SourceCode& , const Vector<StackFrame>&);61 JSObject* addErrorInfo(ExecState*, JSObject* error, int line, const SourceCode&); 63 62 64 63 // Methods to throw Errors.
Note:
See TracChangeset
for help on using the changeset viewer.