Changeset 202792 in webkit
- Timestamp:
- Jul 3, 2016 12:34:55 PM (8 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r202790 r202792 1 2016-07-03 Filip Pizlo <fpizlo@apple.com> 2 3 FTL should refer to B3 types directly 4 https://bugs.webkit.org/show_bug.cgi?id=159389 5 6 Reviewed by Saam Barati. 7 8 When we used LLVM, types were objects that were allocated by the LLVMContext. We had to 9 remember pointers to them or else call through the C API every time we wanted the type. We 10 stored the type pointers inside FTL::CommonValues. 11 12 But in B3, types are just members of an enum. We don't have to remember pointers to them. 13 14 This change replaces all prior uses of things like "m_out.int32" with just "Int32", and 15 likewise for m_out.boolean, m_out.int64, m_out.intPtr, m_out.floatType, m_out.doubleType, 16 and m_out.voidType. 17 18 We still use FTL::CommonValues for common constants that we have pre-hoisted. Hopefully we 19 will come up with a better story for those eventually, since that's still kinda ugly. 20 21 * ftl/FTLCommonValues.cpp: 22 (JSC::FTL::CommonValues::CommonValues): 23 * ftl/FTLCommonValues.h: 24 * ftl/FTLLowerDFGToB3.cpp: 25 (JSC::FTL::DFG::LowerDFGToB3::createPhiVariables): 26 (JSC::FTL::DFG::LowerDFGToB3::compileDoubleRep): 27 (JSC::FTL::DFG::LowerDFGToB3::compileBooleanToNumber): 28 (JSC::FTL::DFG::LowerDFGToB3::compileCallObjectConstructor): 29 (JSC::FTL::DFG::LowerDFGToB3::compileToThis): 30 (JSC::FTL::DFG::LowerDFGToB3::compileValueAdd): 31 (JSC::FTL::DFG::LowerDFGToB3::compileStrCat): 32 (JSC::FTL::DFG::LowerDFGToB3::compileArithMinOrMax): 33 (JSC::FTL::DFG::LowerDFGToB3::compileArithPow): 34 (JSC::FTL::DFG::LowerDFGToB3::compileArithRound): 35 (JSC::FTL::DFG::LowerDFGToB3::compileArrayifyToStructure): 36 (JSC::FTL::DFG::LowerDFGToB3::compileGetById): 37 (JSC::FTL::DFG::LowerDFGToB3::compileGetByIdWithThis): 38 (JSC::FTL::DFG::LowerDFGToB3::compileGetByValWithThis): 39 (JSC::FTL::DFG::LowerDFGToB3::compilePutByIdWithThis): 40 (JSC::FTL::DFG::LowerDFGToB3::compilePutByValWithThis): 41 (JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage): 42 (JSC::FTL::DFG::LowerDFGToB3::compileGetTypedArrayByteOffset): 43 (JSC::FTL::DFG::LowerDFGToB3::compileGetArrayLength): 44 (JSC::FTL::DFG::LowerDFGToB3::compileGetByVal): 45 (JSC::FTL::DFG::LowerDFGToB3::compileGetMyArgumentByVal): 46 (JSC::FTL::DFG::LowerDFGToB3::compilePutByVal): 47 (JSC::FTL::DFG::LowerDFGToB3::compilePutAccessorById): 48 (JSC::FTL::DFG::LowerDFGToB3::compilePutGetterSetterById): 49 (JSC::FTL::DFG::LowerDFGToB3::compilePutAccessorByVal): 50 (JSC::FTL::DFG::LowerDFGToB3::compileArrayPush): 51 (JSC::FTL::DFG::LowerDFGToB3::compileArrayPop): 52 (JSC::FTL::DFG::LowerDFGToB3::compileCreateActivation): 53 (JSC::FTL::DFG::LowerDFGToB3::compileNewFunction): 54 (JSC::FTL::DFG::LowerDFGToB3::compileCreateDirectArguments): 55 (JSC::FTL::DFG::LowerDFGToB3::compileCreateScopedArguments): 56 (JSC::FTL::DFG::LowerDFGToB3::compileCreateClonedArguments): 57 (JSC::FTL::DFG::LowerDFGToB3::compileCopyRest): 58 (JSC::FTL::DFG::LowerDFGToB3::compileGetRestLength): 59 (JSC::FTL::DFG::LowerDFGToB3::compileNewObject): 60 (JSC::FTL::DFG::LowerDFGToB3::compileNewArray): 61 (JSC::FTL::DFG::LowerDFGToB3::compileNewArrayBuffer): 62 (JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSize): 63 (JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray): 64 (JSC::FTL::DFG::LowerDFGToB3::compileToNumber): 65 (JSC::FTL::DFG::LowerDFGToB3::compileToStringOrCallStringConstructor): 66 (JSC::FTL::DFG::LowerDFGToB3::compileToPrimitive): 67 (JSC::FTL::DFG::LowerDFGToB3::compileMakeRope): 68 (JSC::FTL::DFG::LowerDFGToB3::compileStringCharAt): 69 (JSC::FTL::DFG::LowerDFGToB3::compileStringCharCodeAt): 70 (JSC::FTL::DFG::LowerDFGToB3::compileStringFromCharCode): 71 (JSC::FTL::DFG::LowerDFGToB3::compileGetByOffset): 72 (JSC::FTL::DFG::LowerDFGToB3::compileMultiGetByOffset): 73 (JSC::FTL::DFG::LowerDFGToB3::compilePutByOffset): 74 (JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq): 75 (JSC::FTL::DFG::LowerDFGToB3::compileLoadVarargs): 76 (JSC::FTL::DFG::LowerDFGToB3::compileForwardVarargs): 77 (JSC::FTL::DFG::LowerDFGToB3::compileSwitch): 78 (JSC::FTL::DFG::LowerDFGToB3::compileIsString): 79 (JSC::FTL::DFG::LowerDFGToB3::compileIsJSArray): 80 (JSC::FTL::DFG::LowerDFGToB3::compileIsObject): 81 (JSC::FTL::DFG::LowerDFGToB3::compileIsObjectOrNull): 82 (JSC::FTL::DFG::LowerDFGToB3::compileIsFunction): 83 (JSC::FTL::DFG::LowerDFGToB3::compileIsRegExpObject): 84 (JSC::FTL::DFG::LowerDFGToB3::compileIsTypedArrayView): 85 (JSC::FTL::DFG::LowerDFGToB3::compileTypeOf): 86 (JSC::FTL::DFG::LowerDFGToB3::compileIn): 87 (JSC::FTL::DFG::LowerDFGToB3::compileOverridesHasInstance): 88 (JSC::FTL::DFG::LowerDFGToB3::compileCheckTypeInfoFlags): 89 (JSC::FTL::DFG::LowerDFGToB3::compileInstanceOf): 90 (JSC::FTL::DFG::LowerDFGToB3::compileInstanceOfCustom): 91 (JSC::FTL::DFG::LowerDFGToB3::compileCountExecution): 92 (JSC::FTL::DFG::LowerDFGToB3::compileHasIndexedProperty): 93 (JSC::FTL::DFG::LowerDFGToB3::compileHasGenericProperty): 94 (JSC::FTL::DFG::LowerDFGToB3::compileHasStructureProperty): 95 (JSC::FTL::DFG::LowerDFGToB3::compileGetDirectPname): 96 (JSC::FTL::DFG::LowerDFGToB3::compileGetEnumerableLength): 97 (JSC::FTL::DFG::LowerDFGToB3::compileGetPropertyEnumerator): 98 (JSC::FTL::DFG::LowerDFGToB3::compileGetEnumeratorStructurePname): 99 (JSC::FTL::DFG::LowerDFGToB3::compileGetEnumeratorGenericPname): 100 (JSC::FTL::DFG::LowerDFGToB3::compileToIndexString): 101 (JSC::FTL::DFG::LowerDFGToB3::compileCheckStructureImmediate): 102 (JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject): 103 (JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation): 104 (JSC::FTL::DFG::LowerDFGToB3::compileSetFunctionName): 105 (JSC::FTL::DFG::LowerDFGToB3::numberOrNotCellToInt32): 106 (JSC::FTL::DFG::LowerDFGToB3::checkInferredType): 107 (JSC::FTL::DFG::LowerDFGToB3::initializeArrayElements): 108 (JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorage): 109 (JSC::FTL::DFG::LowerDFGToB3::reallocatePropertyStorage): 110 (JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorageWithSizeImpl): 111 (JSC::FTL::DFG::LowerDFGToB3::getById): 112 (JSC::FTL::DFG::LowerDFGToB3::compare): 113 (JSC::FTL::DFG::LowerDFGToB3::compileResolveScope): 114 (JSC::FTL::DFG::LowerDFGToB3::compileGetDynamicVar): 115 (JSC::FTL::DFG::LowerDFGToB3::compareEqObjectOrOtherToObject): 116 (JSC::FTL::DFG::LowerDFGToB3::speculateTruthyObject): 117 (JSC::FTL::DFG::LowerDFGToB3::nonSpeculativeCompare): 118 (JSC::FTL::DFG::LowerDFGToB3::stringsEqual): 119 (JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedObject): 120 (JSC::FTL::DFG::LowerDFGToB3::allocateObject): 121 (JSC::FTL::DFG::LowerDFGToB3::allocateJSArray): 122 (JSC::FTL::DFG::LowerDFGToB3::ensureShadowChickenPacket): 123 (JSC::FTL::DFG::LowerDFGToB3::boolify): 124 (JSC::FTL::DFG::LowerDFGToB3::equalNullOrUndefined): 125 (JSC::FTL::DFG::LowerDFGToB3::contiguousPutByValOutOfBounds): 126 (JSC::FTL::DFG::LowerDFGToB3::buildSwitch): 127 (JSC::FTL::DFG::LowerDFGToB3::switchStringSlow): 128 (JSC::FTL::DFG::LowerDFGToB3::doubleToInt32): 129 (JSC::FTL::DFG::LowerDFGToB3::sensibleDoubleToInt32): 130 (JSC::FTL::DFG::LowerDFGToB3::strictInt52ToJSValue): 131 (JSC::FTL::DFG::LowerDFGToB3::strictInt52ToInt52): 132 (JSC::FTL::DFG::LowerDFGToB3::unboxInt32): 133 (JSC::FTL::DFG::LowerDFGToB3::boxInt32): 134 (JSC::FTL::DFG::LowerDFGToB3::isCellOrMisc): 135 (JSC::FTL::DFG::LowerDFGToB3::unboxDouble): 136 (JSC::FTL::DFG::LowerDFGToB3::boxDouble): 137 (JSC::FTL::DFG::LowerDFGToB3::jsValueToStrictInt52): 138 (JSC::FTL::DFG::LowerDFGToB3::doubleToStrictInt52): 139 (JSC::FTL::DFG::LowerDFGToB3::convertDoubleToInt32): 140 (JSC::FTL::DFG::LowerDFGToB3::callCheck): 141 (JSC::FTL::DFG::LowerDFGToB3::crash): 142 * ftl/FTLOutput.cpp: 143 (JSC::FTL::Output::bitCast): 144 1 145 2016-07-02 Filip Pizlo <fpizlo@apple.com> 2 146 -
trunk/Source/JavaScriptCore/ftl/FTLCommonValues.cpp
r196729 r202792 43 43 44 44 CommonValues::CommonValues() 45 : voidType(B3::Void)46 , boolean(B3::Int32)47 , int32(B3::Int32)48 , int64(B3::Int64)49 , intPtr(B3::pointerType())50 , floatType(B3::Float)51 , doubleType(B3::Double)52 45 { 53 46 } -
trunk/Source/JavaScriptCore/ftl/FTLCommonValues.h
r196729 r202792 47 47 void initializeConstants(B3::Procedure&, B3::BasicBlock*); 48 48 49 const LType voidType;50 const LType boolean;51 const LType int32;52 const LType int64;53 const LType intPtr;54 const LType floatType;55 const LType doubleType;56 49 LValue booleanTrue { nullptr }; 57 50 LValue booleanFalse { nullptr }; -
trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp
r202680 r202792 329 329 switch (node->flags() & NodeResultMask) { 330 330 case NodeResultDouble: 331 type = m_out.doubleType;331 type = Double; 332 332 break; 333 333 case NodeResultInt32: 334 type = m_out.int32;334 type = Int32; 335 335 break; 336 336 case NodeResultInt52: 337 type = m_out.int64;337 type = Int64; 338 338 break; 339 339 case NodeResultBoolean: 340 type = m_out.boolean;340 type = Int32; 341 341 break; 342 342 case NodeResultJS: 343 type = m_out.int64;343 type = Int64; 344 344 break; 345 345 default: … … 1158 1158 m_out.appendTo(continuation, lastNext); 1159 1159 1160 setDouble(m_out.phi( m_out.doubleType, fastResult, slowResult));1160 setDouble(m_out.phi(Double, fastResult, slowResult)); 1161 1161 return; 1162 1162 } … … 1232 1232 1233 1233 m_out.appendTo(continuation, lastNext); 1234 setDouble(m_out.phi( m_out.doubleType, intToDouble, unboxedDouble, convertedUndefined, convertedNull, convertedTrue, convertedFalse));1234 setDouble(m_out.phi(Double, intToDouble, unboxedDouble, convertedUndefined, convertedNull, convertedTrue, convertedFalse)); 1235 1235 return; 1236 1236 } … … 1241 1241 m_out.appendTo(continuation, lastNext); 1242 1242 1243 setDouble(m_out.phi( m_out.doubleType, intToDouble, unboxedDouble));1243 setDouble(m_out.phi(Double, intToDouble, unboxedDouble)); 1244 1244 return; 1245 1245 } … … 1354 1354 switch (m_node->child1().useKind()) { 1355 1355 case BooleanUse: { 1356 setInt32(m_out.zeroExt(lowBoolean(m_node->child1()), m_out.int32));1356 setInt32(m_out.zeroExt(lowBoolean(m_node->child1()), Int32)); 1357 1357 return; 1358 1358 } … … 1376 1376 LBasicBlock lastNext = m_out.appendTo(booleanCase, continuation); 1377 1377 ValueFromBlock booleanResult = m_out.anchor(m_out.bitOr( 1378 m_out.zeroExt(unboxBoolean(value), m_out.int64), m_tagTypeNumber));1378 m_out.zeroExt(unboxBoolean(value), Int64), m_tagTypeNumber)); 1379 1379 m_out.jump(continuation); 1380 1380 1381 1381 m_out.appendTo(continuation, lastNext); 1382 setJSValue(m_out.phi( m_out.int64, booleanResult, notBooleanResult));1382 setJSValue(m_out.phi(Int64, booleanResult, notBooleanResult)); 1383 1383 return; 1384 1384 } … … 1487 1487 1488 1488 m_out.appendTo(slowCase, continuation); 1489 ValueFromBlock slowResult = m_out.anchor(vmCall( m_out.int64, m_out.operation(operationObjectConstructor), m_callFrame, m_out.constIntPtr(globalObject), value));1489 ValueFromBlock slowResult = m_out.anchor(vmCall(Int64, m_out.operation(operationObjectConstructor), m_callFrame, m_out.constIntPtr(globalObject), value)); 1490 1490 m_out.jump(continuation); 1491 1491 1492 1492 m_out.appendTo(continuation, lastNext); 1493 setJSValue(m_out.phi( m_out.int64, fastResult, slowResult));1493 setJSValue(m_out.phi(Int64, fastResult, slowResult)); 1494 1494 } 1495 1495 … … 1520 1520 function = operationToThis; 1521 1521 ValueFromBlock slowResult = m_out.anchor( 1522 vmCall( m_out.int64, m_out.operation(function), m_callFrame, value));1522 vmCall(Int64, m_out.operation(function), m_callFrame, value)); 1523 1523 m_out.jump(continuation); 1524 1524 1525 1525 m_out.appendTo(continuation, lastNext); 1526 setJSValue(m_out.phi( m_out.int64, fastResult, slowResult));1526 setJSValue(m_out.phi(Int64, fastResult, slowResult)); 1527 1527 } 1528 1528 … … 1537 1537 if (m_node->child3()) { 1538 1538 result = vmCall( 1539 m_out.int64, m_out.operation(operationStrCat3), m_callFrame,1539 Int64, m_out.operation(operationStrCat3), m_callFrame, 1540 1540 lowJSValue(m_node->child1(), ManualOperandSpeculation), 1541 1541 lowJSValue(m_node->child2(), ManualOperandSpeculation), … … 1543 1543 } else { 1544 1544 result = vmCall( 1545 m_out.int64, m_out.operation(operationStrCat2), m_callFrame,1545 Int64, m_out.operation(operationStrCat2), m_callFrame, 1546 1546 lowJSValue(m_node->child1(), ManualOperandSpeculation), 1547 1547 lowJSValue(m_node->child2(), ManualOperandSpeculation)); … … 1869 1869 1870 1870 m_out.appendTo(continuation, lastNext); 1871 setDouble(m_out.phi( m_out.doubleType, results));1871 setDouble(m_out.phi(Double, results)); 1872 1872 break; 1873 1873 } … … 2043 2043 2044 2044 m_out.appendTo(continuation, lastNext); 2045 setDouble(m_out.phi( m_out.doubleType, powDoubleIntResult, zeroResultExponentIsOneHalf, sqrtResult, sqrtInfinityResult, oneOverSqrtZeroResult, oneOverSqrtResult, oneOverSqrtInfinityResult, powResult, pureNan));2045 setDouble(m_out.phi(Double, powDoubleIntResult, zeroResultExponentIsOneHalf, sqrtResult, sqrtInfinityResult, oneOverSqrtZeroResult, oneOverSqrtResult, oneOverSqrtInfinityResult, powResult, pureNan)); 2046 2046 } 2047 2047 } … … 2119 2119 m_out.appendTo(continuation, lastNext); 2120 2120 2121 result = m_out.phi( m_out.doubleType, integerValueResult, integerValueRoundedDownResult);2121 result = m_out.phi(Double, integerValueResult, integerValueRoundedDownResult); 2122 2122 } 2123 2123 … … 2420 2420 switch (m_node->arrayMode().type()) { 2421 2421 case Array::Int32: 2422 vmCall( m_out.voidType, m_out.operation(operationEnsureInt32), m_callFrame, cell);2422 vmCall(Void, m_out.operation(operationEnsureInt32), m_callFrame, cell); 2423 2423 break; 2424 2424 case Array::Double: 2425 vmCall( m_out.voidType, m_out.operation(operationEnsureDouble), m_callFrame, cell);2425 vmCall(Void, m_out.operation(operationEnsureDouble), m_callFrame, cell); 2426 2426 break; 2427 2427 case Array::Contiguous: 2428 vmCall( m_out.voidType, m_out.operation(operationEnsureContiguous), m_callFrame, cell);2428 vmCall(Void, m_out.operation(operationEnsureContiguous), m_callFrame, cell); 2429 2429 break; 2430 2430 case Array::ArrayStorage: 2431 2431 case Array::SlowPutArrayStorage: 2432 vmCall( m_out.voidType, m_out.operation(operationEnsureArrayStorage), m_callFrame, cell);2432 vmCall(Void, m_out.operation(operationEnsureArrayStorage), m_callFrame, cell); 2433 2433 break; 2434 2434 default: … … 2496 2496 m_out.appendTo(notCellCase, continuation); 2497 2497 ValueFromBlock notCellResult = m_out.anchor(vmCall( 2498 m_out.int64, m_out.operation(getByIdFunction),2498 Int64, m_out.operation(getByIdFunction), 2499 2499 m_callFrame, value, 2500 2500 m_out.constIntPtr(m_graph.identifiers()[m_node->identifierNumber()]))); … … 2502 2502 2503 2503 m_out.appendTo(continuation, lastNext); 2504 setJSValue(m_out.phi( m_out.int64, cellResult, notCellResult));2504 setJSValue(m_out.phi(Int64, cellResult, notCellResult)); 2505 2505 return; 2506 2506 } … … 2516 2516 LValue base = lowJSValue(m_node->child1()); 2517 2517 LValue thisValue = lowJSValue(m_node->child2()); 2518 LValue result = vmCall( m_out.int64, m_out.operation(operationGetByIdWithThis), m_callFrame, base, thisValue, m_out.constIntPtr(m_graph.identifiers()[m_node->identifierNumber()]));2518 LValue result = vmCall(Int64, m_out.operation(operationGetByIdWithThis), m_callFrame, base, thisValue, m_out.constIntPtr(m_graph.identifiers()[m_node->identifierNumber()])); 2519 2519 setJSValue(result); 2520 2520 } … … 2526 2526 LValue subscript = lowJSValue(m_node->child3()); 2527 2527 2528 LValue result = vmCall( m_out.int64, m_out.operation(operationGetByValWithThis), m_callFrame, base, thisValue, subscript);2528 LValue result = vmCall(Int64, m_out.operation(operationGetByValWithThis), m_callFrame, base, thisValue, subscript); 2529 2529 setJSValue(result); 2530 2530 } … … 2536 2536 LValue value = lowJSValue(m_node->child3()); 2537 2537 2538 vmCall( m_out.voidType, m_out.operation(m_graph.isStrictModeFor(m_node->origin.semantic) ? operationPutByIdWithThisStrict : operationPutByIdWithThis),2538 vmCall(Void, m_out.operation(m_graph.isStrictModeFor(m_node->origin.semantic) ? operationPutByIdWithThisStrict : operationPutByIdWithThis), 2539 2539 m_callFrame, base, thisValue, value, m_out.constIntPtr(m_graph.identifiers()[m_node->identifierNumber()])); 2540 2540 } … … 2547 2547 LValue value = lowJSValue(m_graph.varArgChild(m_node, 3)); 2548 2548 2549 vmCall( m_out.voidType, m_out.operation(m_graph.isStrictModeFor(m_node->origin.semantic) ? operationPutByValWithThisStrict : operationPutByValWithThis),2549 vmCall(Void, m_out.operation(m_graph.isStrictModeFor(m_node->origin.semantic) ? operationPutByValWithThisStrict : operationPutByValWithThis), 2550 2550 m_callFrame, base, thisValue, property, value); 2551 2551 } … … 2650 2650 2651 2651 ValueFromBlock slowResult = m_out.anchor( 2652 vmCall( m_out.intPtr, m_out.operation(operationResolveRope), m_callFrame, cell));2652 vmCall(pointerType(), m_out.operation(operationResolveRope), m_callFrame, cell)); 2653 2653 2654 2654 m_out.jump(continuation); … … 2656 2656 m_out.appendTo(continuation, lastNext); 2657 2657 2658 setStorage(m_out.loadPtr(m_out.phi( m_out.intPtr, fastResult, slowResult), m_heaps.StringImpl_data));2658 setStorage(m_out.loadPtr(m_out.phi(pointerType(), fastResult, slowResult), m_heaps.StringImpl_data)); 2659 2659 return; 2660 2660 } … … 2707 2707 m_out.appendTo(continuation, lastNext); 2708 2708 2709 setInt32(m_out.castToInt32(m_out.phi( m_out.intPtr, simpleOut, wastefulOut)));2709 setInt32(m_out.castToInt32(m_out.phi(pointerType(), simpleOut, wastefulOut))); 2710 2710 } 2711 2711 … … 2808 2808 m_out.appendTo(slowCase, continuation); 2809 2809 ValueFromBlock slowResult = m_out.anchor( 2810 vmCall( m_out.int64, m_out.operation(operationGetByValArrayInt), m_callFrame, base, index));2810 vmCall(Int64, m_out.operation(operationGetByValArrayInt), m_callFrame, base, index)); 2811 2811 m_out.jump(continuation); 2812 2812 2813 2813 m_out.appendTo(continuation, lastNext); 2814 setJSValue(m_out.phi( m_out.int64, fastResult, slowResult));2814 setJSValue(m_out.phi(Int64, fastResult, slowResult)); 2815 2815 return; 2816 2816 } … … 2860 2860 m_out.appendTo(slowCase, continuation); 2861 2861 ValueFromBlock slowResult = m_out.anchor( 2862 vmCall( m_out.int64, m_out.operation(operationGetByValArrayInt), m_callFrame, base, index));2862 vmCall(Int64, m_out.operation(operationGetByValArrayInt), m_callFrame, base, index)); 2863 2863 m_out.jump(continuation); 2864 2864 2865 2865 m_out.appendTo(continuation, lastNext); 2866 setJSValue(m_out.phi( m_out.int64, fastResult, slowResult));2866 setJSValue(m_out.phi(Int64, fastResult, slowResult)); 2867 2867 return; 2868 2868 } … … 2944 2944 2945 2945 m_out.appendTo(continuation, lastNext); 2946 setJSValue(m_out.phi( m_out.int64, namedResult, overflowResult));2946 setJSValue(m_out.phi(Int64, namedResult, overflowResult)); 2947 2947 return; 2948 2948 } … … 2950 2950 case Array::Generic: { 2951 2951 setJSValue(vmCall( 2952 m_out.int64, m_out.operation(operationGetByVal), m_callFrame,2952 Int64, m_out.operation(operationGetByVal), m_callFrame, 2953 2953 lowJSValue(m_node->child1()), lowJSValue(m_node->child2()))); 2954 2954 return; … … 3004 3004 3005 3005 if (m_node->shouldSpeculateAnyInt()) { 3006 setStrictInt52(m_out.zeroExt(result, m_out.int64));3006 setStrictInt52(m_out.zeroExt(result, Int64)); 3007 3007 return; 3008 3008 } … … 3078 3078 if (base) { 3079 3079 LValue pointer = m_out.baseIndex( 3080 base.value(), m_out.zeroExt(index, m_out.intPtr), ScaleEight);3080 base.value(), m_out.zeroExt(index, pointerType()), ScaleEight); 3081 3081 result = m_out.load64(TypedPointer(m_heaps.variables.atAnyIndex(), pointer)); 3082 3082 } else … … 3118 3118 3119 3119 vmCall( 3120 m_out.voidType, m_out.operation(operation), m_callFrame,3120 Void, m_out.operation(operation), m_callFrame, 3121 3121 lowJSValue(child1), lowJSValue(child2), lowJSValue(child3)); 3122 3122 return; … … 3210 3210 storage, 3211 3211 m_out.shl( 3212 m_out.zeroExt(index, m_out.intPtr),3212 m_out.zeroExt(index, pointerType()), 3213 3213 m_out.constIntPtr(logElementSize(type))))); 3214 3214 … … 3247 3247 3248 3248 m_out.appendTo(continuation, lastNext); 3249 intValue = m_out.phi( m_out.int32, intValues);3249 intValue = m_out.phi(Int32, intValues); 3250 3250 } 3251 3251 break; … … 3279 3279 3280 3280 m_out.appendTo(continuation, lastNext); 3281 intValue = m_out.phi( m_out.int32, intValues);3281 intValue = m_out.phi(Int32, intValues); 3282 3282 } else 3283 3283 intValue = doubleToInt32(doubleValue); … … 3350 3350 auto uid = m_graph.identifiers()[m_node->identifierNumber()]; 3351 3351 vmCall( 3352 m_out.voidType,3352 Void, 3353 3353 m_out.operation(m_node->op() == PutGetterById ? operationPutGetterById : operationPutSetterById), 3354 3354 m_callFrame, base, m_out.constIntPtr(uid), m_out.constInt32(m_node->accessorAttributes()), accessor); … … 3362 3362 auto uid = m_graph.identifiers()[m_node->identifierNumber()]; 3363 3363 vmCall( 3364 m_out.voidType, m_out.operation(operationPutGetterSetter),3364 Void, m_out.operation(operationPutGetterSetter), 3365 3365 m_callFrame, base, m_out.constIntPtr(uid), m_out.constInt32(m_node->accessorAttributes()), getter, setter); 3366 3366 … … 3373 3373 LValue accessor = lowCell(m_node->child3()); 3374 3374 vmCall( 3375 m_out.voidType,3375 Void, 3376 3376 m_out.operation(m_node->op() == PutGetterByVal ? operationPutGetterByVal : operationPutSetterByVal), 3377 3377 m_callFrame, base, subscript, m_out.constInt32(m_node->accessorAttributes()), accessor); … … 3434 3434 operation = m_out.operation(operationArrayPushDouble); 3435 3435 ValueFromBlock slowResult = m_out.anchor( 3436 vmCall( m_out.int64, operation, m_callFrame, value, base));3436 vmCall(Int64, operation, m_callFrame, value, base)); 3437 3437 m_out.jump(continuation); 3438 3438 3439 3439 m_out.appendTo(continuation, lastNext); 3440 setJSValue(m_out.phi( m_out.int64, fastResult, slowResult));3440 setJSValue(m_out.phi(Int64, fastResult, slowResult)); 3441 3441 return; 3442 3442 } … … 3491 3491 m_out.appendTo(slowCase, continuation); 3492 3492 results.append(m_out.anchor(vmCall( 3493 m_out.int64, m_out.operation(operationArrayPopAndRecoverLength), m_callFrame, base)));3493 Int64, m_out.operation(operationArrayPopAndRecoverLength), m_callFrame, base))); 3494 3494 m_out.jump(continuation); 3495 3495 3496 3496 m_out.appendTo(continuation, lastNext); 3497 setJSValue(m_out.phi( m_out.int64, results));3497 setJSValue(m_out.phi(Int64, results)); 3498 3498 return; 3499 3499 } … … 3514 3514 if (table->singletonScope()->isStillValid()) { 3515 3515 LValue callResult = vmCall( 3516 m_out.int64,3516 Int64, 3517 3517 m_out.operation(operationCreateActivationDirect), m_callFrame, weakPointer(structure), 3518 3518 scope, weakPointer(table), m_out.constInt64(JSValue::encode(initializationValue))); … … 3557 3557 3558 3558 m_out.appendTo(continuation, lastNext); 3559 setJSValue(m_out.phi( m_out.intPtr, fastResult, slowResult));3559 setJSValue(m_out.phi(pointerType(), fastResult, slowResult)); 3560 3560 } 3561 3561 … … 3570 3570 if (executable->singletonFunction()->isStillValid()) { 3571 3571 LValue callResult = 3572 isGeneratorFunction ? vmCall( m_out.int64, m_out.operation(operationNewGeneratorFunction), m_callFrame, scope, weakPointer(executable)) :3573 vmCall( m_out.int64, m_out.operation(operationNewFunction), m_callFrame, scope, weakPointer(executable));3572 isGeneratorFunction ? vmCall(Int64, m_out.operation(operationNewGeneratorFunction), m_callFrame, scope, weakPointer(executable)) : 3573 vmCall(Int64, m_out.operation(operationNewFunction), m_callFrame, scope, weakPointer(executable)); 3574 3574 setJSValue(callResult); 3575 3575 return; … … 3621 3621 3622 3622 m_out.appendTo(continuation, lastNext); 3623 setJSValue(m_out.phi( m_out.intPtr, fastResult, slowResult));3623 setJSValue(m_out.phi(pointerType(), fastResult, slowResult)); 3624 3624 } 3625 3625 … … 3679 3679 3680 3680 m_out.appendTo(continuation, lastNext); 3681 LValue result = m_out.phi( m_out.intPtr, fastResult, slowResult);3681 LValue result = m_out.phi(pointerType(), fastResult, slowResult); 3682 3682 3683 3683 m_out.storePtr(getCurrentCallee(), result, m_heaps.DirectArguments_callee); … … 3712 3712 3713 3713 lastNext = m_out.appendTo(loop, end); 3714 LValue previousIndex = m_out.phi( m_out.intPtr, originalLength);3714 LValue previousIndex = m_out.phi(pointerType(), originalLength); 3715 3715 LValue index = m_out.sub(previousIndex, m_out.intPtrOne); 3716 3716 m_out.store64( … … 3732 3732 3733 3733 LValue result = vmCall( 3734 m_out.int64, m_out.operation(operationCreateScopedArguments), m_callFrame,3734 Int64, m_out.operation(operationCreateScopedArguments), m_callFrame, 3735 3735 weakPointer( 3736 3736 m_graph.globalObjectFor(m_node->origin.semantic)->scopedArgumentsStructure()), … … 3743 3743 { 3744 3744 LValue result = vmCall( 3745 m_out.int64, m_out.operation(operationCreateClonedArguments), m_callFrame,3745 Int64, m_out.operation(operationCreateClonedArguments), m_callFrame, 3746 3746 weakPointer( 3747 3747 m_graph.globalObjectFor(m_node->origin.semantic)->clonedArgumentsStructure()), … … 3766 3766 LValue numberOfArgumentsToSkip = m_out.constInt32(m_node->numberOfArgumentsToSkip()); 3767 3767 vmCall( 3768 m_out.voidType,m_out.operation(operationCopyRest), m_callFrame, lowCell(m_node->child1()),3768 Void,m_out.operation(operationCopyRest), m_callFrame, lowCell(m_node->child1()), 3769 3769 getArgumentsStart(), numberOfArgumentsToSkip, arrayLength); 3770 3770 m_out.jump(continuation); … … 3790 3790 3791 3791 m_out.appendTo(continuation, lastNext); 3792 setInt32(m_out.phi( m_out.int32, zeroLengthResult, nonZeroLengthResult));3792 setInt32(m_out.phi(Int32, zeroLengthResult, nonZeroLengthResult)); 3793 3793 } 3794 3794 … … 3852 3852 if (!m_node->numChildren()) { 3853 3853 setJSValue(vmCall( 3854 m_out.int64, m_out.operation(operationNewEmptyArray), m_callFrame,3854 Int64, m_out.operation(operationNewEmptyArray), m_callFrame, 3855 3855 m_out.constIntPtr(structure))); 3856 3856 return; … … 3873 3873 3874 3874 LValue result = vmCall( 3875 m_out.int64, m_out.operation(operationNewArray), m_callFrame,3875 Int64, m_out.operation(operationNewArray), m_callFrame, 3876 3876 m_out.constIntPtr(structure), m_out.constIntPtr(buffer), 3877 3877 m_out.constIntPtr(m_node->numChildren())); … … 3912 3912 3913 3913 setJSValue(vmCall( 3914 m_out.int64, m_out.operation(operationNewArrayBuffer), m_callFrame,3914 Int64, m_out.operation(operationNewArrayBuffer), m_callFrame, 3915 3915 m_out.constIntPtr(structure), m_out.constIntPtr(m_node->startConstant()), 3916 3916 m_out.constIntPtr(m_node->numConstants()))); … … 3948 3948 3949 3949 LValue payloadSize = 3950 m_out.shl(m_out.zeroExt(vectorLength, m_out.intPtr), m_out.constIntPtr(3));3950 m_out.shl(m_out.zeroExt(vectorLength, pointerType()), m_out.constIntPtr(3)); 3951 3951 3952 3952 LValue butterflySize = m_out.add( … … 3978 3978 m_out.appendTo(slowCase, continuation); 3979 3979 LValue structureValue = m_out.phi( 3980 m_out.intPtr, largeStructure, failStructure);3980 pointerType(), largeStructure, failStructure); 3981 3981 LValue slowResultValue = lazySlowPath( 3982 3982 [=] (const Vector<Location>& locations) -> RefPtr<LazySlowPath::Generator> { … … 3990 3990 3991 3991 m_out.appendTo(continuation, lastNext); 3992 setJSValue(m_out.phi( m_out.intPtr, fastResult, slowResult));3992 setJSValue(m_out.phi(pointerType(), fastResult, slowResult)); 3993 3993 return; 3994 3994 } … … 3999 3999 globalObject->arrayStructureForIndexingTypeDuringAllocation(ArrayWithArrayStorage)), 4000 4000 m_out.constIntPtr(structure)); 4001 setJSValue(vmCall( m_out.int64, m_out.operation(operationNewArrayWithSize), m_callFrame, structureValue, publicLength));4001 setJSValue(vmCall(Int64, m_out.operation(operationNewArrayWithSize), m_callFrame, structureValue, publicLength)); 4002 4002 } 4003 4003 … … 4061 4061 4062 4062 m_out.appendTo(continuation, lastNext); 4063 setJSValue(m_out.phi( m_out.intPtr, fastResult, slowResult));4063 setJSValue(m_out.phi(pointerType(), fastResult, slowResult)); 4064 4064 return; 4065 4065 } … … 4069 4069 4070 4070 LValue result = vmCall( 4071 m_out.intPtr, m_out.operation(operationNewTypedArrayWithOneArgumentForType(type)),4071 pointerType(), m_out.operation(operationNewTypedArrayWithOneArgumentForType(type)), 4072 4072 m_callFrame, weakPointer(globalObject->typedArrayStructureConcurrently(type)), argument); 4073 4073 … … 4104 4104 4105 4105 if (!(abstractValue(m_node->child1()).m_type & SpecBytecodeNumber)) 4106 setJSValue(vmCall( m_out.int64, m_out.operation(operationToNumber), m_callFrame, value));4106 setJSValue(vmCall(Int64, m_out.operation(operationToNumber), m_callFrame, value)); 4107 4107 else { 4108 4108 LBasicBlock notNumber = m_out.newBlock(); … … 4117 4117 // It means that converting non-numbers to numbers by this ToNumber is not rare. 4118 4118 // Instead of the lazy slow path generator, we call the operation here. 4119 ValueFromBlock slowResult = m_out.anchor(vmCall( m_out.int64, m_out.operation(operationToNumber), m_callFrame, value));4119 ValueFromBlock slowResult = m_out.anchor(vmCall(Int64, m_out.operation(operationToNumber), m_callFrame, value)); 4120 4120 m_out.jump(continuation); 4121 4121 4122 4122 // continuation case. 4123 4123 m_out.appendTo(continuation, lastNext); 4124 setJSValue(m_out.phi( m_out.int64, fastResult, slowResult));4124 setJSValue(m_out.phi(Int64, fastResult, slowResult)); 4125 4125 } 4126 4126 } … … 4157 4157 4158 4158 m_out.appendTo(continuation, lastNext); 4159 setJSValue(m_out.phi( m_out.int64, simpleResult, unboxedResult));4159 setJSValue(m_out.phi(Int64, simpleResult, unboxedResult)); 4160 4160 4161 4161 m_interpreter.filter(m_node->child1(), SpecString | SpecStringObject); … … 4197 4197 else 4198 4198 operation = m_out.operation(m_node->op() == ToString ? operationToString : operationCallStringConstructor); 4199 ValueFromBlock convertedResult = m_out.anchor(vmCall( m_out.int64, operation, m_callFrame, value));4199 ValueFromBlock convertedResult = m_out.anchor(vmCall(Int64, operation, m_callFrame, value)); 4200 4200 m_out.jump(continuation); 4201 4201 4202 4202 m_out.appendTo(continuation, lastNext); 4203 setJSValue(m_out.phi( m_out.int64, simpleResult, convertedResult));4203 setJSValue(m_out.phi(Int64, simpleResult, convertedResult)); 4204 4204 return; 4205 4205 } … … 4233 4233 m_out.appendTo(isObjectCase, continuation); 4234 4234 results.append(m_out.anchor(vmCall( 4235 m_out.int64, m_out.operation(operationToPrimitive), m_callFrame, value)));4235 Int64, m_out.operation(operationToPrimitive), m_callFrame, value))); 4236 4236 m_out.jump(continuation); 4237 4237 4238 4238 m_out.appendTo(continuation, lastNext); 4239 setJSValue(m_out.phi( m_out.int64, results));4239 setJSValue(m_out.phi(Int64, results)); 4240 4240 } 4241 4241 … … 4316 4316 4317 4317 m_out.appendTo(continuation, lastNext); 4318 setJSValue(m_out.phi( m_out.int64, fastResult, slowResult));4318 setJSValue(m_out.phi(Int64, fastResult, slowResult)); 4319 4319 } 4320 4320 … … 4372 4372 Vector<ValueFromBlock, 4> results; 4373 4373 results.append(m_out.anchor(vmCall( 4374 m_out.int64, m_out.operation(operationSingleCharacterString),4374 Int64, m_out.operation(operationSingleCharacterString), 4375 4375 m_callFrame, char16BitValue))); 4376 4376 m_out.jump(continuation); … … 4378 4378 m_out.appendTo(bitsContinuation, slowPath); 4379 4379 4380 LValue character = m_out.phi( m_out.int32, char8Bit, char16Bit);4380 LValue character = m_out.phi(Int32, char8Bit, char16Bit); 4381 4381 4382 4382 LValue smallStrings = m_out.constIntPtr(vm().smallStrings.singleCharacterStrings()); … … 4418 4418 4419 4419 results.append(m_out.anchor(vmCall( 4420 m_out.int64, m_out.operation(operationGetByValStringInt), m_callFrame, base, index)));4420 Int64, m_out.operation(operationGetByValStringInt), m_callFrame, base, index))); 4421 4421 } 4422 4422 … … 4424 4424 4425 4425 m_out.appendTo(continuation, lastNext); 4426 setJSValue(m_out.phi( m_out.int64, results));4426 setJSValue(m_out.phi(Int64, results)); 4427 4427 } 4428 4428 … … 4468 4468 m_out.appendTo(continuation, lastNext); 4469 4469 4470 setInt32(m_out.phi( m_out.int32, char8Bit, char16Bit));4470 setInt32(m_out.phi(Int32, char8Bit, char16Bit)); 4471 4471 } 4472 4472 … … 4477 4477 if (childEdge.useKind() == UntypedUse) { 4478 4478 LValue result = vmCall( 4479 m_out.int64, m_out.operation(operationStringFromCharCodeUntyped), m_callFrame,4479 Int64, m_out.operation(operationStringFromCharCodeUntyped), m_callFrame, 4480 4480 lowJSValue(childEdge)); 4481 4481 setJSValue(result); … … 4506 4506 4507 4507 LValue slowResultValue = vmCall( 4508 m_out.intPtr, m_out.operation(operationStringFromCharCode), m_callFrame, value);4508 pointerType(), m_out.operation(operationStringFromCharCode), m_callFrame, value); 4509 4509 ValueFromBlock slowResult = m_out.anchor(slowResultValue); 4510 4510 m_out.jump(continuation); … … 4512 4512 m_out.appendTo(continuation, lastNext); 4513 4513 4514 setJSValue(m_out.phi( m_out.int64, fastResult, slowResult));4514 setJSValue(m_out.phi(Int64, fastResult, slowResult)); 4515 4515 } 4516 4516 … … 4610 4610 4611 4611 m_out.appendTo(continuation, lastNext); 4612 setJSValue(m_out.phi( m_out.int64, results));4612 setJSValue(m_out.phi(Int64, results)); 4613 4613 } 4614 4614 … … 4881 4881 4882 4882 m_out.appendTo(continuation, lastNext); 4883 setBoolean(m_out.phi( m_out.boolean, fastResult, slowResult));4883 setBoolean(m_out.phi(Int32, fastResult, slowResult)); 4884 4884 return; 4885 4885 } … … 4973 4973 4974 4974 m_out.appendTo(continuation, lastNext); 4975 setBoolean(m_out.phi( m_out.boolean, notCellResult, notStringResult, isStringResult));4975 setBoolean(m_out.phi(Int32, notCellResult, notStringResult, isStringResult)); 4976 4976 return; 4977 4977 } … … 5544 5544 5545 5545 LValue length = vmCall( 5546 m_out.int32, m_out.operation(operationSizeOfVarargs), m_callFrame, jsArguments,5546 Int32, m_out.operation(operationSizeOfVarargs), m_callFrame, jsArguments, 5547 5547 m_out.constInt32(data->offset)); 5548 5548 … … 5568 5568 5569 5569 vmCall( 5570 m_out.voidType, m_out.operation(operationLoadVarargs), m_callFrame,5570 Void, m_out.operation(operationLoadVarargs), m_callFrame, 5571 5571 m_out.castToInt32(machineStart), jsArguments, m_out.constInt32(data->offset), 5572 5572 length, m_out.constInt32(data->mandatoryMinimum)); … … 5606 5606 5607 5607 LBasicBlock lastNext = m_out.appendTo(undefinedLoop, mainLoopEntry); 5608 LValue previousIndex = m_out.phi( m_out.intPtr, loopBound);5608 LValue previousIndex = m_out.phi(pointerType(), loopBound); 5609 5609 LValue currentIndex = m_out.sub(previousIndex, m_out.intPtrOne); 5610 5610 m_out.store64( … … 5621 5621 5622 5622 m_out.appendTo(mainLoop, continuation); 5623 previousIndex = m_out.phi( m_out.intPtr, loopBound);5623 previousIndex = m_out.phi(pointerType(), loopBound); 5624 5624 currentIndex = m_out.sub(previousIndex, m_out.intPtrOne); 5625 5625 LValue value = m_out.load64( … … 5703 5703 5704 5704 m_out.appendTo(switchOnInts, lastNext); 5705 buildSwitch(data, m_out.int32, m_out.phi(m_out.int32, intValues));5705 buildSwitch(data, Int32, m_out.phi(Int32, intValues)); 5706 5706 return; 5707 5707 } … … 5769 5769 m_out.appendTo(needResolution, resolved); 5770 5770 values.append(m_out.anchor( 5771 vmCall( m_out.intPtr, m_out.operation(operationResolveRope), m_callFrame, stringValue)));5771 vmCall(pointerType(), m_out.operation(operationResolveRope), m_callFrame, stringValue))); 5772 5772 m_out.jump(resolved); 5773 5773 5774 5774 m_out.appendTo(resolved, is8Bit); 5775 LValue value = m_out.phi( m_out.intPtr, values);5775 LValue value = m_out.phi(pointerType(), values); 5776 5776 LValue characterData = m_out.loadPtr(value, m_heaps.StringImpl_data); 5777 5777 m_out.branch( … … 5791 5791 5792 5792 m_out.appendTo(continuation, lastNext); 5793 buildSwitch(data, m_out.int32, m_out.phi(m_out.int32, characters));5793 buildSwitch(data, Int32, m_out.phi(Int32, characters)); 5794 5794 return; 5795 5795 } … … 5872 5872 } 5873 5873 5874 buildSwitch(m_node->switchData(), m_out.intPtr, cell);5874 buildSwitch(m_node->switchData(), pointerType(), cell); 5875 5875 return; 5876 5876 } } … … 5985 5985 5986 5986 m_out.appendTo(continuation, lastNext); 5987 setBoolean(m_out.phi( m_out.boolean, notCellResult, cellResult));5987 setBoolean(m_out.phi(Int32, notCellResult, cellResult)); 5988 5988 } 5989 5989 … … 6004 6004 6005 6005 m_out.appendTo(continuation, lastNext); 6006 setBoolean(m_out.phi( m_out.boolean, notCellResult, cellResult));6006 setBoolean(m_out.phi(Int32, notCellResult, cellResult)); 6007 6007 } 6008 6008 … … 6023 6023 6024 6024 m_out.appendTo(continuation, lastNext); 6025 setBoolean(m_out.phi( m_out.boolean, notCellResult, cellResult));6025 setBoolean(m_out.phi(Int32, notCellResult, cellResult)); 6026 6026 } 6027 6027 … … 6077 6077 m_out.appendTo(continuation, lastNext); 6078 6078 LValue result = m_out.phi( 6079 m_out.boolean,6079 Int32, 6080 6080 isFunctionResult, notObjectResult, objectResult, slowResult, notCellResult); 6081 6081 setBoolean(result); … … 6122 6122 m_out.appendTo(continuation, lastNext); 6123 6123 LValue result = m_out.phi( 6124 m_out.boolean, notCellResult, functionResult, objectResult, slowResult);6124 Int32, notCellResult, functionResult, objectResult, slowResult); 6125 6125 setBoolean(result); 6126 6126 } … … 6142 6142 6143 6143 m_out.appendTo(continuation, lastNext); 6144 setBoolean(m_out.phi( m_out.boolean, notCellResult, cellResult));6144 setBoolean(m_out.phi(Int32, notCellResult, cellResult)); 6145 6145 } 6146 6146 … … 6160 6160 6161 6161 m_out.appendTo(continuation, lastNext); 6162 setBoolean(m_out.phi( m_out.boolean, notCellResult, cellResult));6162 setBoolean(m_out.phi(Int32, notCellResult, cellResult)); 6163 6163 } 6164 6164 … … 6181 6181 6182 6182 m_out.appendTo(continuation, lastNext); 6183 setJSValue(m_out.phi( m_out.int64, results));6183 setJSValue(m_out.phi(Int64, results)); 6184 6184 } 6185 6185 … … 6261 6261 } 6262 6262 6263 setJSValue(vmCall( m_out.int64, m_out.operation(operationGenericIn), m_callFrame, cell, lowJSValue(m_node->child1())));6263 setJSValue(vmCall(Int64, m_out.operation(operationGenericIn), m_callFrame, cell, lowJSValue(m_node->child1()))); 6264 6264 } 6265 6265 … … 6288 6288 6289 6289 m_out.appendTo(continuation, lastNext); 6290 setBoolean(m_out.phi( m_out.boolean, implementsDefaultHasInstanceResult, notDefaultHasInstanceResult));6290 setBoolean(m_out.phi(Int32, implementsDefaultHasInstanceResult, notDefaultHasInstanceResult)); 6291 6291 } 6292 6292 … … 6335 6335 6336 6336 m_out.appendTo(loop, loadPrototypeDirect); 6337 LValue value = m_out.phi( m_out.int64, originalValue);6337 LValue value = m_out.phi(Int64, originalValue); 6338 6338 LValue type = m_out.load8ZeroExt32(value, m_heaps.JSCell_typeInfoType); 6339 6339 m_out.branch( … … 6359 6359 // loop. 6360 6360 ValueFromBlock defaultHasInstanceResult = m_out.anchor( 6361 vmCall( m_out.boolean, m_out.operation(operationDefaultHasInstance), m_callFrame, value, prototype));6361 vmCall(Int32, m_out.operation(operationDefaultHasInstance), m_callFrame, value, prototype)); 6362 6362 m_out.jump(continuation); 6363 6363 6364 6364 m_out.appendTo(continuation, lastNext); 6365 6365 setBoolean( 6366 m_out.phi( m_out.boolean, notCellResult, isInstanceResult, notInstanceResult, defaultHasInstanceResult));6366 m_out.phi(Int32, notCellResult, isInstanceResult, notInstanceResult, defaultHasInstanceResult)); 6367 6367 } 6368 6368 … … 6373 6373 LValue hasInstance = lowJSValue(m_node->child3()); 6374 6374 6375 setBoolean(m_out.logicalNot(m_out.equal(m_out.constInt32(0), vmCall( m_out.int32, m_out.operation(operationInstanceOfCustom), m_callFrame, value, constructor, hasInstance))));6375 setBoolean(m_out.logicalNot(m_out.equal(m_out.constInt32(0), vmCall(Int32, m_out.operation(operationInstanceOfCustom), m_callFrame, value, constructor, hasInstance)))); 6376 6376 } 6377 6377 … … 6420 6420 ValueFromBlock slowResult = m_out.anchor(m_out.equal( 6421 6421 m_out.constInt64(JSValue::encode(jsBoolean(true))), 6422 vmCall( m_out.int64, m_out.operation(operationHasIndexedProperty), m_callFrame, base, index)));6422 vmCall(Int64, m_out.operation(operationHasIndexedProperty), m_callFrame, base, index))); 6423 6423 m_out.jump(continuation); 6424 6424 6425 6425 m_out.appendTo(continuation, lastNext); 6426 setBoolean(m_out.phi( m_out.boolean, checkHoleResult, slowResult));6426 setBoolean(m_out.phi(Int32, checkHoleResult, slowResult)); 6427 6427 return; 6428 6428 } … … 6455 6455 ValueFromBlock slowResult = m_out.anchor(m_out.equal( 6456 6456 m_out.constInt64(JSValue::encode(jsBoolean(true))), 6457 vmCall( m_out.int64, m_out.operation(operationHasIndexedProperty), m_callFrame, base, index)));6457 vmCall(Int64, m_out.operation(operationHasIndexedProperty), m_callFrame, base, index))); 6458 6458 m_out.jump(continuation); 6459 6459 6460 6460 m_out.appendTo(continuation, lastNext); 6461 setBoolean(m_out.phi( m_out.boolean, checkHoleResult, slowResult));6461 setBoolean(m_out.phi(Int32, checkHoleResult, slowResult)); 6462 6462 return; 6463 6463 } … … 6473 6473 LValue base = lowJSValue(m_node->child1()); 6474 6474 LValue property = lowCell(m_node->child2()); 6475 setJSValue(vmCall( m_out.int64, m_out.operation(operationHasGenericProperty), m_callFrame, base, property));6475 setJSValue(vmCall(Int64, m_out.operation(operationHasGenericProperty), m_callFrame, base, property)); 6476 6476 } 6477 6477 … … 6499 6499 m_out.equal( 6500 6500 m_out.constInt64(JSValue::encode(jsBoolean(true))), 6501 vmCall( m_out.int64, m_out.operation(operationHasGenericProperty), m_callFrame, base, property)));6501 vmCall(Int64, m_out.operation(operationHasGenericProperty), m_callFrame, base, property))); 6502 6502 m_out.jump(continuation); 6503 6503 6504 6504 m_out.appendTo(continuation, lastNext); 6505 setBoolean(m_out.phi( m_out.boolean, correctStructureResult, wrongStructureResult));6505 setBoolean(m_out.phi(Int32, correctStructureResult, wrongStructureResult)); 6506 6506 } 6507 6507 … … 6531 6531 ValueFromBlock inlineResult = m_out.anchor( 6532 6532 m_out.load64(m_out.baseIndex(m_heaps.properties.atAnyNumber(), 6533 base, m_out.zeroExt(index, m_out.int64), ScaleEight, JSObject::offsetOfInlineStorage())));6533 base, m_out.zeroExt(index, Int64), ScaleEight, JSObject::offsetOfInlineStorage()))); 6534 6534 m_out.jump(continuation); 6535 6535 … … 6545 6545 m_out.appendTo(slowCase, continuation); 6546 6546 ValueFromBlock slowCaseResult = m_out.anchor( 6547 vmCall( m_out.int64, m_out.operation(operationGetByVal), m_callFrame, base, property));6547 vmCall(Int64, m_out.operation(operationGetByVal), m_callFrame, base, property)); 6548 6548 m_out.jump(continuation); 6549 6549 6550 6550 m_out.appendTo(continuation, lastNext); 6551 setJSValue(m_out.phi( m_out.int64, inlineResult, outOfLineResult, slowCaseResult));6551 setJSValue(m_out.phi(Int64, inlineResult, outOfLineResult, slowCaseResult)); 6552 6552 } 6553 6553 … … 6561 6561 { 6562 6562 LValue base = lowCell(m_node->child1()); 6563 setJSValue(vmCall( m_out.int64, m_out.operation(operationGetPropertyEnumerator), m_callFrame, base));6563 setJSValue(vmCall(Int64, m_out.operation(operationGetPropertyEnumerator), m_callFrame, base)); 6564 6564 } 6565 6565 … … 6587 6587 6588 6588 m_out.appendTo(continuation, lastNext); 6589 setJSValue(m_out.phi( m_out.int64, inBoundsResult, outOfBoundsResult));6589 setJSValue(m_out.phi(Int64, inBoundsResult, outOfBoundsResult)); 6590 6590 } 6591 6591 … … 6613 6613 6614 6614 m_out.appendTo(continuation, lastNext); 6615 setJSValue(m_out.phi( m_out.int64, inBoundsResult, outOfBoundsResult));6615 setJSValue(m_out.phi(Int64, inBoundsResult, outOfBoundsResult)); 6616 6616 } 6617 6617 … … 6619 6619 { 6620 6620 LValue index = lowInt32(m_node->child1()); 6621 setJSValue(vmCall( m_out.int64, m_out.operation(operationToIndexString), m_callFrame, index));6621 setJSValue(vmCall(Int64, m_out.operation(operationToIndexString), m_callFrame, index)); 6622 6622 } 6623 6623 … … 6759 6759 m_out.appendTo(continuation, lastNext); 6760 6760 6761 object = m_out.phi( m_out.intPtr, fastObject, slowObject);6762 butterfly = m_out.phi( m_out.intPtr, fastButterfly, slowButterfly);6761 object = m_out.phi(pointerType(), fastObject, slowObject); 6762 butterfly = m_out.phi(pointerType(), fastButterfly, slowButterfly); 6763 6763 6764 6764 m_out.store32(publicLength, butterfly, m_heaps.Butterfly_publicLength); … … 6895 6895 6896 6896 m_out.appendTo(outerContinuation, outerLastNext); 6897 setJSValue(m_out.phi( m_out.intPtr, results));6897 setJSValue(m_out.phi(pointerType(), results)); 6898 6898 } 6899 6899 … … 6944 6944 6945 6945 m_out.appendTo(continuation, lastNext); 6946 LValue activation = m_out.phi( m_out.intPtr, fastResult, slowResult);6946 LValue activation = m_out.phi(pointerType(), fastResult, slowResult); 6947 6947 RELEASE_ASSERT(data.m_properties.size() == table->scopeSize()); 6948 6948 for (unsigned i = 0; i < data.m_properties.size(); ++i) { … … 7074 7074 void compileSetFunctionName() 7075 7075 { 7076 vmCall( m_out.voidType, m_out.operation(operationSetFunctionName), m_callFrame,7076 vmCall(Void, m_out.operation(operationSetFunctionName), m_callFrame, 7077 7077 lowCell(m_node->child1()), lowJSValue(m_node->child2())); 7078 7078 } … … 7333 7333 7334 7334 m_out.appendTo(continuation, lastNext); 7335 return m_out.phi( m_out.int32, results);7335 return m_out.phi(Int32, results); 7336 7336 } 7337 7337 … … 7529 7529 7530 7530 LBasicBlock initLastNext = m_out.appendTo(initLoop, initDone); 7531 LValue index = m_out.phi( m_out.int32, originalIndex);7532 LValue pointer = m_out.phi( m_out.intPtr, originalPointer);7531 LValue index = m_out.phi(Int32, originalIndex); 7532 LValue pointer = m_out.phi(pointerType(), originalPointer); 7533 7533 7534 7534 m_out.store64( … … 7549 7549 if (previousStructure->couldHaveIndexingHeader()) { 7550 7550 return vmCall( 7551 m_out.intPtr,7551 pointerType(), 7552 7552 m_out.operation( 7553 7553 operationReallocateButterflyToHavePropertyStorageWithInitialCapacity), … … 7570 7570 if (previous->couldHaveIndexingHeader()) { 7571 7571 LValue newAllocSize = m_out.constIntPtr(newSize); 7572 return vmCall( m_out.intPtr, m_out.operation(operationReallocateButterflyToGrowPropertyStorage), m_callFrame, object, newAllocSize);7572 return vmCall(pointerType(), m_out.operation(operationReallocateButterflyToGrowPropertyStorage), m_callFrame, object, newAllocSize); 7573 7573 } 7574 7574 … … 7628 7628 m_out.appendTo(continuation, lastNext); 7629 7629 7630 return m_out.phi( m_out.intPtr, fastButterfly, slowButterfly);7630 return m_out.phi(pointerType(), fastButterfly, slowButterfly); 7631 7631 } 7632 7632 … … 7752 7752 LValue left = lowStringIdent(m_node->child1()); 7753 7753 LValue right = lowStringIdent(m_node->child2()); 7754 setBoolean(m_out.callWithoutSideEffects( m_out.boolean, stringIdentFunction, left, right));7754 setBoolean(m_out.callWithoutSideEffects(Int32, stringIdentFunction, left, right)); 7755 7755 return; 7756 7756 } … … 7763 7763 7764 7764 LValue result = vmCall( 7765 m_out.boolean, m_out.operation(stringFunction),7765 Int32, m_out.operation(stringFunction), 7766 7766 m_callFrame, left, right); 7767 7767 setBoolean(result); … … 7780 7780 { 7781 7781 UniquedStringImpl* uid = m_graph.identifiers()[m_node->identifierNumber()]; 7782 setJSValue(vmCall( m_out.intPtr, m_out.operation(operationResolveScope),7782 setJSValue(vmCall(pointerType(), m_out.operation(operationResolveScope), 7783 7783 m_callFrame, lowCell(m_node->child1()), m_out.constIntPtr(uid))); 7784 7784 } … … 7787 7787 { 7788 7788 UniquedStringImpl* uid = m_graph.identifiers()[m_node->identifierNumber()]; 7789 setJSValue(vmCall( m_out.int64, m_out.operation(operationGetDynamicVar),7789 setJSValue(vmCall(Int64, m_out.operation(operationGetDynamicVar), 7790 7790 m_callFrame, lowCell(m_node->child1()), m_out.constIntPtr(uid), m_out.constInt32(m_node->getPutInfo()))); 7791 7791 } … … 7837 7837 7838 7838 m_out.appendTo(continuation, lastNext); 7839 setBoolean(m_out.phi( m_out.boolean, cellResult, notCellResult));7839 setBoolean(m_out.phi(Int32, cellResult, notCellResult)); 7840 7840 } 7841 7841 … … 7877 7877 m_out.appendTo(slowPath, continuation); 7878 7878 ValueFromBlock slowResult = m_out.anchor(m_out.notNull(vmCall( 7879 m_out.intPtr, m_out.operation(helperFunction), m_callFrame, left, right)));7879 pointerType(), m_out.operation(helperFunction), m_callFrame, left, right))); 7880 7880 m_out.jump(continuation); 7881 7881 7882 7882 m_out.appendTo(continuation, lastNext); 7883 setBoolean(m_out.phi( m_out.boolean, fastResult, slowResult));7883 setBoolean(m_out.phi(Int32, fastResult, slowResult)); 7884 7884 } 7885 7885 … … 7947 7947 m_out.appendTo(loop, bytesEqual); 7948 7948 7949 LValue indexAtLoopTop = m_out.phi( m_out.int32, indexAtStart);7949 LValue indexAtLoopTop = m_out.phi(Int32, indexAtStart); 7950 7950 LValue indexInLoop = m_out.sub(indexAtLoopTop, m_out.int32One); 7951 7951 … … 7976 7976 7977 7977 LValue slowResultValue = vmCall( 7978 m_out.int64, m_out.operation(operationCompareStringEq), m_callFrame,7978 Int64, m_out.operation(operationCompareStringEq), m_callFrame, 7979 7979 leftJSString, rightJSString); 7980 7980 ValueFromBlock slowResult = m_out.anchor(unboxBoolean(slowResultValue)); … … 7982 7982 7983 7983 m_out.appendTo(continuation, lastNext); 7984 return m_out.phi( m_out.boolean, trueResult, falseResult, slowResult);7984 return m_out.phi(Int32, trueResult, falseResult, slowResult); 7985 7985 } 7986 7986 … … 8268 8268 8269 8269 m_out.appendTo(continuation, lastNext); 8270 LValue allocator = m_out.phi( m_out.intPtr, smallAllocator, largeAllocator);8270 LValue allocator = m_out.phi(pointerType(), smallAllocator, largeAllocator); 8271 8271 8272 8272 return allocateObject(allocator, structure, butterfly, slowPath); … … 8326 8326 8327 8327 m_out.appendTo(continuation, lastNext); 8328 return m_out.phi( m_out.intPtr, fastResult, slowResult);8328 return m_out.phi(pointerType(), fastResult, slowResult); 8329 8329 } 8330 8330 … … 8410 8410 8411 8411 return ArrayValues( 8412 m_out.phi( m_out.intPtr, fastArray, slowArray),8413 m_out.phi( m_out.intPtr, fastButterfly, slowButterfly));8412 m_out.phi(pointerType(), fastArray, slowArray), 8413 m_out.phi(pointerType(), fastButterfly, slowButterfly)); 8414 8414 } 8415 8415 … … 8585 8585 8586 8586 m_out.appendTo(continuation, lastNext); 8587 return m_out.phi( m_out.boolean, results);8587 return m_out.phi(Int32, results); 8588 8588 } 8589 8589 default: … … 8680 8680 m_out.appendTo(continuation, lastNext); 8681 8681 8682 return m_out.phi( m_out.boolean, results);8682 return m_out.phi(Int32, results); 8683 8683 } 8684 8684 … … 8716 8716 8717 8717 vmCall( 8718 m_out.voidType, m_out.operation(slowPathFunction),8718 Void, m_out.operation(slowPathFunction), 8719 8719 m_callFrame, base, index, value); 8720 8720 … … 8735 8735 void buildSwitch(SwitchData* data, LType type, LValue switchValue) 8736 8736 { 8737 ASSERT(type == m_out.intPtr || type == m_out.int32);8737 ASSERT(type == pointerType() || type == Int32); 8738 8738 8739 8739 Vector<SwitchCase> cases; … … 8741 8741 SwitchCase newCase; 8742 8742 8743 if (type == m_out.intPtr) {8743 if (type == pointerType()) { 8744 8744 newCase = SwitchCase(m_out.constIntPtr(data->cases[i].value.switchLookupValue(data->kind)), 8745 8745 lowBlock(data->cases[i].target.block), Weight(data->cases[i].target.count)); 8746 } else if (type == m_out.int32) {8746 } else if (type == Int32) { 8747 8747 newCase = SwitchCase(m_out.constInt32(data->cases[i].value.switchLookupValue(data->kind)), 8748 8748 lowBlock(data->cases[i].target.block), Weight(data->cases[i].target.count)); … … 8992 8992 8993 8993 LValue branchOffset = vmCall( 8994 m_out.int32, m_out.operation(operationSwitchStringAndGetBranchOffset),8994 Int32, m_out.operation(operationSwitchStringAndGetBranchOffset), 8995 8995 m_callFrame, m_out.constIntPtr(data->switchTableIndex), string); 8996 8996 … … 9217 9217 9218 9218 m_out.appendTo(slowPath, continuation); 9219 results.append(m_out.anchor(m_out.call( m_out.int32, m_out.operation(operationToInt32), doubleValue)));9219 results.append(m_out.anchor(m_out.call(Int32, m_out.operation(operationToInt32), doubleValue))); 9220 9220 m_out.jump(continuation); 9221 9221 9222 9222 m_out.appendTo(continuation, lastNext); 9223 return m_out.phi( m_out.int32, results);9223 return m_out.phi(Int32, results); 9224 9224 } 9225 9225 … … 9246 9246 LBasicBlock lastNext = m_out.appendTo(slowPath, continuation); 9247 9247 ValueFromBlock slowResult = m_out.anchor( 9248 m_out.call( m_out.int32, m_out.operation(operationToInt32), doubleValue));9248 m_out.call(Int32, m_out.operation(operationToInt32), doubleValue)); 9249 9249 m_out.jump(continuation); 9250 9250 9251 9251 m_out.appendTo(continuation, lastNext); 9252 return m_out.phi( m_out.int32, fastResult, slowResult);9252 return m_out.phi(Int32, fastResult, slowResult); 9253 9253 } 9254 9254 … … 9772 9772 9773 9773 m_out.appendTo(continuation, lastNext); 9774 return m_out.phi( m_out.int64, results);9774 return m_out.phi(Int64, results); 9775 9775 } 9776 9776 … … 9803 9803 LValue boxInt32(LValue value) 9804 9804 { 9805 return m_out.add(m_out.zeroExt(value, m_out.int64), m_tagTypeNumber);9805 return m_out.add(m_out.zeroExt(value, Int64), m_tagTypeNumber); 9806 9806 } 9807 9807 … … 9821 9821 LValue unboxDouble(LValue jsValue) 9822 9822 { 9823 return m_out.bitCast(m_out.add(jsValue, m_tagTypeNumber), m_out.doubleType);9823 return m_out.bitCast(m_out.add(jsValue, m_tagTypeNumber), Double); 9824 9824 } 9825 9825 LValue boxDouble(LValue doubleValue) 9826 9826 { 9827 return m_out.sub(m_out.bitCast(doubleValue, m_out.int64), m_tagTypeNumber);9827 return m_out.sub(m_out.bitCast(doubleValue, Int64), m_tagTypeNumber); 9828 9828 } 9829 9829 … … 9852 9852 9853 9853 LValue possibleResult = m_out.call( 9854 m_out.int64, m_out.operation(operationConvertBoxedDoubleToInt52), boxedValue);9854 Int64, m_out.operation(operationConvertBoxedDoubleToInt52), boxedValue); 9855 9855 FTL_TYPE_CHECK( 9856 9856 jsValueValue(boxedValue), edge, SpecInt32Only | SpecAnyIntAsDouble, … … 9862 9862 m_out.appendTo(continuation, lastNext); 9863 9863 9864 return m_out.phi( m_out.int64, intToInt52, doubleToInt52);9864 return m_out.phi(Int64, intToInt52, doubleToInt52); 9865 9865 } 9866 9866 … … 9868 9868 { 9869 9869 LValue possibleResult = m_out.call( 9870 m_out.int64, m_out.operation(operationConvertDoubleToInt52), value);9870 Int64, m_out.operation(operationConvertDoubleToInt52), value); 9871 9871 FTL_TYPE_CHECK_WITH_EXIT_KIND(Int52Overflow, 9872 9872 doubleValue(value), edge, SpecAnyIntAsDouble, … … 9890 9890 LBasicBlock lastNext = m_out.appendTo(valueIsZero, continuation); 9891 9891 9892 LValue doubleBitcastToInt64 = m_out.bitCast(value, m_out.int64);9892 LValue doubleBitcastToInt64 = m_out.bitCast(value, Int64); 9893 9893 LValue signBitSet = m_out.lessThan(doubleBitcastToInt64, m_out.constInt64(0)); 9894 9894 … … 10709 10709 { 10710 10710 if (Options::useExceptionFuzz()) 10711 m_out.call( m_out.voidType, m_out.operation(operationExceptionFuzz), m_callFrame);10711 m_out.call(Void, m_out.operation(operationExceptionFuzz), m_callFrame); 10712 10712 10713 10713 LValue exception = m_out.load64(m_out.absolute(vm().addressOfException())); … … 11295 11295 #else 11296 11296 m_out.call( 11297 m_out.voidType,11297 Void, 11298 11298 m_out.constIntPtr(ftlUnreachable), 11299 11299 m_out.constIntPtr(codeBlock()), m_out.constInt32(blockIndex), -
trunk/Source/JavaScriptCore/ftl/FTLOutput.cpp
r202007 r202792 650 650 LValue Output::bitCast(LValue value, LType type) 651 651 { 652 ASSERT_UNUSED(type, type == int64 || type == doubleType);652 ASSERT_UNUSED(type, type == Int64 || type == Double); 653 653 return m_block->appendNew<B3::Value>(m_proc, B3::BitwiseCast, origin(), value); 654 654 }
Note: See TracChangeset
for help on using the changeset viewer.