Changeset 172614 in webkit for trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp
- Timestamp:
- Aug 14, 2014, 4:59:44 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp
r172176 r172614 539 539 LLINT_THROW(createSyntaxError(exec, "Invalid flag supplied to RegExp constructor.")); 540 540 LLINT_RETURN(RegExpObject::create(vm, exec->lexicalGlobalObject()->regExpStructure(), regExp)); 541 }542 543 LLINT_SLOW_PATH_DECL(slow_path_profile_types_with_high_fidelity)544 {545 LLINT_BEGIN();546 TypeLocation* location = pc[2].u.location;547 JSValue val = LLINT_OP_C(1).jsValue();548 vm.highFidelityLog()->recordTypeInformationForLocation(val, location);549 LLINT_END_IMPL();550 541 } 551 542 … … 1376 1367 } 1377 1368 1378 static JSValue getFromScopeCommon(ExecState* exec, Instruction* pc, VM& vm) 1379 { 1369 LLINT_SLOW_PATH_DECL(slow_path_get_from_scope) 1370 { 1371 LLINT_BEGIN(); 1372 1380 1373 const Identifier& ident = exec->codeBlock()->identifier(pc[3].u.operand); 1381 1374 JSObject* scope = jsCast<JSObject*>(LLINT_OP(2).jsValue()); … … 1385 1378 if (!scope->getPropertySlot(exec, ident, slot)) { 1386 1379 if (modeAndType.mode() == ThrowIfNotFound) 1387 return exec->vm().throwException(exec, createUndefinedVariableError(exec, ident));1388 return jsUndefined();1380 LLINT_RETURN(exec->vm().throwException(exec, createUndefinedVariableError(exec, ident))); 1381 LLINT_RETURN(jsUndefined()); 1389 1382 } 1390 1383 … … 1403 1396 } 1404 1397 1405 return slot.getValue(exec, ident); 1406 } 1407 1408 LLINT_SLOW_PATH_DECL(slow_path_get_from_scope) 1409 { 1410 LLINT_BEGIN(); 1411 JSValue value = getFromScopeCommon(exec, pc, vm); 1412 LLINT_RETURN(value); 1413 } 1414 1415 LLINT_SLOW_PATH_DECL(slow_path_get_from_scope_with_profile) 1416 { 1417 LLINT_BEGIN(); 1418 JSValue value = getFromScopeCommon(exec, pc, vm); 1419 TypeLocation* location = pc[8].u.location; 1420 vm.highFidelityLog()->recordTypeInformationForLocation(value, location); 1421 LLINT_RETURN(value); 1422 } 1423 1424 static JSObject* putToScopeCommon(ExecState* exec, Instruction* pc) 1425 { 1398 LLINT_RETURN(slot.getValue(exec, ident)); 1399 } 1400 1401 LLINT_SLOW_PATH_DECL(slow_path_put_to_scope) 1402 { 1403 LLINT_BEGIN(); 1404 1426 1405 CodeBlock* codeBlock = exec->codeBlock(); 1427 1406 const Identifier& ident = codeBlock->identifier(pc[2].u.operand); … … 1431 1410 1432 1411 if (modeAndType.mode() == ThrowIfNotFound && !scope->hasProperty(exec, ident)) 1433 return createUndefinedVariableError(exec, ident);1412 LLINT_THROW(createUndefinedVariableError(exec, ident)); 1434 1413 1435 1414 PutPropertySlot slot(scope, codeBlock->isStrictMode()); … … 1438 1417 CommonSlowPaths::tryCachePutToScopeGlobal(exec, codeBlock, pc, scope, modeAndType, slot); 1439 1418 1440 return nullptr;1441 }1442 1443 LLINT_SLOW_PATH_DECL(slow_path_put_to_scope)1444 {1445 LLINT_BEGIN();1446 JSObject* error = putToScopeCommon(exec, pc);1447 if (error)1448 LLINT_THROW(error);1449 LLINT_END();1450 }1451 1452 LLINT_SLOW_PATH_DECL(slow_path_put_to_scope_with_profile)1453 {1454 // The format of this instruction is the same as put_to_scope with a TypeLocation appended: put_to_scope_with_profile scope, id, value, ResolveModeAndType, Structure, Operand, TypeLocation*1455 LLINT_BEGIN();1456 JSObject* error = putToScopeCommon(exec, pc);1457 if (error)1458 LLINT_THROW(error);1459 TypeLocation* location = pc[7].u.location;1460 JSValue val = LLINT_OP_C(3).jsValue();1461 vm.highFidelityLog()->recordTypeInformationForLocation(val, location);1462 1419 LLINT_END(); 1463 1420 }
Note:
See TracChangeset
for help on using the changeset viewer.