Title: [202792] trunk/Source/_javascript_Core
Revision
202792
Author
[email protected]
Date
2016-07-03 12:34:55 -0700 (Sun, 03 Jul 2016)

Log Message

FTL should refer to B3 types directly
https://bugs.webkit.org/show_bug.cgi?id=159389

Reviewed by Saam Barati.
        
When we used LLVM, types were objects that were allocated by the LLVMContext. We had to
remember pointers to them or else call through the C API every time we wanted the type. We
stored the type pointers inside FTL::CommonValues.
        
But in B3, types are just members of an enum. We don't have to remember pointers to them.
        
This change replaces all prior uses of things like "m_out.int32" with just "Int32", and
likewise for m_out.boolean, m_out.int64, m_out.intPtr, m_out.floatType, m_out.doubleType,
and m_out.voidType.
        
We still use FTL::CommonValues for common constants that we have pre-hoisted. Hopefully we
will come up with a better story for those eventually, since that's still kinda ugly.

* ftl/FTLCommonValues.cpp:
(JSC::FTL::CommonValues::CommonValues):
* ftl/FTLCommonValues.h:
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::createPhiVariables):
(JSC::FTL::DFG::LowerDFGToB3::compileDoubleRep):
(JSC::FTL::DFG::LowerDFGToB3::compileBooleanToNumber):
(JSC::FTL::DFG::LowerDFGToB3::compileCallObjectConstructor):
(JSC::FTL::DFG::LowerDFGToB3::compileToThis):
(JSC::FTL::DFG::LowerDFGToB3::compileValueAdd):
(JSC::FTL::DFG::LowerDFGToB3::compileStrCat):
(JSC::FTL::DFG::LowerDFGToB3::compileArithMinOrMax):
(JSC::FTL::DFG::LowerDFGToB3::compileArithPow):
(JSC::FTL::DFG::LowerDFGToB3::compileArithRound):
(JSC::FTL::DFG::LowerDFGToB3::compileArrayifyToStructure):
(JSC::FTL::DFG::LowerDFGToB3::compileGetById):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByIdWithThis):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByValWithThis):
(JSC::FTL::DFG::LowerDFGToB3::compilePutByIdWithThis):
(JSC::FTL::DFG::LowerDFGToB3::compilePutByValWithThis):
(JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::compileGetTypedArrayByteOffset):
(JSC::FTL::DFG::LowerDFGToB3::compileGetArrayLength):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileGetMyArgumentByVal):
(JSC::FTL::DFG::LowerDFGToB3::compilePutByVal):
(JSC::FTL::DFG::LowerDFGToB3::compilePutAccessorById):
(JSC::FTL::DFG::LowerDFGToB3::compilePutGetterSetterById):
(JSC::FTL::DFG::LowerDFGToB3::compilePutAccessorByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileArrayPush):
(JSC::FTL::DFG::LowerDFGToB3::compileArrayPop):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::compileNewFunction):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateDirectArguments):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateScopedArguments):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateClonedArguments):
(JSC::FTL::DFG::LowerDFGToB3::compileCopyRest):
(JSC::FTL::DFG::LowerDFGToB3::compileGetRestLength):
(JSC::FTL::DFG::LowerDFGToB3::compileNewObject):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArray):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayBuffer):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSize):
(JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray):
(JSC::FTL::DFG::LowerDFGToB3::compileToNumber):
(JSC::FTL::DFG::LowerDFGToB3::compileToStringOrCallStringConstructor):
(JSC::FTL::DFG::LowerDFGToB3::compileToPrimitive):
(JSC::FTL::DFG::LowerDFGToB3::compileMakeRope):
(JSC::FTL::DFG::LowerDFGToB3::compileStringCharAt):
(JSC::FTL::DFG::LowerDFGToB3::compileStringCharCodeAt):
(JSC::FTL::DFG::LowerDFGToB3::compileStringFromCharCode):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByOffset):
(JSC::FTL::DFG::LowerDFGToB3::compileMultiGetByOffset):
(JSC::FTL::DFG::LowerDFGToB3::compilePutByOffset):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
(JSC::FTL::DFG::LowerDFGToB3::compileLoadVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileForwardVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileSwitch):
(JSC::FTL::DFG::LowerDFGToB3::compileIsString):
(JSC::FTL::DFG::LowerDFGToB3::compileIsJSArray):
(JSC::FTL::DFG::LowerDFGToB3::compileIsObject):
(JSC::FTL::DFG::LowerDFGToB3::compileIsObjectOrNull):
(JSC::FTL::DFG::LowerDFGToB3::compileIsFunction):
(JSC::FTL::DFG::LowerDFGToB3::compileIsRegExpObject):
(JSC::FTL::DFG::LowerDFGToB3::compileIsTypedArrayView):
(JSC::FTL::DFG::LowerDFGToB3::compileTypeOf):
(JSC::FTL::DFG::LowerDFGToB3::compileIn):
(JSC::FTL::DFG::LowerDFGToB3::compileOverridesHasInstance):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckTypeInfoFlags):
(JSC::FTL::DFG::LowerDFGToB3::compileInstanceOf):
(JSC::FTL::DFG::LowerDFGToB3::compileInstanceOfCustom):
(JSC::FTL::DFG::LowerDFGToB3::compileCountExecution):
(JSC::FTL::DFG::LowerDFGToB3::compileHasIndexedProperty):
(JSC::FTL::DFG::LowerDFGToB3::compileHasGenericProperty):
(JSC::FTL::DFG::LowerDFGToB3::compileHasStructureProperty):
(JSC::FTL::DFG::LowerDFGToB3::compileGetDirectPname):
(JSC::FTL::DFG::LowerDFGToB3::compileGetEnumerableLength):
(JSC::FTL::DFG::LowerDFGToB3::compileGetPropertyEnumerator):
(JSC::FTL::DFG::LowerDFGToB3::compileGetEnumeratorStructurePname):
(JSC::FTL::DFG::LowerDFGToB3::compileGetEnumeratorGenericPname):
(JSC::FTL::DFG::LowerDFGToB3::compileToIndexString):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckStructureImmediate):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::compileSetFunctionName):
(JSC::FTL::DFG::LowerDFGToB3::numberOrNotCellToInt32):
(JSC::FTL::DFG::LowerDFGToB3::checkInferredType):
(JSC::FTL::DFG::LowerDFGToB3::initializeArrayElements):
(JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::reallocatePropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorageWithSizeImpl):
(JSC::FTL::DFG::LowerDFGToB3::getById):
(JSC::FTL::DFG::LowerDFGToB3::compare):
(JSC::FTL::DFG::LowerDFGToB3::compileResolveScope):
(JSC::FTL::DFG::LowerDFGToB3::compileGetDynamicVar):
(JSC::FTL::DFG::LowerDFGToB3::compareEqObjectOrOtherToObject):
(JSC::FTL::DFG::LowerDFGToB3::speculateTruthyObject):
(JSC::FTL::DFG::LowerDFGToB3::nonSpeculativeCompare):
(JSC::FTL::DFG::LowerDFGToB3::stringsEqual):
(JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateJSArray):
(JSC::FTL::DFG::LowerDFGToB3::ensureShadowChickenPacket):
(JSC::FTL::DFG::LowerDFGToB3::boolify):
(JSC::FTL::DFG::LowerDFGToB3::equalNullOrUndefined):
(JSC::FTL::DFG::LowerDFGToB3::contiguousPutByValOutOfBounds):
(JSC::FTL::DFG::LowerDFGToB3::buildSwitch):
(JSC::FTL::DFG::LowerDFGToB3::switchStringSlow):
(JSC::FTL::DFG::LowerDFGToB3::doubleToInt32):
(JSC::FTL::DFG::LowerDFGToB3::sensibleDoubleToInt32):
(JSC::FTL::DFG::LowerDFGToB3::strictInt52ToJSValue):
(JSC::FTL::DFG::LowerDFGToB3::strictInt52ToInt52):
(JSC::FTL::DFG::LowerDFGToB3::unboxInt32):
(JSC::FTL::DFG::LowerDFGToB3::boxInt32):
(JSC::FTL::DFG::LowerDFGToB3::isCellOrMisc):
(JSC::FTL::DFG::LowerDFGToB3::unboxDouble):
(JSC::FTL::DFG::LowerDFGToB3::boxDouble):
(JSC::FTL::DFG::LowerDFGToB3::jsValueToStrictInt52):
(JSC::FTL::DFG::LowerDFGToB3::doubleToStrictInt52):
(JSC::FTL::DFG::LowerDFGToB3::convertDoubleToInt32):
(JSC::FTL::DFG::LowerDFGToB3::callCheck):
(JSC::FTL::DFG::LowerDFGToB3::crash):
* ftl/FTLOutput.cpp:
(JSC::FTL::Output::bitCast):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (202791 => 202792)


