Changeset 247194 in webkit
- Timestamp:
- Jul 6, 2019 6:34:51 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JSTests/ChangeLog
r247183 r247194 1 2019-07-06 Michael Saboff <msaboff@apple.com> 2 3 switch(String) needs to check for exceptions when resolving the string 4 https://bugs.webkit.org/show_bug.cgi?id=199541 5 6 Reviewed by Mark Lam. 7 8 New tests. 9 10 * stress/switch-string-oom.js: Added. 11 (test): 12 (testLowerTiers): 13 (testFTL): 14 1 15 2019-07-05 Mark Lam <mark.lam@apple.com> 2 16 -
trunk/Source/JavaScriptCore/ChangeLog
r247183 r247194 1 2019-07-06 Michael Saboff <msaboff@apple.com> 2 3 switch(String) needs to check for exceptions when resolving the string 4 https://bugs.webkit.org/show_bug.cgi?id=199541 5 6 Reviewed by Mark Lam. 7 8 Added exception checks for resolved Strings in switch processing for all tiers. 9 10 * dfg/DFGOperations.cpp: 11 * jit/JITOperations.cpp: 12 * llint/LLIntSlowPaths.cpp: 13 (JSC::LLInt::LLINT_SLOW_PATH_DECL): 14 1 15 2019-07-05 Mark Lam <mark.lam@apple.com> 2 16 -
trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp
r246490 r247194 2447 2447 VM& vm = exec->vm(); 2448 2448 NativeCallFrameTracer tracer(&vm, exec); 2449 2450 2449 CodeBlock* codeBlock = exec->codeBlock(); 2451 2450 SimpleJumpTable& table = codeBlock->switchJumpTable(tableIndex); … … 2463 2462 VM& vm = exec->vm(); 2464 2463 NativeCallFrameTracer tracer(&vm, exec); 2465 2466 return exec->codeBlock()->stringSwitchJumpTable(tableIndex).ctiForValue(string->value(exec).impl()).executableAddress<char*>(); 2464 auto throwScope = DECLARE_THROW_SCOPE(vm); 2465 2466 StringImpl* strImpl = string->value(exec).impl(); 2467 2468 RETURN_IF_EXCEPTION(throwScope, nullptr); 2469 2470 return exec->codeBlock()->stringSwitchJumpTable(tableIndex).ctiForValue(strImpl).executableAddress<char*>(); 2467 2471 } 2468 2472 … … 2471 2475 VM& vm = exec->vm(); 2472 2476 NativeCallFrameTracer tracer(&vm, exec); 2473 2474 return exec->codeBlock()->stringSwitchJumpTable(tableIndex).offsetForValue(string->value(exec).impl(), std::numeric_limits<int32_t>::min()); 2477 auto throwScope = DECLARE_THROW_SCOPE(vm); 2478 2479 StringImpl* strImpl = string->value(exec).impl(); 2480 2481 RETURN_IF_EXCEPTION(throwScope, 0); 2482 2483 return exec->codeBlock()->stringSwitchJumpTable(tableIndex).offsetForValue(strImpl, std::numeric_limits<int32_t>::min()); 2475 2484 } 2476 2485 -
trunk/Source/JavaScriptCore/jit/JITOperations.cpp
r246490 r247194 2313 2313 JSValue key = JSValue::decode(encodedKey); 2314 2314 CodeBlock* codeBlock = exec->codeBlock(); 2315 auto throwScope = DECLARE_THROW_SCOPE(vm); 2315 2316 2316 2317 void* result; … … 2319 2320 if (key.isString()) { 2320 2321 StringImpl* value = asString(key)->value(exec).impl(); 2322 2323 RETURN_IF_EXCEPTION(throwScope, nullptr); 2324 2321 2325 result = jumpTable.ctiForValue(value).executableAddress(); 2322 2326 } else -
trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp
r246490 r247194 1318 1318 JUMP_TO(defaultOffset); 1319 1319 else { 1320 StringImpl* scrutineeStringImpl = asString(scrutinee)->value(exec).impl(); 1321 1322 LLINT_CHECK_EXCEPTION(); 1323 1320 1324 CodeBlock* codeBlock = exec->codeBlock(); 1321 JUMP_TO(codeBlock->stringSwitchJumpTable(bytecode.m_tableIndex).offsetForValue(asString(scrutinee)->value(exec).impl(), defaultOffset)); 1325 1326 JUMP_TO(codeBlock->stringSwitchJumpTable(bytecode.m_tableIndex).offsetForValue(scrutineeStringImpl, defaultOffset)); 1322 1327 } 1323 1328 LLINT_END();
Note: See TracChangeset
for help on using the changeset viewer.