Changeset 156029 in webkit for trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h
- Timestamp:
- Sep 18, 2013, 12:25:52 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h
r156019 r156029 311 311 } 312 312 313 case Int52ToDouble: {314 JSValue child = forNode(node->child1()).value();315 if (child && child.isNumber()) {316 setConstant(node, child);317 break;318 }319 forNode(node).setType(SpecDouble);320 break;321 }322 323 case Int52ToValue: {324 JSValue child = forNode(node->child1()).value();325 if (child && child.isNumber()) {326 setConstant(node, child);327 break;328 }329 SpeculatedType type = forNode(node->child1()).m_type;330 if (type & SpecInt52)331 type = (type | SpecInt32 | SpecInt52AsDouble) & ~SpecInt52;332 forNode(node).setType(type);333 break;334 }335 336 313 case ValueAdd: 337 314 case ArithAdd: { … … 348 325 node->setCanExit(true); 349 326 break; 350 case MachineIntUse:351 forNode(node).setType(SpecInt52);352 if (!forNode(node->child1()).isType(SpecInt32)353 || !forNode(node->child2()).isType(SpecInt32))354 node->setCanExit(true);355 break;356 327 case NumberUse: 357 if (is FullRealNumberSpeculation(forNode(node->child1()).m_type)358 && is FullRealNumberSpeculation(forNode(node->child2()).m_type))328 if (isRealNumberSpeculation(forNode(node->child1()).m_type) 329 && isRealNumberSpeculation(forNode(node->child2()).m_type)) 359 330 forNode(node).setType(SpecDoubleReal); 360 331 else … … 364 335 RELEASE_ASSERT(node->op() == ValueAdd); 365 336 clobberWorld(node->codeOrigin, clobberLimit); 366 forNode(node).setType(SpecString | Spec BytecodeNumber);337 forNode(node).setType(SpecString | SpecInt32 | SpecNumber); 367 338 break; 368 339 } … … 388 359 node->setCanExit(true); 389 360 break; 390 case MachineIntUse:391 forNode(node).setType(SpecInt52);392 if (!forNode(node->child1()).isType(SpecInt32)393 || !forNode(node->child2()).isType(SpecInt32))394 node->setCanExit(true);395 break;396 361 case NumberUse: 397 362 forNode(node).setType(SpecDouble); … … 414 379 forNode(node).setType(SpecInt32); 415 380 if (!bytecodeCanTruncateInteger(node->arithNodeFlags())) 416 node->setCanExit(true);417 break;418 case MachineIntUse:419 forNode(node).setType(SpecInt52);420 if (m_state.forNode(node->child1()).couldBeType(SpecInt52))421 node->setCanExit(true);422 if (!bytecodeCanIgnoreNegativeZero(node->arithNodeFlags()))423 381 node->setCanExit(true); 424 382 break; … … 447 405 node->setCanExit(true); 448 406 break; 449 case MachineIntUse:450 forNode(node).setType(SpecInt52);451 node->setCanExit(true);452 break;453 407 case NumberUse: 454 if (is FullRealNumberSpeculation(forNode(node->child1()).m_type)455 || is FullRealNumberSpeculation(forNode(node->child2()).m_type))408 if (isRealNumberSpeculation(forNode(node->child1()).m_type) 409 || isRealNumberSpeculation(forNode(node->child2()).m_type)) 456 410 forNode(node).setType(SpecDoubleReal); 457 411 else … … 633 587 } 634 588 635 if (is FullNumberSpeculation(abstractChild.m_type)) {589 if (isNumberSpeculation(abstractChild.m_type)) { 636 590 setConstant(node, vm->smallStrings.numberString()); 637 591 break; … … 858 812 if (node->shouldSpeculateInt32()) 859 813 forNode(node).setType(SpecInt32); 860 else if (enableInt52() && node->shouldSpeculateMachineInt())861 forNode(node).setType(SpecInt52);862 814 else 863 815 forNode(node).setType(SpecDouble); … … 912 864 node->setCanExit(true); 913 865 clobberWorld(node->codeOrigin, clobberLimit); 914 forNode(node).setType(Spec BytecodeNumber);866 forNode(node).setType(SpecNumber); 915 867 break; 916 868 … … 983 935 // 984 936 // destination = source; 985 // if (destination.m_type & !(Spec FullNumber | SpecString | SpecBoolean)) {986 // destination.filter(Spec FullNumber | SpecString | SpecBoolean);937 // if (destination.m_type & !(SpecNumber | SpecString | SpecBoolean)) { 938 // destination.filter(SpecNumber | SpecString | SpecBoolean); 987 939 // AbstractValue string; 988 940 // string.set(vm->stringStructure); … … 1004 956 1005 957 SpeculatedType type = source.m_type; 1006 if (type & ~(Spec FullNumber | SpecString | SpecBoolean))958 if (type & ~(SpecNumber | SpecString | SpecBoolean)) 1007 959 type = (SpecHeapTop & ~SpecCell) | SpecString; 1008 960
Note:
See TracChangeset
for help on using the changeset viewer.