--- trunk/Source/_javascript_Core/ChangeLog	2016-07-03 17:47:51 UTC (rev 202791)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-07-03 19:34:55 UTC (rev 202792)
@@ -1,3 +1,147 @@
+2016-07-03  Filip Pizlo  <[email protected]>
+
+        FTL should refer to B3 types directly
+        https://bugs.webkit.org/show_bug.cgi?id=159389
+
+        Reviewed by Saam Barati.
+        
+        When we used LLVM, types were objects that were allocated by the LLVMContext. We had to
+        remember pointers to them or else call through the C API every time we wanted the type. We
+        stored the type pointers inside FTL::CommonValues.
+        
+        But in B3, types are just members of an enum. We don't have to remember pointers to them.
+        
+        This change replaces all prior uses of things like "m_out.int32" with just "Int32", and
+        likewise for m_out.boolean, m_out.int64, m_out.intPtr, m_out.floatType, m_out.doubleType,
+        and m_out.voidType.
+        
+        We still use FTL::CommonValues for common constants that we have pre-hoisted. Hopefully we
+        will come up with a better story for those eventually, since that's still kinda ugly.
+
+        * ftl/FTLCommonValues.cpp:
+        (JSC::FTL::CommonValues::CommonValues):
+        * ftl/FTLCommonValues.h:
+        * ftl/FTLLowerDFGToB3.cpp:
+        (JSC::FTL::DFG::LowerDFGToB3::createPhiVariables):
+        (JSC::FTL::DFG::LowerDFGToB3::compileDoubleRep):
+        (JSC::FTL::DFG::LowerDFGToB3::compileBooleanToNumber):
+        (JSC::FTL::DFG::LowerDFGToB3::compileCallObjectConstructor):
+        (JSC::FTL::DFG::LowerDFGToB3::compileToThis):
+        (JSC::FTL::DFG::LowerDFGToB3::compileValueAdd):
+        (JSC::FTL::DFG::LowerDFGToB3::compileStrCat):
+        (JSC::FTL::DFG::LowerDFGToB3::compileArithMinOrMax):
+        (JSC::FTL::DFG::LowerDFGToB3::compileArithPow):
+        (JSC::FTL::DFG::LowerDFGToB3::compileArithRound):
+        (JSC::FTL::DFG::LowerDFGToB3::compileArrayifyToStructure):
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetById):
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetByIdWithThis):
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetByValWithThis):
+        (JSC::FTL::DFG::LowerDFGToB3::compilePutByIdWithThis):
+        (JSC::FTL::DFG::LowerDFGToB3::compilePutByValWithThis):
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage):
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetTypedArrayByteOffset):
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetArrayLength):
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetMyArgumentByVal):
+        (JSC::FTL::DFG::LowerDFGToB3::compilePutByVal):
+        (JSC::FTL::DFG::LowerDFGToB3::compilePutAccessorById):
+        (JSC::FTL::DFG::LowerDFGToB3::compilePutGetterSetterById):
+        (JSC::FTL::DFG::LowerDFGToB3::compilePutAccessorByVal):
+        (JSC::FTL::DFG::LowerDFGToB3::compileArrayPush):
+        (JSC::FTL::DFG::LowerDFGToB3::compileArrayPop):
+        (JSC::FTL::DFG::LowerDFGToB3::compileCreateActivation):
+        (JSC::FTL::DFG::LowerDFGToB3::compileNewFunction):
+        (JSC::FTL::DFG::LowerDFGToB3::compileCreateDirectArguments):
+        (JSC::FTL::DFG::LowerDFGToB3::compileCreateScopedArguments):
+        (JSC::FTL::DFG::LowerDFGToB3::compileCreateClonedArguments):
+        (JSC::FTL::DFG::LowerDFGToB3::compileCopyRest):
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetRestLength):
+        (JSC::FTL::DFG::LowerDFGToB3::compileNewObject):
+        (JSC::FTL::DFG::LowerDFGToB3::compileNewArray):
+        (JSC::FTL::DFG::LowerDFGToB3::compileNewArrayBuffer):
+        (JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSize):
+        (JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray):
+        (JSC::FTL::DFG::LowerDFGToB3::compileToNumber):
+        (JSC::FTL::DFG::LowerDFGToB3::compileToStringOrCallStringConstructor):
+        (JSC::FTL::DFG::LowerDFGToB3::compileToPrimitive):
+        (JSC::FTL::DFG::LowerDFGToB3::compileMakeRope):
+        (JSC::FTL::DFG::LowerDFGToB3::compileStringCharAt):
+        (JSC::FTL::DFG::LowerDFGToB3::compileStringCharCodeAt):
+        (JSC::FTL::DFG::LowerDFGToB3::compileStringFromCharCode):
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetByOffset):
+        (JSC::FTL::DFG::LowerDFGToB3::compileMultiGetByOffset):
+        (JSC::FTL::DFG::LowerDFGToB3::compilePutByOffset):
+        (JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
+        (JSC::FTL::DFG::LowerDFGToB3::compileLoadVarargs):
+        (JSC::FTL::DFG::LowerDFGToB3::compileForwardVarargs):
+        (JSC::FTL::DFG::LowerDFGToB3::compileSwitch):
+        (JSC::FTL::DFG::LowerDFGToB3::compileIsString):
+        (JSC::FTL::DFG::LowerDFGToB3::compileIsJSArray):
+        (JSC::FTL::DFG::LowerDFGToB3::compileIsObject):
+        (JSC::FTL::DFG::LowerDFGToB3::compileIsObjectOrNull):
+        (JSC::FTL::DFG::LowerDFGToB3::compileIsFunction):
+        (JSC::FTL::DFG::LowerDFGToB3::compileIsRegExpObject):
+        (JSC::FTL::DFG::LowerDFGToB3::compileIsTypedArrayView):
+        (JSC::FTL::DFG::LowerDFGToB3::compileTypeOf):
+        (JSC::FTL::DFG::LowerDFGToB3::compileIn):
+        (JSC::FTL::DFG::LowerDFGToB3::compileOverridesHasInstance):
+        (JSC::FTL::DFG::LowerDFGToB3::compileCheckTypeInfoFlags):
+        (JSC::FTL::DFG::LowerDFGToB3::compileInstanceOf):
+        (JSC::FTL::DFG::LowerDFGToB3::compileInstanceOfCustom):
+        (JSC::FTL::DFG::LowerDFGToB3::compileCountExecution):
+        (JSC::FTL::DFG::LowerDFGToB3::compileHasIndexedProperty):
+        (JSC::FTL::DFG::LowerDFGToB3::compileHasGenericProperty):
+        (JSC::FTL::DFG::LowerDFGToB3::compileHasStructureProperty):
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetDirectPname):
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetEnumerableLength):
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetPropertyEnumerator):
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetEnumeratorStructurePname):
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetEnumeratorGenericPname):
+        (JSC::FTL::DFG::LowerDFGToB3::compileToIndexString):
+        (JSC::FTL::DFG::LowerDFGToB3::compileCheckStructureImmediate):
+        (JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
+        (JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation):
+        (JSC::FTL::DFG::LowerDFGToB3::compileSetFunctionName):
+        (JSC::FTL::DFG::LowerDFGToB3::numberOrNotCellToInt32):
+        (JSC::FTL::DFG::LowerDFGToB3::checkInferredType):
+        (JSC::FTL::DFG::LowerDFGToB3::initializeArrayElements):
+        (JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorage):
+        (JSC::FTL::DFG::LowerDFGToB3::reallocatePropertyStorage):
+        (JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorageWithSizeImpl):
+        (JSC::FTL::DFG::LowerDFGToB3::getById):
+        (JSC::FTL::DFG::LowerDFGToB3::compare):
+        (JSC::FTL::DFG::LowerDFGToB3::compileResolveScope):
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetDynamicVar):
+        (JSC::FTL::DFG::LowerDFGToB3::compareEqObjectOrOtherToObject):
+        (JSC::FTL::DFG::LowerDFGToB3::speculateTruthyObject):
+        (JSC::FTL::DFG::LowerDFGToB3::nonSpeculativeCompare):
+        (JSC::FTL::DFG::LowerDFGToB3::stringsEqual):
+        (JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedObject):
+        (JSC::FTL::DFG::LowerDFGToB3::allocateObject):
+        (JSC::FTL::DFG::LowerDFGToB3::allocateJSArray):
+        (JSC::FTL::DFG::LowerDFGToB3::ensureShadowChickenPacket):
+        (JSC::FTL::DFG::LowerDFGToB3::boolify):
+        (JSC::FTL::DFG::LowerDFGToB3::equalNullOrUndefined):
+        (JSC::FTL::DFG::LowerDFGToB3::contiguousPutByValOutOfBounds):
+        (JSC::FTL::DFG::LowerDFGToB3::buildSwitch):
+        (JSC::FTL::DFG::LowerDFGToB3::switchStringSlow):
+        (JSC::FTL::DFG::LowerDFGToB3::doubleToInt32):
+        (JSC::FTL::DFG::LowerDFGToB3::sensibleDoubleToInt32):
+        (JSC::FTL::DFG::LowerDFGToB3::strictInt52ToJSValue):
+        (JSC::FTL::DFG::LowerDFGToB3::strictInt52ToInt52):
+        (JSC::FTL::DFG::LowerDFGToB3::unboxInt32):
+        (JSC::FTL::DFG::LowerDFGToB3::boxInt32):
+        (JSC::FTL::DFG::LowerDFGToB3::isCellOrMisc):
+        (JSC::FTL::DFG::LowerDFGToB3::unboxDouble):
+        (JSC::FTL::DFG::LowerDFGToB3::boxDouble):
+        (JSC::FTL::DFG::LowerDFGToB3::jsValueToStrictInt52):
+        (JSC::FTL::DFG::LowerDFGToB3::doubleToStrictInt52):
+        (JSC::FTL::DFG::LowerDFGToB3::convertDoubleToInt32):
+        (JSC::FTL::DFG::LowerDFGToB3::callCheck):
+        (JSC::FTL::DFG::LowerDFGToB3::crash):
+        * ftl/FTLOutput.cpp:
+        (JSC::FTL::Output::bitCast):
+
 2016-07-02  Filip Pizlo  <[email protected]>
 
         DFG LICM needs to go all-in on the idea that some loops can't be LICMed

Modified: trunk/Source/_javascript_Core/ftl/FTLCommonValues.cpp (202791 => 202792)


--- trunk/Source/_javascript_Core/ftl/FTLCommonValues.cpp	2016-07-03 17:47:51 UTC (rev 202791)
+++ trunk/Source/_javascript_Core/ftl/FTLCommonValues.cpp	2016-07-03 19:34:55 UTC (rev 202792)
@@ -42,13 +42,6 @@
 using namespace B3;
 
 CommonValues::CommonValues()
-    : voidType(B3::Void)
-    , boolean(B3::Int32)
-    , int32(B3::Int32)
-    , int64(B3::Int64)
-    , intPtr(B3::pointerType())
-    , floatType(B3::Float)
-    , doubleType(B3::Double)
 {
 }
 

Modified: trunk/Source/_javascript_Core/ftl/FTLCommonValues.h (202791 => 202792)


--- trunk/Source/_javascript_Core/ftl/FTLCommonValues.h	2016-07-03 17:47:51 UTC (rev 202791)
+++ trunk/Source/_javascript_Core/ftl/FTLCommonValues.h	2016-07-03 19:34:55 UTC (rev 202792)
@@ -46,13 +46,6 @@
 
     void initializeConstants(B3::Procedure&, B3::BasicBlock*);
     
-    const LType voidType;
-    const LType boolean;
-    const LType int32;
-    const LType int64;
-    const LType intPtr;
-    const LType floatType;
-    const LType doubleType;
     LValue booleanTrue { nullptr };
     LValue booleanFalse { nullptr };
     LValue int32Zero { nullptr };

Modified: trunk/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp (202791 => 202792)


--- trunk/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp	2016-07-03 17:47:51 UTC (rev 202791)
+++ trunk/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp	2016-07-03 19:34:55 UTC (rev 202792)
@@ -328,19 +328,19 @@
                 LType type;
                 switch (node->flags() & NodeResultMask) {
                 case NodeResultDouble:
-                    type = m_out.doubleType;
+                    type = Double;
                     break;
                 case NodeResultInt32:
-                    type = m_out.int32;
+                    type = Int32;
                     break;
                 case NodeResultInt52:
-                    type = m_out.int64;
+                    type = Int64;
                     break;
                 case NodeResultBoolean:
-                    type = m_out.boolean;
+                    type = Int32;
                     break;
                 case NodeResultJS:
-                    type = m_out.int64;
+                    type = Int64;
                     break;
                 default:
                     DFG_CRASH(m_graph, node, "Bad Phi node result type");
@@ -1157,7 +1157,7 @@
             
             m_out.appendTo(continuation, lastNext);
             
-            setDouble(m_out.phi(m_out.doubleType, fastResult, slowResult));
+            setDouble(m_out.phi(Double, fastResult, slowResult));
             return;
         }
             
@@ -1231,7 +1231,7 @@
                 m_out.jump(continuation);
 
                 m_out.appendTo(continuation, lastNext);
-                setDouble(m_out.phi(m_out.doubleType, intToDouble, unboxedDouble, convertedUndefined, convertedNull, convertedTrue, convertedFalse));
+                setDouble(m_out.phi(Double, intToDouble, unboxedDouble, convertedUndefined, convertedNull, convertedTrue, convertedFalse));
                 return;
             }
             m_out.appendTo(nonDoubleCase, continuation);
@@ -1240,7 +1240,7 @@
 
             m_out.appendTo(continuation, lastNext);
 
-            setDouble(m_out.phi(m_out.doubleType, intToDouble, unboxedDouble));
+            setDouble(m_out.phi(Double, intToDouble, unboxedDouble));
             return;
         }
             
@@ -1353,7 +1353,7 @@
     {
         switch (m_node->child1().useKind()) {
         case BooleanUse: {
-            setInt32(m_out.zeroExt(lowBoolean(m_node->child1()), m_out.int32));
+            setInt32(m_out.zeroExt(lowBoolean(m_node->child1()), Int32));
             return;
         }
             
@@ -1375,11 +1375,11 @@
             
             LBasicBlock lastNext = m_out.appendTo(booleanCase, continuation);
             ValueFromBlock booleanResult = m_out.anchor(m_out.bitOr(
-                m_out.zeroExt(unboxBoolean(value), m_out.int64), m_tagTypeNumber));
+                m_out.zeroExt(unboxBoolean(value), Int64), m_tagTypeNumber));
             m_out.jump(continuation);
             
             m_out.appendTo(continuation, lastNext);
-            setJSValue(m_out.phi(m_out.int64, booleanResult, notBooleanResult));
+            setJSValue(m_out.phi(Int64, booleanResult, notBooleanResult));
             return;
         }
             
@@ -1486,11 +1486,11 @@
         m_out.branch(isObject(value), usually(continuation), rarely(slowCase));
 
         m_out.appendTo(slowCase, continuation);
-        ValueFromBlock slowResult = m_out.anchor(vmCall(m_out.int64, m_out.operation(operationObjectConstructor), m_callFrame, m_out.constIntPtr(globalObject), value));
+        ValueFromBlock slowResult = m_out.anchor(vmCall(Int64, m_out.operation(operationObjectConstructor), m_callFrame, m_out.constIntPtr(globalObject), value));
         m_out.jump(continuation);
 
         m_out.appendTo(continuation, lastNext);
-        setJSValue(m_out.phi(m_out.int64, fastResult, slowResult));
+        setJSValue(m_out.phi(Int64, fastResult, slowResult));
     }
     
     void compileToThis()
@@ -1519,11 +1519,11 @@
         else
             function = operationToThis;
         ValueFromBlock slowResult = m_out.anchor(
-            vmCall(m_out.int64, m_out.operation(function), m_callFrame, value));
+            vmCall(Int64, m_out.operation(function), m_callFrame, value));
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        setJSValue(m_out.phi(m_out.int64, fastResult, slowResult));
+        setJSValue(m_out.phi(Int64, fastResult, slowResult));
     }
     
     void compileValueAdd()
@@ -1536,13 +1536,13 @@
         LValue result;
         if (m_node->child3()) {
             result = vmCall(
-                m_out.int64, m_out.operation(operationStrCat3), m_callFrame,
+                Int64, m_out.operation(operationStrCat3), m_callFrame,
                 lowJSValue(m_node->child1(), ManualOperandSpeculation),
                 lowJSValue(m_node->child2(), ManualOperandSpeculation),
                 lowJSValue(m_node->child3(), ManualOperandSpeculation));
         } else {
             result = vmCall(
-                m_out.int64, m_out.operation(operationStrCat2), m_callFrame,
+                Int64, m_out.operation(operationStrCat2), m_callFrame,
                 lowJSValue(m_node->child1(), ManualOperandSpeculation),
                 lowJSValue(m_node->child2(), ManualOperandSpeculation));
         }
@@ -1868,7 +1868,7 @@
             m_out.jump(continuation);
             
             m_out.appendTo(continuation, lastNext);
-            setDouble(m_out.phi(m_out.doubleType, results));
+            setDouble(m_out.phi(Double, results));
             break;
         }
             
@@ -2042,7 +2042,7 @@
             m_out.jump(continuation);
 
             m_out.appendTo(continuation, lastNext);
-            setDouble(m_out.phi(m_out.doubleType, powDoubleIntResult, zeroResultExponentIsOneHalf, sqrtResult, sqrtInfinityResult, oneOverSqrtZeroResult, oneOverSqrtResult, oneOverSqrtInfinityResult, powResult, pureNan));
+            setDouble(m_out.phi(Double, powDoubleIntResult, zeroResultExponentIsOneHalf, sqrtResult, sqrtInfinityResult, oneOverSqrtZeroResult, oneOverSqrtResult, oneOverSqrtInfinityResult, powResult, pureNan));
         }
     }
 
@@ -2118,7 +2118,7 @@
             m_out.jump(continuation);
             m_out.appendTo(continuation, lastNext);
 
-            result = m_out.phi(m_out.doubleType, integerValueResult, integerValueRoundedDownResult);
+            result = m_out.phi(Double, integerValueResult, integerValueRoundedDownResult);
         }
 
         if (producesInteger(m_node->arithRoundingMode())) {
@@ -2419,17 +2419,17 @@
         
         switch (m_node->arrayMode().type()) {
         case Array::Int32:
-            vmCall(m_out.voidType, m_out.operation(operationEnsureInt32), m_callFrame, cell);
+            vmCall(Void, m_out.operation(operationEnsureInt32), m_callFrame, cell);
             break;
         case Array::Double:
-            vmCall(m_out.voidType, m_out.operation(operationEnsureDouble), m_callFrame, cell);
+            vmCall(Void, m_out.operation(operationEnsureDouble), m_callFrame, cell);
             break;
         case Array::Contiguous:
-            vmCall(m_out.voidType, m_out.operation(operationEnsureContiguous), m_callFrame, cell);
+            vmCall(Void, m_out.operation(operationEnsureContiguous), m_callFrame, cell);
             break;
         case Array::ArrayStorage:
         case Array::SlowPutArrayStorage:
-            vmCall(m_out.voidType, m_out.operation(operationEnsureArrayStorage), m_callFrame, cell);
+            vmCall(Void, m_out.operation(operationEnsureArrayStorage), m_callFrame, cell);
             break;
         default:
             DFG_CRASH(m_graph, m_node, "Bad array type");
@@ -2495,13 +2495,13 @@
 
             m_out.appendTo(notCellCase, continuation);
             ValueFromBlock notCellResult = m_out.anchor(vmCall(
-                m_out.int64, m_out.operation(getByIdFunction),
+                Int64, m_out.operation(getByIdFunction),
                 m_callFrame, value,
                 m_out.constIntPtr(m_graph.identifiers()[m_node->identifierNumber()])));
             m_out.jump(continuation);
             
             m_out.appendTo(continuation, lastNext);
-            setJSValue(m_out.phi(m_out.int64, cellResult, notCellResult));
+            setJSValue(m_out.phi(Int64, cellResult, notCellResult));
             return;
         }
             
@@ -2515,7 +2515,7 @@
     {
         LValue base = lowJSValue(m_node->child1());
         LValue thisValue = lowJSValue(m_node->child2());
-        LValue result = vmCall(m_out.int64, m_out.operation(operationGetByIdWithThis), m_callFrame, base, thisValue, m_out.constIntPtr(m_graph.identifiers()[m_node->identifierNumber()]));
+        LValue result = vmCall(Int64, m_out.operation(operationGetByIdWithThis), m_callFrame, base, thisValue, m_out.constIntPtr(m_graph.identifiers()[m_node->identifierNumber()]));
         setJSValue(result);
     }
 
@@ -2525,7 +2525,7 @@
         LValue thisValue = lowJSValue(m_node->child2());
         LValue subscript = lowJSValue(m_node->child3());
 
-        LValue result = vmCall(m_out.int64, m_out.operation(operationGetByValWithThis), m_callFrame, base, thisValue, subscript);
+        LValue result = vmCall(Int64, m_out.operation(operationGetByValWithThis), m_callFrame, base, thisValue, subscript);
         setJSValue(result);
     }
 
@@ -2535,7 +2535,7 @@
         LValue thisValue = lowJSValue(m_node->child2());
         LValue value = lowJSValue(m_node->child3());
 
-        vmCall(m_out.voidType, m_out.operation(m_graph.isStrictModeFor(m_node->origin.semantic) ? operationPutByIdWithThisStrict : operationPutByIdWithThis),
+        vmCall(Void, m_out.operation(m_graph.isStrictModeFor(m_node->origin.semantic) ? operationPutByIdWithThisStrict : operationPutByIdWithThis),
             m_callFrame, base, thisValue, value, m_out.constIntPtr(m_graph.identifiers()[m_node->identifierNumber()]));
     }
 
@@ -2546,7 +2546,7 @@
         LValue property = lowJSValue(m_graph.varArgChild(m_node, 2));
         LValue value = lowJSValue(m_graph.varArgChild(m_node, 3));
 
-        vmCall(m_out.voidType, m_out.operation(m_graph.isStrictModeFor(m_node->origin.semantic) ? operationPutByValWithThisStrict : operationPutByValWithThis),
+        vmCall(Void, m_out.operation(m_graph.isStrictModeFor(m_node->origin.semantic) ? operationPutByValWithThisStrict : operationPutByValWithThis),
             m_callFrame, base, thisValue, property, value);
     }
     
@@ -2649,13 +2649,13 @@
             LBasicBlock lastNext = m_out.appendTo(slowPath, continuation);
             
             ValueFromBlock slowResult = m_out.anchor(
-                vmCall(m_out.intPtr, m_out.operation(operationResolveRope), m_callFrame, cell));
+                vmCall(pointerType(), m_out.operation(operationResolveRope), m_callFrame, cell));
             
             m_out.jump(continuation);
             
             m_out.appendTo(continuation, lastNext);
             
-            setStorage(m_out.loadPtr(m_out.phi(m_out.intPtr, fastResult, slowResult), m_heaps.StringImpl_data));
+            setStorage(m_out.loadPtr(m_out.phi(pointerType(), fastResult, slowResult), m_heaps.StringImpl_data));
             return;
         }
         
@@ -2706,7 +2706,7 @@
         m_out.jump(continuation);
         m_out.appendTo(continuation, lastNext);
 
-        setInt32(m_out.castToInt32(m_out.phi(m_out.intPtr, simpleOut, wastefulOut)));
+        setInt32(m_out.castToInt32(m_out.phi(pointerType(), simpleOut, wastefulOut)));
     }
     
     void compileGetArrayLength()
@@ -2807,11 +2807,11 @@
             
             m_out.appendTo(slowCase, continuation);
             ValueFromBlock slowResult = m_out.anchor(
-                vmCall(m_out.int64, m_out.operation(operationGetByValArrayInt), m_callFrame, base, index));
+                vmCall(Int64, m_out.operation(operationGetByValArrayInt), m_callFrame, base, index));
             m_out.jump(continuation);
             
             m_out.appendTo(continuation, lastNext);
-            setJSValue(m_out.phi(m_out.int64, fastResult, slowResult));
+            setJSValue(m_out.phi(Int64, fastResult, slowResult));
             return;
         }
             
@@ -2859,11 +2859,11 @@
             
             m_out.appendTo(slowCase, continuation);
             ValueFromBlock slowResult = m_out.anchor(
-                vmCall(m_out.int64, m_out.operation(operationGetByValArrayInt), m_callFrame, base, index));
+                vmCall(Int64, m_out.operation(operationGetByValArrayInt), m_callFrame, base, index));
             m_out.jump(continuation);
             
             m_out.appendTo(continuation, lastNext);
-            setJSValue(m_out.phi(m_out.int64, fastResult, slowResult));
+            setJSValue(m_out.phi(Int64, fastResult, slowResult));
             return;
         }
 
@@ -2943,13 +2943,13 @@
             m_out.jump(continuation);
             
             m_out.appendTo(continuation, lastNext);
-            setJSValue(m_out.phi(m_out.int64, namedResult, overflowResult));
+            setJSValue(m_out.phi(Int64, namedResult, overflowResult));
             return;
         }
             
         case Array::Generic: {
             setJSValue(vmCall(
-                m_out.int64, m_out.operation(operationGetByVal), m_callFrame,
+                Int64, m_out.operation(operationGetByVal), m_callFrame,
                 lowJSValue(m_node->child1()), lowJSValue(m_node->child2())));
             return;
         }
@@ -3003,7 +3003,7 @@
                     }
                     
                     if (m_node->shouldSpeculateAnyInt()) {
-                        setStrictInt52(m_out.zeroExt(result, m_out.int64));
+                        setStrictInt52(m_out.zeroExt(result, Int64));
                         return;
                     }
                     
@@ -3077,7 +3077,7 @@
         LValue result;
         if (base) {
             LValue pointer = m_out.baseIndex(
-                base.value(), m_out.zeroExt(index, m_out.intPtr), ScaleEight);
+                base.value(), m_out.zeroExt(index, pointerType()), ScaleEight);
             result = m_out.load64(TypedPointer(m_heaps.variables.atAnyIndex(), pointer));
         } else
             result = m_out.constInt64(JSValue::encode(jsUndefined()));
@@ -3117,7 +3117,7 @@
             }
                 
             vmCall(
-                m_out.voidType, m_out.operation(operation), m_callFrame,
+                Void, m_out.operation(operation), m_callFrame,
                 lowJSValue(child1), lowJSValue(child2), lowJSValue(child3));
             return;
         }
@@ -3209,7 +3209,7 @@
                     m_out.add(
                         storage,
                         m_out.shl(
-                            m_out.zeroExt(index, m_out.intPtr),
+                            m_out.zeroExt(index, pointerType()),
                             m_out.constIntPtr(logElementSize(type)))));
                 
                 Output::StoreType storeType;
@@ -3246,7 +3246,7 @@
                             m_out.jump(continuation);
                             
                             m_out.appendTo(continuation, lastNext);
-                            intValue = m_out.phi(m_out.int32, intValues);
+                            intValue = m_out.phi(Int32, intValues);
                         }
                         break;
                     }
@@ -3278,7 +3278,7 @@
                             m_out.jump(continuation);
                             
                             m_out.appendTo(continuation, lastNext);
-                            intValue = m_out.phi(m_out.int32, intValues);
+                            intValue = m_out.phi(Int32, intValues);
                         } else
                             intValue = doubleToInt32(doubleValue);
                         break;
@@ -3349,7 +3349,7 @@
         LValue accessor = lowCell(m_node->child2());
         auto uid = m_graph.identifiers()[m_node->identifierNumber()];
         vmCall(
-            m_out.voidType,
+            Void,
             m_out.operation(m_node->op() == PutGetterById ? operationPutGetterById : operationPutSetterById),
             m_callFrame, base, m_out.constIntPtr(uid), m_out.constInt32(m_node->accessorAttributes()), accessor);
     }
@@ -3361,7 +3361,7 @@
         LValue setter = lowJSValue(m_node->child3());
         auto uid = m_graph.identifiers()[m_node->identifierNumber()];
         vmCall(
-            m_out.voidType, m_out.operation(operationPutGetterSetter),
+            Void, m_out.operation(operationPutGetterSetter),
             m_callFrame, base, m_out.constIntPtr(uid), m_out.constInt32(m_node->accessorAttributes()), getter, setter);
 
     }
@@ -3372,7 +3372,7 @@
         LValue subscript = lowJSValue(m_node->child2());
         LValue accessor = lowCell(m_node->child3());
         vmCall(
-            m_out.voidType,
+            Void,
             m_out.operation(m_node->op() == PutGetterByVal ? operationPutGetterByVal : operationPutSetterByVal),
             m_callFrame, base, subscript, m_out.constInt32(m_node->accessorAttributes()), accessor);
     }
@@ -3433,11 +3433,11 @@
             else
                 operation = m_out.operation(operationArrayPushDouble);
             ValueFromBlock slowResult = m_out.anchor(
-                vmCall(m_out.int64, operation, m_callFrame, value, base));
+                vmCall(Int64, operation, m_callFrame, value, base));
             m_out.jump(continuation);
             
             m_out.appendTo(continuation, lastNext);
-            setJSValue(m_out.phi(m_out.int64, fastResult, slowResult));
+            setJSValue(m_out.phi(Int64, fastResult, slowResult));
             return;
         }
             
@@ -3490,11 +3490,11 @@
             
             m_out.appendTo(slowCase, continuation);
             results.append(m_out.anchor(vmCall(
-                m_out.int64, m_out.operation(operationArrayPopAndRecoverLength), m_callFrame, base)));
+                Int64, m_out.operation(operationArrayPopAndRecoverLength), m_callFrame, base)));
             m_out.jump(continuation);
             
             m_out.appendTo(continuation, lastNext);
-            setJSValue(m_out.phi(m_out.int64, results));
+            setJSValue(m_out.phi(Int64, results));
             return;
         }
 
@@ -3513,7 +3513,7 @@
         ASSERT(initializationValue.isUndefined() || initializationValue == jsTDZValue());
         if (table->singletonScope()->isStillValid()) {
             LValue callResult = vmCall(
-                m_out.int64,
+                Int64,
                 m_out.operation(operationCreateActivationDirect), m_callFrame, weakPointer(structure),
                 scope, weakPointer(table), m_out.constInt64(JSValue::encode(initializationValue)));
             setJSValue(callResult);
@@ -3556,7 +3556,7 @@
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        setJSValue(m_out.phi(m_out.intPtr, fastResult, slowResult));
+        setJSValue(m_out.phi(pointerType(), fastResult, slowResult));
     }
     
     void compileNewFunction()
@@ -3569,8 +3569,8 @@
         FunctionExecutable* executable = m_node->castOperand<FunctionExecutable*>();
         if (executable->singletonFunction()->isStillValid()) {
             LValue callResult =
-                isGeneratorFunction ? vmCall(m_out.int64, m_out.operation(operationNewGeneratorFunction), m_callFrame, scope, weakPointer(executable)) :
-                vmCall(m_out.int64, m_out.operation(operationNewFunction), m_callFrame, scope, weakPointer(executable));
+                isGeneratorFunction ? vmCall(Int64, m_out.operation(operationNewGeneratorFunction), m_callFrame, scope, weakPointer(executable)) :
+                vmCall(Int64, m_out.operation(operationNewFunction), m_callFrame, scope, weakPointer(executable));
             setJSValue(callResult);
             return;
         }
@@ -3620,7 +3620,7 @@
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        setJSValue(m_out.phi(m_out.intPtr, fastResult, slowResult));
+        setJSValue(m_out.phi(pointerType(), fastResult, slowResult));
     }
     
     void compileCreateDirectArguments()
@@ -3678,7 +3678,7 @@
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        LValue result = m_out.phi(m_out.intPtr, fastResult, slowResult);
+        LValue result = m_out.phi(pointerType(), fastResult, slowResult);
 
         m_out.storePtr(getCurrentCallee(), result, m_heaps.DirectArguments_callee);
         
@@ -3711,7 +3711,7 @@
             }
             
             lastNext = m_out.appendTo(loop, end);
-            LValue previousIndex = m_out.phi(m_out.intPtr, originalLength);
+            LValue previousIndex = m_out.phi(pointerType(), originalLength);
             LValue index = m_out.sub(previousIndex, m_out.intPtrOne);
             m_out.store64(
                 m_out.load64(m_out.baseIndex(m_heaps.variables, stackBase, index)),
@@ -3731,7 +3731,7 @@
         LValue scope = lowCell(m_node->child1());
         
         LValue result = vmCall(
-            m_out.int64, m_out.operation(operationCreateScopedArguments), m_callFrame,
+            Int64, m_out.operation(operationCreateScopedArguments), m_callFrame,
             weakPointer(
                 m_graph.globalObjectFor(m_node->origin.semantic)->scopedArgumentsStructure()),
             getArgumentsStart(), getArgumentsLength().value, getCurrentCallee(), scope);
@@ -3742,7 +3742,7 @@
     void compileCreateClonedArguments()
     {
         LValue result = vmCall(
-            m_out.int64, m_out.operation(operationCreateClonedArguments), m_callFrame,
+            Int64, m_out.operation(operationCreateClonedArguments), m_callFrame,
             weakPointer(
                 m_graph.globalObjectFor(m_node->origin.semantic)->clonedArgumentsStructure()),
             getArgumentsStart(), getArgumentsLength().value, getCurrentCallee());
@@ -3765,7 +3765,7 @@
         // Arguments: 0:exec, 1:JSCell* array, 2:arguments start, 3:number of arguments to skip, 4:array length
         LValue numberOfArgumentsToSkip = m_out.constInt32(m_node->numberOfArgumentsToSkip());
         vmCall(
-            m_out.voidType,m_out.operation(operationCopyRest), m_callFrame, lowCell(m_node->child1()),
+            Void,m_out.operation(operationCopyRest), m_callFrame, lowCell(m_node->child1()),
             getArgumentsStart(), numberOfArgumentsToSkip, arrayLength);
         m_out.jump(continuation);
 
@@ -3789,7 +3789,7 @@
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        setInt32(m_out.phi(m_out.int32, zeroLengthResult, nonZeroLengthResult));
+        setInt32(m_out.phi(Int32, zeroLengthResult, nonZeroLengthResult));
     }
     
     void compileNewObject()
@@ -3851,7 +3851,7 @@
         
         if (!m_node->numChildren()) {
             setJSValue(vmCall(
-                m_out.int64, m_out.operation(operationNewEmptyArray), m_callFrame,
+                Int64, m_out.operation(operationNewEmptyArray), m_callFrame,
                 m_out.constIntPtr(structure)));
             return;
         }
@@ -3872,7 +3872,7 @@
             m_out.constIntPtr(scratchSize), m_out.absolute(scratchBuffer->activeLengthPtr()));
         
         LValue result = vmCall(
-            m_out.int64, m_out.operation(operationNewArray), m_callFrame,
+            Int64, m_out.operation(operationNewArray), m_callFrame,
             m_out.constIntPtr(structure), m_out.constIntPtr(buffer),
             m_out.constIntPtr(m_node->numChildren()));
         
@@ -3911,7 +3911,7 @@
         }
         
         setJSValue(vmCall(
-            m_out.int64, m_out.operation(operationNewArrayBuffer), m_callFrame,
+            Int64, m_out.operation(operationNewArrayBuffer), m_callFrame,
             m_out.constIntPtr(structure), m_out.constIntPtr(m_node->startConstant()),
             m_out.constIntPtr(m_node->numConstants())));
     }
@@ -3947,7 +3947,7 @@
             LValue vectorLength = publicLength;
             
             LValue payloadSize =
-                m_out.shl(m_out.zeroExt(vectorLength, m_out.intPtr), m_out.constIntPtr(3));
+                m_out.shl(m_out.zeroExt(vectorLength, pointerType()), m_out.constIntPtr(3));
             
             LValue butterflySize = m_out.add(
                 payloadSize, m_out.constIntPtr(sizeof(IndexingHeader)));
@@ -3977,7 +3977,7 @@
             
             m_out.appendTo(slowCase, continuation);
             LValue structureValue = m_out.phi(
-                m_out.intPtr, largeStructure, failStructure);
+                pointerType(), largeStructure, failStructure);
             LValue slowResultValue = lazySlowPath(
                 [=] (const Vector<Location>& locations) -> RefPtr<LazySlowPath::Generator> {
                     return createLazyCallGenerator(
@@ -3989,7 +3989,7 @@
             m_out.jump(continuation);
             
             m_out.appendTo(continuation, lastNext);
-            setJSValue(m_out.phi(m_out.intPtr, fastResult, slowResult));
+            setJSValue(m_out.phi(pointerType(), fastResult, slowResult));
             return;
         }
         
@@ -3998,7 +3998,7 @@
             m_out.constIntPtr(
                 globalObject->arrayStructureForIndexingTypeDuringAllocation(ArrayWithArrayStorage)),
             m_out.constIntPtr(structure));
-        setJSValue(vmCall(m_out.int64, m_out.operation(operationNewArrayWithSize), m_callFrame, structureValue, publicLength));
+        setJSValue(vmCall(Int64, m_out.operation(operationNewArrayWithSize), m_callFrame, structureValue, publicLength));
     }
 
     void compileNewTypedArray()
@@ -4060,7 +4060,7 @@
             m_out.jump(continuation);
 
             m_out.appendTo(continuation, lastNext);
-            setJSValue(m_out.phi(m_out.intPtr, fastResult, slowResult));
+            setJSValue(m_out.phi(pointerType(), fastResult, slowResult));
             return;
         }
 
@@ -4068,7 +4068,7 @@
             LValue argument = lowJSValue(m_node->child1());
 
             LValue result = vmCall(
-                m_out.intPtr, m_out.operation(operationNewTypedArrayWithOneArgumentForType(type)),
+                pointerType(), m_out.operation(operationNewTypedArrayWithOneArgumentForType(type)),
                 m_callFrame, weakPointer(globalObject->typedArrayStructureConcurrently(type)), argument);
 
             setJSValue(result);
@@ -4103,7 +4103,7 @@
         LValue value = lowJSValue(m_node->child1());
 
         if (!(abstractValue(m_node->child1()).m_type & SpecBytecodeNumber))
-            setJSValue(vmCall(m_out.int64, m_out.operation(operationToNumber), m_callFrame, value));
+            setJSValue(vmCall(Int64, m_out.operation(operationToNumber), m_callFrame, value));
         else {
             LBasicBlock notNumber = m_out.newBlock();
             LBasicBlock continuation = m_out.newBlock();
@@ -4116,12 +4116,12 @@
             // We have several attempts to remove ToNumber. But ToNumber still exists.
             // It means that converting non-numbers to numbers by this ToNumber is not rare.
             // Instead of the lazy slow path generator, we call the operation here.
-            ValueFromBlock slowResult = m_out.anchor(vmCall(m_out.int64, m_out.operation(operationToNumber), m_callFrame, value));
+            ValueFromBlock slowResult = m_out.anchor(vmCall(Int64, m_out.operation(operationToNumber), m_callFrame, value));
             m_out.jump(continuation);
 
             // continuation case.
             m_out.appendTo(continuation, lastNext);
-            setJSValue(m_out.phi(m_out.int64, fastResult, slowResult));
+            setJSValue(m_out.phi(Int64, fastResult, slowResult));
         }
     }
     
@@ -4156,7 +4156,7 @@
             m_out.jump(continuation);
             
             m_out.appendTo(continuation, lastNext);
-            setJSValue(m_out.phi(m_out.int64, simpleResult, unboxedResult));
+            setJSValue(m_out.phi(Int64, simpleResult, unboxedResult));
             
             m_interpreter.filter(m_node->child1(), SpecString | SpecStringObject);
             return;
@@ -4196,11 +4196,11 @@
                 operation = m_out.operation(m_node->op() == ToString ? operationToStringOnCell : operationCallStringConstructorOnCell);
             else
                 operation = m_out.operation(m_node->op() == ToString ? operationToString : operationCallStringConstructor);
-            ValueFromBlock convertedResult = m_out.anchor(vmCall(m_out.int64, operation, m_callFrame, value));
+            ValueFromBlock convertedResult = m_out.anchor(vmCall(Int64, operation, m_callFrame, value));
             m_out.jump(continuation);
             
             m_out.appendTo(continuation, lastNext);
-            setJSValue(m_out.phi(m_out.int64, simpleResult, convertedResult));
+            setJSValue(m_out.phi(Int64, simpleResult, convertedResult));
             return;
         }
             
@@ -4232,11 +4232,11 @@
         
         m_out.appendTo(isObjectCase, continuation);
         results.append(m_out.anchor(vmCall(
-            m_out.int64, m_out.operation(operationToPrimitive), m_callFrame, value)));
+            Int64, m_out.operation(operationToPrimitive), m_callFrame, value)));
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        setJSValue(m_out.phi(m_out.int64, results));
+        setJSValue(m_out.phi(Int64, results));
     }
     
     void compileMakeRope()
@@ -4315,7 +4315,7 @@
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        setJSValue(m_out.phi(m_out.int64, fastResult, slowResult));
+        setJSValue(m_out.phi(Int64, fastResult, slowResult));
     }
     
     void compileStringCharAt()
@@ -4371,13 +4371,13 @@
             
         Vector<ValueFromBlock, 4> results;
         results.append(m_out.anchor(vmCall(
-            m_out.int64, m_out.operation(operationSingleCharacterString),
+            Int64, m_out.operation(operationSingleCharacterString),
             m_callFrame, char16BitValue)));
         m_out.jump(continuation);
             
         m_out.appendTo(bitsContinuation, slowPath);
             
-        LValue character = m_out.phi(m_out.int32, char8Bit, char16Bit);
+        LValue character = m_out.phi(Int32, char8Bit, char16Bit);
             
         LValue smallStrings = m_out.constIntPtr(vm().smallStrings.singleCharacterStrings());
             
@@ -4417,13 +4417,13 @@
             }
                 
             results.append(m_out.anchor(vmCall(
-                m_out.int64, m_out.operation(operationGetByValStringInt), m_callFrame, base, index)));
+                Int64, m_out.operation(operationGetByValStringInt), m_callFrame, base, index)));
         }
             
         m_out.jump(continuation);
             
         m_out.appendTo(continuation, lastNext);
-        setJSValue(m_out.phi(m_out.int64, results));
+        setJSValue(m_out.phi(Int64, results));
     }
     
     void compileStringCharCodeAt()
@@ -4467,7 +4467,7 @@
         
         m_out.appendTo(continuation, lastNext);
         
-        setInt32(m_out.phi(m_out.int32, char8Bit, char16Bit));
+        setInt32(m_out.phi(Int32, char8Bit, char16Bit));
     }
 
     void compileStringFromCharCode()
@@ -4476,7 +4476,7 @@
         
         if (childEdge.useKind() == UntypedUse) {
             LValue result = vmCall(
-                m_out.int64, m_out.operation(operationStringFromCharCodeUntyped), m_callFrame,
+                Int64, m_out.operation(operationStringFromCharCodeUntyped), m_callFrame,
                 lowJSValue(childEdge));
             setJSValue(result);
             return;
@@ -4505,13 +4505,13 @@
         m_out.appendTo(slowCase, continuation);
 
         LValue slowResultValue = vmCall(
-            m_out.intPtr, m_out.operation(operationStringFromCharCode), m_callFrame, value);
+            pointerType(), m_out.operation(operationStringFromCharCode), m_callFrame, value);
         ValueFromBlock slowResult = m_out.anchor(slowResultValue);
         m_out.jump(continuation);
 
         m_out.appendTo(continuation, lastNext);
 
-        setJSValue(m_out.phi(m_out.int64, fastResult, slowResult));
+        setJSValue(m_out.phi(Int64, fastResult, slowResult));
     }
     
     void compileGetByOffset()
@@ -4609,7 +4609,7 @@
         m_out.unreachable();
         
         m_out.appendTo(continuation, lastNext);
-        setJSValue(m_out.phi(m_out.int64, results));
+        setJSValue(m_out.phi(Int64, results));
     }
     
     void compilePutByOffset()
@@ -4880,7 +4880,7 @@
             m_out.jump(continuation);
 
             m_out.appendTo(continuation, lastNext);
-            setBoolean(m_out.phi(m_out.boolean, fastResult, slowResult));
+            setBoolean(m_out.phi(Int32, fastResult, slowResult));
             return;
         }
 
@@ -4972,7 +4972,7 @@
             m_out.jump(continuation);
             
             m_out.appendTo(continuation, lastNext);
-            setBoolean(m_out.phi(m_out.boolean, notCellResult, notStringResult, isStringResult));
+            setBoolean(m_out.phi(Int32, notCellResult, notStringResult, isStringResult));
             return;
         }
         
@@ -5543,7 +5543,7 @@
         LValue jsArguments = lowJSValue(m_node->child1());
         
         LValue length = vmCall(
-            m_out.int32, m_out.operation(operationSizeOfVarargs), m_callFrame, jsArguments,
+            Int32, m_out.operation(operationSizeOfVarargs), m_callFrame, jsArguments,
             m_out.constInt32(data->offset));
         
         // FIXME: There is a chance that we will call an effectful length property twice. This is safe
@@ -5567,7 +5567,7 @@
             m_out.constIntPtr(3));
         
         vmCall(
-            m_out.voidType, m_out.operation(operationLoadVarargs), m_callFrame,
+            Void, m_out.operation(operationLoadVarargs), m_callFrame,
             m_out.castToInt32(machineStart), jsArguments, m_out.constInt32(data->offset),
             length, m_out.constInt32(data->mandatoryMinimum));
     }
@@ -5605,7 +5605,7 @@
             m_out.above(loopBoundValue, lengthAsPtr), unsure(undefinedLoop), unsure(mainLoopEntry));
         
         LBasicBlock lastNext = m_out.appendTo(undefinedLoop, mainLoopEntry);
-        LValue previousIndex = m_out.phi(m_out.intPtr, loopBound);
+        LValue previousIndex = m_out.phi(pointerType(), loopBound);
         LValue currentIndex = m_out.sub(previousIndex, m_out.intPtrOne);
         m_out.store64(
             m_out.constInt64(JSValue::encode(jsUndefined())),
@@ -5620,7 +5620,7 @@
         m_out.branch(m_out.notNull(lengthAsPtr), unsure(mainLoop), unsure(continuation));
         
         m_out.appendTo(mainLoop, continuation);
-        previousIndex = m_out.phi(m_out.intPtr, loopBound);
+        previousIndex = m_out.phi(pointerType(), loopBound);
         currentIndex = m_out.sub(previousIndex, m_out.intPtrOne);
         LValue value = m_out.load64(
             m_out.baseIndex(
@@ -5702,7 +5702,7 @@
             }
             
             m_out.appendTo(switchOnInts, lastNext);
-            buildSwitch(data, m_out.int32, m_out.phi(m_out.int32, intValues));
+            buildSwitch(data, Int32, m_out.phi(Int32, intValues));
             return;
         }
         
@@ -5768,11 +5768,11 @@
             
             m_out.appendTo(needResolution, resolved);
             values.append(m_out.anchor(
-                vmCall(m_out.intPtr, m_out.operation(operationResolveRope), m_callFrame, stringValue)));
+                vmCall(pointerType(), m_out.operation(operationResolveRope), m_callFrame, stringValue)));
             m_out.jump(resolved);
             
             m_out.appendTo(resolved, is8Bit);
-            LValue value = m_out.phi(m_out.intPtr, values);
+            LValue value = m_out.phi(pointerType(), values);
             LValue characterData = m_out.loadPtr(value, m_heaps.StringImpl_data);
             m_out.branch(
                 m_out.testNonZero32(
@@ -5790,7 +5790,7 @@
             m_out.jump(continuation);
             
             m_out.appendTo(continuation, lastNext);
-            buildSwitch(data, m_out.int32, m_out.phi(m_out.int32, characters));
+            buildSwitch(data, Int32, m_out.phi(Int32, characters));
             return;
         }
         
@@ -5871,7 +5871,7 @@
                 return;
             }
             
-            buildSwitch(m_node->switchData(), m_out.intPtr, cell);
+            buildSwitch(m_node->switchData(), pointerType(), cell);
             return;
         } }
         
@@ -5984,7 +5984,7 @@
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        setBoolean(m_out.phi(m_out.boolean, notCellResult, cellResult));
+        setBoolean(m_out.phi(Int32, notCellResult, cellResult));
     }
 
     void compileIsJSArray()
@@ -6003,7 +6003,7 @@
         m_out.jump(continuation);
 
         m_out.appendTo(continuation, lastNext);
-        setBoolean(m_out.phi(m_out.boolean, notCellResult, cellResult));
+        setBoolean(m_out.phi(Int32, notCellResult, cellResult));
     }
 
     void compileIsObject()
@@ -6022,7 +6022,7 @@
         m_out.jump(continuation);
 
         m_out.appendTo(continuation, lastNext);
-        setBoolean(m_out.phi(m_out.boolean, notCellResult, cellResult));
+        setBoolean(m_out.phi(Int32, notCellResult, cellResult));
     }
 
     void compileIsObjectOrNull()
@@ -6076,7 +6076,7 @@
         
         m_out.appendTo(continuation, lastNext);
         LValue result = m_out.phi(
-            m_out.boolean,
+            Int32,
             isFunctionResult, notObjectResult, objectResult, slowResult, notCellResult);
         setBoolean(result);
     }
@@ -6121,7 +6121,7 @@
         
         m_out.appendTo(continuation, lastNext);
         LValue result = m_out.phi(
-            m_out.boolean, notCellResult, functionResult, objectResult, slowResult);
+            Int32, notCellResult, functionResult, objectResult, slowResult);
         setBoolean(result);
     }
 
@@ -6141,7 +6141,7 @@
         m_out.jump(continuation);
 
         m_out.appendTo(continuation, lastNext);
-        setBoolean(m_out.phi(m_out.boolean, notCellResult, cellResult));
+        setBoolean(m_out.phi(Int32, notCellResult, cellResult));
     }
 
     void compileIsTypedArrayView()
@@ -6159,7 +6159,7 @@
         m_out.jump(continuation);
 
         m_out.appendTo(continuation, lastNext);
-        setBoolean(m_out.phi(m_out.boolean, notCellResult, cellResult));
+        setBoolean(m_out.phi(Int32, notCellResult, cellResult));
     }
 
     void compileTypeOf()
@@ -6180,7 +6180,7 @@
             });
         
         m_out.appendTo(continuation, lastNext);
-        setJSValue(m_out.phi(m_out.int64, results));
+        setJSValue(m_out.phi(Int64, results));
     }
     
     void compileIn()
@@ -6260,7 +6260,7 @@
             }
         } 
 
-        setJSValue(vmCall(m_out.int64, m_out.operation(operationGenericIn), m_callFrame, cell, lowJSValue(m_node->child1())));
+        setJSValue(vmCall(Int64, m_out.operation(operationGenericIn), m_callFrame, cell, lowJSValue(m_node->child1())));
     }
 
     void compileOverridesHasInstance()
@@ -6287,7 +6287,7 @@
         m_out.jump(continuation);
 
         m_out.appendTo(continuation, lastNext);
-        setBoolean(m_out.phi(m_out.boolean, implementsDefaultHasInstanceResult, notDefaultHasInstanceResult));
+        setBoolean(m_out.phi(Int32, implementsDefaultHasInstanceResult, notDefaultHasInstanceResult));
     }
 
     void compileCheckTypeInfoFlags()
@@ -6334,7 +6334,7 @@
         m_out.jump(loop);
         
         m_out.appendTo(loop, loadPrototypeDirect);
-        LValue value = m_out.phi(m_out.int64, originalValue);
+        LValue value = m_out.phi(Int64, originalValue);
         LValue type = m_out.load8ZeroExt32(value, m_heaps.JSCell_typeInfoType);
         m_out.branch(
             m_out.notEqual(type, m_out.constInt32(ProxyObjectType)),
@@ -6358,12 +6358,12 @@
         // can just continue off from wherever we bailed from the
         // loop.
         ValueFromBlock defaultHasInstanceResult = m_out.anchor(
-            vmCall(m_out.boolean, m_out.operation(operationDefaultHasInstance), m_callFrame, value, prototype));
+            vmCall(Int32, m_out.operation(operationDefaultHasInstance), m_callFrame, value, prototype));
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
         setBoolean(
-            m_out.phi(m_out.boolean, notCellResult, isInstanceResult, notInstanceResult, defaultHasInstanceResult));
+            m_out.phi(Int32, notCellResult, isInstanceResult, notInstanceResult, defaultHasInstanceResult));
     }
 
     void compileInstanceOfCustom()
@@ -6372,7 +6372,7 @@
         LValue constructor = lowCell(m_node->child2());
         LValue hasInstance = lowJSValue(m_node->child3());
 
-        setBoolean(m_out.logicalNot(m_out.equal(m_out.constInt32(0), vmCall(m_out.int32, m_out.operation(operationInstanceOfCustom), m_callFrame, value, constructor, hasInstance))));
+        setBoolean(m_out.logicalNot(m_out.equal(m_out.constInt32(0), vmCall(Int32, m_out.operation(operationInstanceOfCustom), m_callFrame, value, constructor, hasInstance))));
     }
     
     void compileCountExecution()
@@ -6419,11 +6419,11 @@
             m_out.appendTo(slowCase, continuation);
             ValueFromBlock slowResult = m_out.anchor(m_out.equal(
                 m_out.constInt64(JSValue::encode(jsBoolean(true))), 
-                vmCall(m_out.int64, m_out.operation(operationHasIndexedProperty), m_callFrame, base, index)));
+                vmCall(Int64, m_out.operation(operationHasIndexedProperty), m_callFrame, base, index)));
             m_out.jump(continuation);
 
             m_out.appendTo(continuation, lastNext);
-            setBoolean(m_out.phi(m_out.boolean, checkHoleResult, slowResult));
+            setBoolean(m_out.phi(Int32, checkHoleResult, slowResult));
             return;
         }
         case Array::Double: {
@@ -6454,11 +6454,11 @@
             m_out.appendTo(slowCase, continuation);
             ValueFromBlock slowResult = m_out.anchor(m_out.equal(
                 m_out.constInt64(JSValue::encode(jsBoolean(true))), 
-                vmCall(m_out.int64, m_out.operation(operationHasIndexedProperty), m_callFrame, base, index)));
+                vmCall(Int64, m_out.operation(operationHasIndexedProperty), m_callFrame, base, index)));
             m_out.jump(continuation);
             
             m_out.appendTo(continuation, lastNext);
-            setBoolean(m_out.phi(m_out.boolean, checkHoleResult, slowResult));
+            setBoolean(m_out.phi(Int32, checkHoleResult, slowResult));
             return;
         }
             
@@ -6472,7 +6472,7 @@
     {
         LValue base = lowJSValue(m_node->child1());
         LValue property = lowCell(m_node->child2());
-        setJSValue(vmCall(m_out.int64, m_out.operation(operationHasGenericProperty), m_callFrame, base, property));
+        setJSValue(vmCall(Int64, m_out.operation(operationHasGenericProperty), m_callFrame, base, property));
     }
 
     void compileHasStructureProperty()
@@ -6498,11 +6498,11 @@
         ValueFromBlock wrongStructureResult = m_out.anchor(
             m_out.equal(
                 m_out.constInt64(JSValue::encode(jsBoolean(true))), 
-                vmCall(m_out.int64, m_out.operation(operationHasGenericProperty), m_callFrame, base, property)));
+                vmCall(Int64, m_out.operation(operationHasGenericProperty), m_callFrame, base, property)));
         m_out.jump(continuation);
 
         m_out.appendTo(continuation, lastNext);
-        setBoolean(m_out.phi(m_out.boolean, correctStructureResult, wrongStructureResult));
+        setBoolean(m_out.phi(Int32, correctStructureResult, wrongStructureResult));
     }
 
     void compileGetDirectPname()
@@ -6530,7 +6530,7 @@
         m_out.appendTo(inlineLoad, outOfLineLoad);
         ValueFromBlock inlineResult = m_out.anchor(
             m_out.load64(m_out.baseIndex(m_heaps.properties.atAnyNumber(), 
-                base, m_out.zeroExt(index, m_out.int64), ScaleEight, JSObject::offsetOfInlineStorage())));
+                base, m_out.zeroExt(index, Int64), ScaleEight, JSObject::offsetOfInlineStorage())));
         m_out.jump(continuation);
 
         m_out.appendTo(outOfLineLoad, slowCase);
@@ -6544,11 +6544,11 @@
 
         m_out.appendTo(slowCase, continuation);
         ValueFromBlock slowCaseResult = m_out.anchor(
-            vmCall(m_out.int64, m_out.operation(operationGetByVal), m_callFrame, base, property));
+            vmCall(Int64, m_out.operation(operationGetByVal), m_callFrame, base, property));
         m_out.jump(continuation);
 
         m_out.appendTo(continuation, lastNext);
-        setJSValue(m_out.phi(m_out.int64, inlineResult, outOfLineResult, slowCaseResult));
+        setJSValue(m_out.phi(Int64, inlineResult, outOfLineResult, slowCaseResult));
     }
 
     void compileGetEnumerableLength()
@@ -6560,7 +6560,7 @@
     void compileGetPropertyEnumerator()
     {
         LValue base = lowCell(m_node->child1());
-        setJSValue(vmCall(m_out.int64, m_out.operation(operationGetPropertyEnumerator), m_callFrame, base));
+        setJSValue(vmCall(Int64, m_out.operation(operationGetPropertyEnumerator), m_callFrame, base));
     }
 
     void compileGetEnumeratorStructurePname()
@@ -6586,7 +6586,7 @@
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        setJSValue(m_out.phi(m_out.int64, inBoundsResult, outOfBoundsResult));
+        setJSValue(m_out.phi(Int64, inBoundsResult, outOfBoundsResult));
     }
 
     void compileGetEnumeratorGenericPname()
@@ -6612,13 +6612,13 @@
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        setJSValue(m_out.phi(m_out.int64, inBoundsResult, outOfBoundsResult));
+        setJSValue(m_out.phi(Int64, inBoundsResult, outOfBoundsResult));
     }
     
     void compileToIndexString()
     {
         LValue index = lowInt32(m_node->child1());
-        setJSValue(vmCall(m_out.int64, m_out.operation(operationToIndexString), m_callFrame, index));
+        setJSValue(vmCall(Int64, m_out.operation(operationToIndexString), m_callFrame, index));
     }
     
     void compileCheckStructureImmediate()
@@ -6758,8 +6758,8 @@
                 
                 m_out.appendTo(continuation, lastNext);
                 
-                object = m_out.phi(m_out.intPtr, fastObject, slowObject);
-                butterfly = m_out.phi(m_out.intPtr, fastButterfly, slowButterfly);
+                object = m_out.phi(pointerType(), fastObject, slowObject);
+                butterfly = m_out.phi(pointerType(), fastButterfly, slowButterfly);
 
                 m_out.store32(publicLength, butterfly, m_heaps.Butterfly_publicLength);
 
@@ -6894,7 +6894,7 @@
         m_out.unreachable();
         
         m_out.appendTo(outerContinuation, outerLastNext);
-        setJSValue(m_out.phi(m_out.intPtr, results));
+        setJSValue(m_out.phi(pointerType(), results));
     }
 
     void compileMaterializeCreateActivation()
@@ -6943,7 +6943,7 @@
         m_out.jump(continuation);
 
         m_out.appendTo(continuation, lastNext);
-        LValue activation = m_out.phi(m_out.intPtr, fastResult, slowResult);
+        LValue activation = m_out.phi(pointerType(), fastResult, slowResult);
         RELEASE_ASSERT(data.m_properties.size() == table->scopeSize());
         for (unsigned i = 0; i < data.m_properties.size(); ++i) {
             PromotedLocationDescriptor descriptor = data.m_properties[i];
@@ -7073,7 +7073,7 @@
 
     void compileSetFunctionName()
     {
-        vmCall(m_out.voidType, m_out.operation(operationSetFunctionName), m_callFrame,
+        vmCall(Void, m_out.operation(operationSetFunctionName), m_callFrame,
             lowCell(m_node->child1()), lowJSValue(m_node->child2()));
     }
     
@@ -7332,7 +7332,7 @@
         }
         
         m_out.appendTo(continuation, lastNext);
-        return m_out.phi(m_out.int32, results);
+        return m_out.phi(Int32, results);
     }
 
     void checkInferredType(Edge edge, LValue value, const InferredType::Descriptor& type)
@@ -7528,8 +7528,8 @@
             m_out.notZero32(vectorLength), unsure(initLoop), unsure(initDone));
         
         LBasicBlock initLastNext = m_out.appendTo(initLoop, initDone);
-        LValue index = m_out.phi(m_out.int32, originalIndex);
-        LValue pointer = m_out.phi(m_out.intPtr, originalPointer);
+        LValue index = m_out.phi(Int32, originalIndex);
+        LValue pointer = m_out.phi(pointerType(), originalPointer);
         
         m_out.store64(
             m_out.constInt64(bitwise_cast<int64_t>(PNaN)),
@@ -7548,7 +7548,7 @@
     {
         if (previousStructure->couldHaveIndexingHeader()) {
             return vmCall(
-                m_out.intPtr,
+                pointerType(),
                 m_out.operation(
                     operationReallocateButterflyToHavePropertyStorageWithInitialCapacity),
                 m_callFrame, object);
@@ -7569,7 +7569,7 @@
         
         if (previous->couldHaveIndexingHeader()) {
             LValue newAllocSize = m_out.constIntPtr(newSize);                    
-            return vmCall(m_out.intPtr, m_out.operation(operationReallocateButterflyToGrowPropertyStorage), m_callFrame, object, newAllocSize);
+            return vmCall(pointerType(), m_out.operation(operationReallocateButterflyToGrowPropertyStorage), m_callFrame, object, newAllocSize);
         }
         
         LValue result = allocatePropertyStorageWithSizeImpl(newSize);
@@ -7627,7 +7627,7 @@
         
         m_out.appendTo(continuation, lastNext);
         
-        return m_out.phi(m_out.intPtr, fastButterfly, slowButterfly);
+        return m_out.phi(pointerType(), fastButterfly, slowButterfly);
     }
     
     LValue getById(LValue base, AccessType type)
@@ -7751,7 +7751,7 @@
         if (m_node->isBinaryUseKind(StringIdentUse)) {
             LValue left = lowStringIdent(m_node->child1());
             LValue right = lowStringIdent(m_node->child2());
-            setBoolean(m_out.callWithoutSideEffects(m_out.boolean, stringIdentFunction, left, right));
+            setBoolean(m_out.callWithoutSideEffects(Int32, stringIdentFunction, left, right));
             return;
         }
 
@@ -7762,7 +7762,7 @@
             speculateString(m_node->child2(), right);
 
             LValue result = vmCall(
-                m_out.boolean, m_out.operation(stringFunction),
+                Int32, m_out.operation(stringFunction),
                 m_callFrame, left, right);
             setBoolean(result);
             return;
@@ -7779,7 +7779,7 @@
     void compileResolveScope()
     {
         UniquedStringImpl* uid = m_graph.identifiers()[m_node->identifierNumber()];
-        setJSValue(vmCall(m_out.intPtr, m_out.operation(operationResolveScope),
+        setJSValue(vmCall(pointerType(), m_out.operation(operationResolveScope),
             m_callFrame, lowCell(m_node->child1()), m_out.constIntPtr(uid)));
     }
 
@@ -7786,7 +7786,7 @@
     void compileGetDynamicVar()
     {
         UniquedStringImpl* uid = m_graph.identifiers()[m_node->identifierNumber()];
-        setJSValue(vmCall(m_out.int64, m_out.operation(operationGetDynamicVar),
+        setJSValue(vmCall(Int64, m_out.operation(operationGetDynamicVar),
             m_callFrame, lowCell(m_node->child1()), m_out.constIntPtr(uid), m_out.constInt32(m_node->getPutInfo())));
     }
 
@@ -7836,7 +7836,7 @@
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        setBoolean(m_out.phi(m_out.boolean, cellResult, notCellResult));
+        setBoolean(m_out.phi(Int32, cellResult, notCellResult));
     }
     
     void speculateTruthyObject(Edge edge, LValue cell, SpeculatedType filter)
@@ -7876,11 +7876,11 @@
         
         m_out.appendTo(slowPath, continuation);
         ValueFromBlock slowResult = m_out.anchor(m_out.notNull(vmCall(
-            m_out.intPtr, m_out.operation(helperFunction), m_callFrame, left, right)));
+            pointerType(), m_out.operation(helperFunction), m_callFrame, left, right)));
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        setBoolean(m_out.phi(m_out.boolean, fastResult, slowResult));
+        setBoolean(m_out.phi(Int32, fastResult, slowResult));
     }
 
     LValue stringsEqual(LValue leftJSString, LValue rightJSString)
@@ -7946,7 +7946,7 @@
 
         m_out.appendTo(loop, bytesEqual);
 
-        LValue indexAtLoopTop = m_out.phi(m_out.int32, indexAtStart);
+        LValue indexAtLoopTop = m_out.phi(Int32, indexAtStart);
         LValue indexInLoop = m_out.sub(indexAtLoopTop, m_out.int32One);
 
         LValue leftByte = m_out.load8ZeroExt32(
@@ -7975,13 +7975,13 @@
         m_out.appendTo(slowCase, continuation);
 
         LValue slowResultValue = vmCall(
-            m_out.int64, m_out.operation(operationCompareStringEq), m_callFrame,
+            Int64, m_out.operation(operationCompareStringEq), m_callFrame,
             leftJSString, rightJSString);
         ValueFromBlock slowResult = m_out.anchor(unboxBoolean(slowResultValue));
         m_out.jump(continuation);
 
         m_out.appendTo(continuation, lastNext);
-        return m_out.phi(m_out.boolean, trueResult, falseResult, slowResult);
+        return m_out.phi(Int32, trueResult, falseResult, slowResult);
     }
 
     enum ScratchFPRUsage {
@@ -8267,7 +8267,7 @@
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        LValue allocator = m_out.phi(m_out.intPtr, smallAllocator, largeAllocator);
+        LValue allocator = m_out.phi(pointerType(), smallAllocator, largeAllocator);
         
         return allocateObject(allocator, structure, butterfly, slowPath);
     }
@@ -8325,7 +8325,7 @@
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        return m_out.phi(m_out.intPtr, fastResult, slowResult);
+        return m_out.phi(pointerType(), fastResult, slowResult);
     }
     
     struct ArrayValues {
@@ -8409,8 +8409,8 @@
         m_out.appendTo(continuation, lastNext);
         
         return ArrayValues(
-            m_out.phi(m_out.intPtr, fastArray, slowArray),
-            m_out.phi(m_out.intPtr, fastButterfly, slowButterfly));
+            m_out.phi(pointerType(), fastArray, slowArray),
+            m_out.phi(pointerType(), fastButterfly, slowButterfly));
     }
     
     LValue ensureShadowChickenPacket()
@@ -8584,7 +8584,7 @@
             m_out.jump(continuation);
             
             m_out.appendTo(continuation, lastNext);
-            return m_out.phi(m_out.boolean, results);
+            return m_out.phi(Int32, results);
         }
         default:
             DFG_CRASH(m_graph, m_node, "Bad use kind");
@@ -8679,7 +8679,7 @@
         
         m_out.appendTo(continuation, lastNext);
         
-        return m_out.phi(m_out.boolean, results);
+        return m_out.phi(Int32, results);
     }
     
     template<typename FunctionType>
@@ -8715,7 +8715,7 @@
                 LBasicBlock innerLastNext = m_out.appendTo(outOfBoundsCase, holeCase);
                     
                 vmCall(
-                    m_out.voidType, m_out.operation(slowPathFunction),
+                    Void, m_out.operation(slowPathFunction),
                     m_callFrame, base, index, value);
                     
                 m_out.jump(continuation);
@@ -8734,16 +8734,16 @@
     
     void buildSwitch(SwitchData* data, LType type, LValue switchValue)
     {
-        ASSERT(type == m_out.intPtr || type == m_out.int32);
+        ASSERT(type == pointerType() || type == Int32);
 
         Vector<SwitchCase> cases;
         for (unsigned i = 0; i < data->cases.size(); ++i) {
             SwitchCase newCase;
 
-            if (type == m_out.intPtr) {
+            if (type == pointerType()) {
                 newCase = SwitchCase(m_out.constIntPtr(data->cases[i].value.switchLookupValue(data->kind)),
                     lowBlock(data->cases[i].target.block), Weight(data->cases[i].target.count));
-            } else if (type == m_out.int32) {
+            } else if (type == Int32) {
                 newCase = SwitchCase(m_out.constInt32(data->cases[i].value.switchLookupValue(data->kind)),
                     lowBlock(data->cases[i].target.block), Weight(data->cases[i].target.count));
             } else
@@ -8991,7 +8991,7 @@
         // https://bugs.webkit.org/show_bug.cgi?id=144369
         
         LValue branchOffset = vmCall(
-            m_out.int32, m_out.operation(operationSwitchStringAndGetBranchOffset),
+            Int32, m_out.operation(operationSwitchStringAndGetBranchOffset),
             m_callFrame, m_out.constIntPtr(data->switchTableIndex), string);
         
         StringJumpTable& table = codeBlock()->stringSwitchJumpTable(data->switchTableIndex);
@@ -9216,11 +9216,11 @@
         m_out.jump(continuation);
         
         m_out.appendTo(slowPath, continuation);
-        results.append(m_out.anchor(m_out.call(m_out.int32, m_out.operation(operationToInt32), doubleValue)));
+        results.append(m_out.anchor(m_out.call(Int32, m_out.operation(operationToInt32), doubleValue)));
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        return m_out.phi(m_out.int32, results);
+        return m_out.phi(Int32, results);
     }
     
     LValue doubleToInt32(LValue doubleValue)
@@ -9245,11 +9245,11 @@
         
         LBasicBlock lastNext = m_out.appendTo(slowPath, continuation);
         ValueFromBlock slowResult = m_out.anchor(
-            m_out.call(m_out.int32, m_out.operation(operationToInt32), doubleValue));
+            m_out.call(Int32, m_out.operation(operationToInt32), doubleValue));
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        return m_out.phi(m_out.int32, fastResult, slowResult);
+        return m_out.phi(Int32, fastResult, slowResult);
     }
 
     // This is a mechanism for creating a code generator that fills in a gap in the code using our
@@ -9771,7 +9771,7 @@
         m_out.jump(continuation);
         
         m_out.appendTo(continuation, lastNext);
-        return m_out.phi(m_out.int64, results);
+        return m_out.phi(Int64, results);
     }
     
     LValue strictInt52ToInt52(LValue value)
@@ -9802,7 +9802,7 @@
     }
     LValue boxInt32(LValue value)
     {
-        return m_out.add(m_out.zeroExt(value, m_out.int64), m_tagTypeNumber);
+        return m_out.add(m_out.zeroExt(value, Int64), m_tagTypeNumber);
     }
     
     LValue isCellOrMisc(LValue jsValue, SpeculatedType type = SpecFullTop)
@@ -9820,11 +9820,11 @@
 
     LValue unboxDouble(LValue jsValue)
     {
-        return m_out.bitCast(m_out.add(jsValue, m_tagTypeNumber), m_out.doubleType);
+        return m_out.bitCast(m_out.add(jsValue, m_tagTypeNumber), Double);
     }
     LValue boxDouble(LValue doubleValue)
     {
-        return m_out.sub(m_out.bitCast(doubleValue, m_out.int64), m_tagTypeNumber);
+        return m_out.sub(m_out.bitCast(doubleValue, Int64), m_tagTypeNumber);
     }
     
     LValue jsValueToStrictInt52(Edge edge, LValue boxedValue)
@@ -9851,7 +9851,7 @@
         m_out.appendTo(doubleCase, continuation);
         
         LValue possibleResult = m_out.call(
-            m_out.int64, m_out.operation(operationConvertBoxedDoubleToInt52), boxedValue);
+            Int64, m_out.operation(operationConvertBoxedDoubleToInt52), boxedValue);
         FTL_TYPE_CHECK(
             jsValueValue(boxedValue), edge, SpecInt32Only | SpecAnyIntAsDouble,
             m_out.equal(possibleResult, m_out.constInt64(JSValue::notInt52)));
@@ -9861,13 +9861,13 @@
             
         m_out.appendTo(continuation, lastNext);
             
-        return m_out.phi(m_out.int64, intToInt52, doubleToInt52);
+        return m_out.phi(Int64, intToInt52, doubleToInt52);
     }
     
     LValue doubleToStrictInt52(Edge edge, LValue value)
     {
         LValue possibleResult = m_out.call(
-            m_out.int64, m_out.operation(operationConvertDoubleToInt52), value);
+            Int64, m_out.operation(operationConvertDoubleToInt52), value);
         FTL_TYPE_CHECK_WITH_EXIT_KIND(Int52Overflow,
             doubleValue(value), edge, SpecAnyIntAsDouble,
             m_out.equal(possibleResult, m_out.constInt64(JSValue::notInt52)));
@@ -9889,7 +9889,7 @@
 
             LBasicBlock lastNext = m_out.appendTo(valueIsZero, continuation);
 
-            LValue doubleBitcastToInt64 = m_out.bitCast(value, m_out.int64);
+            LValue doubleBitcastToInt64 = m_out.bitCast(value, Int64);
             LValue signBitSet = m_out.lessThan(doubleBitcastToInt64, m_out.constInt64(0));
 
             speculate(NegativeZero, FormattedValue(DataFormatDouble, value), m_node, signBitSet);
@@ -10708,7 +10708,7 @@
     void callCheck()
     {
         if (Options::useExceptionFuzz())
-            m_out.call(m_out.voidType, m_out.operation(operationExceptionFuzz), m_callFrame);
+            m_out.call(Void, m_out.operation(operationExceptionFuzz), m_callFrame);
         
         LValue exception = m_out.load64(m_out.absolute(vm().addressOfException()));
         LValue hadException = m_out.notZero64(exception);
@@ -11294,7 +11294,7 @@
             });
 #else
         m_out.call(
-            m_out.voidType,
+            Void,
             m_out.constIntPtr(ftlUnreachable),
             m_out.constIntPtr(codeBlock()), m_out.constInt32(blockIndex),
             m_out.constInt32(nodeIndex));

Modified: trunk/Source/_javascript_Core/ftl/FTLOutput.cpp (202791 => 202792)


--- trunk/Source/_javascript_Core/ftl/FTLOutput.cpp	2016-07-03 17:47:51 UTC (rev 202791)
+++ trunk/Source/_javascript_Core/ftl/FTLOutput.cpp	2016-07-03 19:34:55 UTC (rev 202792)
@@ -649,7 +649,7 @@
 
 LValue Output::bitCast(LValue value, LType type)
 {
-    ASSERT_UNUSED(type, type == int64 || type == doubleType);
+    ASSERT_UNUSED(type, type == Int64 || type == Double);
     return m_block->appendNew<B3::Value>(m_proc, B3::BitwiseCast, origin(), value);
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to