PredictedType should be called SpeculatedType
https://bugs.webkit.org/show_bug.cgi?id=88477

Rubber stamped by Gavin Barraclough.

* CMakeLists.txt:
* GNUmakefile.list.am:
* JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Target.pri:
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::shouldOptimizeNow):
(JSC::CodeBlock::dumpValueProfiles):
* bytecode/CodeBlock.h:
(JSC::CodeBlock::valueProfilePredictionForBytecodeOffset):
* bytecode/LazyOperandValueProfile.cpp:
(JSC::LazyOperandValueProfileParser::prediction):
* bytecode/LazyOperandValueProfile.h:
(LazyOperandValueProfileParser):
* bytecode/PredictedType.cpp: Removed.
* bytecode/PredictedType.h: Removed.
* bytecode/SpeculatedType.cpp: Copied from Source/JavaScriptCore/bytecode/PredictedType.cpp.
(JSC::speculationToString):
(JSC::speculationToAbbreviatedString):
(JSC::speculationFromClassInfo):
(JSC::speculationFromStructure):
(JSC::speculationFromCell):
(JSC::speculationFromValue):
* bytecode/SpeculatedType.h: Copied from Source/JavaScriptCore/bytecode/PredictedType.h.
(JSC):
(JSC::isAnySpeculation):
(JSC::isCellSpeculation):
(JSC::isObjectSpeculation):
(JSC::isFinalObjectSpeculation):
(JSC::isFinalObjectOrOtherSpeculation):
(JSC::isFixedIndexedStorageObjectSpeculation):
(JSC::isStringSpeculation):
(JSC::isArraySpeculation):
(JSC::isFunctionSpeculation):
(JSC::isInt8ArraySpeculation):
(JSC::isInt16ArraySpeculation):
(JSC::isInt32ArraySpeculation):
(JSC::isUint8ArraySpeculation):
(JSC::isUint8ClampedArraySpeculation):
(JSC::isUint16ArraySpeculation):
(JSC::isUint32ArraySpeculation):
(JSC::isFloat32ArraySpeculation):
(JSC::isFloat64ArraySpeculation):
(JSC::isArgumentsSpeculation):
(JSC::isActionableIntMutableArraySpeculation):
(JSC::isActionableFloatMutableArraySpeculation):
(JSC::isActionableTypedMutableArraySpeculation):
(JSC::isActionableMutableArraySpeculation):
(JSC::isActionableArraySpeculation):
(JSC::isArrayOrOtherSpeculation):
(JSC::isMyArgumentsSpeculation):
(JSC::isInt32Speculation):
(JSC::isDoubleRealSpeculation):
(JSC::isDoubleSpeculation):
(JSC::isNumberSpeculation):
(JSC::isBooleanSpeculation):
(JSC::isOtherSpeculation):
(JSC::isEmptySpeculation):
(JSC::mergeSpeculations):
(JSC::mergeSpeculation):
* bytecode/StructureSet.h:
(JSC::StructureSet::speculationFromStructures):
* bytecode/ValueProfile.h:
(JSC::ValueProfileBase::ValueProfileBase):
(JSC::ValueProfileBase::dump):
(JSC::ValueProfileBase::computeUpdatedPrediction):
(ValueProfileBase):
* dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::initialize):
(JSC::DFG::AbstractState::execute):
(JSC::DFG::AbstractState::mergeStateAtTail):
* dfg/DFGAbstractState.h:
(JSC::DFG::AbstractState::speculateInt32Unary):
(JSC::DFG::AbstractState::speculateNumberUnary):
(JSC::DFG::AbstractState::speculateBooleanUnary):
(JSC::DFG::AbstractState::speculateInt32Binary):
(JSC::DFG::AbstractState::speculateNumberBinary):
* dfg/DFGAbstractValue.h:
(JSC::DFG::StructureAbstractValue::filter):
(JSC::DFG::StructureAbstractValue::speculationFromStructures):
(JSC::DFG::AbstractValue::AbstractValue):
(JSC::DFG::AbstractValue::clear):
(JSC::DFG::AbstractValue::isClear):
(JSC::DFG::AbstractValue::makeTop):
(JSC::DFG::AbstractValue::clobberStructures):
(JSC::DFG::AbstractValue::isTop):
(JSC::DFG::AbstractValue::set):
(JSC::DFG::AbstractValue::merge):
(JSC::DFG::AbstractValue::filter):
(JSC::DFG::AbstractValue::validateIgnoringValue):
(JSC::DFG::AbstractValue::validate):
(JSC::DFG::AbstractValue::checkConsistency):
(JSC::DFG::AbstractValue::dump):
(AbstractValue):
* dfg/DFGArgumentPosition.h:
(JSC::DFG::ArgumentPosition::ArgumentPosition):
(JSC::DFG::ArgumentPosition::mergeArgumentAwareness):
(JSC::DFG::ArgumentPosition::prediction):
(ArgumentPosition):
* dfg/DFGArgumentsSimplificationPhase.cpp:
(JSC::DFG::ArgumentsSimplificationPhase::run):
* dfg/DFGByteCodeParser.cpp:
(ByteCodeParser):
(JSC::DFG::ByteCodeParser::injectLazyOperandSpeculation):
(JSC::DFG::ByteCodeParser::getLocal):
(JSC::DFG::ByteCodeParser::getArgument):
(JSC::DFG::ByteCodeParser::addCall):
(JSC::DFG::ByteCodeParser::getSpeculationWithoutOSRExit):
(JSC::DFG::ByteCodeParser::getSpeculation):
(InlineStackEntry):
(JSC::DFG::ByteCodeParser::handleCall):
(JSC::DFG::ByteCodeParser::handleIntrinsic):
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::fixVariableAccessSpeculations):
(JSC::DFG::ByteCodeParser::parse):
* dfg/DFGCSEPhase.cpp:
(JSC::DFG::CSEPhase::getIndexedPropertyStorageLoadElimination):
(JSC::DFG::CSEPhase::performNodeCSE):
* dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::run):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::fixDoubleEdge):
* dfg/DFGGraph.cpp:
(JSC::DFG::Graph::nameOfVariableAccessData):
(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::predictArgumentTypes):
* dfg/DFGGraph.h:
(JSC::DFG::Graph::getJSConstantSpeculation):
(JSC::DFG::Graph::isPredictedNumerical):
(JSC::DFG::Graph::byValIsPure):
* dfg/DFGJITCompiler.h:
(JSC::DFG::JITCompiler::getSpeculation):
* dfg/DFGNode.h:
(JSC::DFG::Node::Node):
(JSC::DFG::Node::getHeapPrediction):
(JSC::DFG::Node::predictHeap):
(JSC::DFG::Node::prediction):
(JSC::DFG::Node::predict):
(JSC::DFG::Node::shouldSpeculateInteger):
(JSC::DFG::Node::shouldSpeculateDouble):
(JSC::DFG::Node::shouldSpeculateNumber):
(JSC::DFG::Node::shouldSpeculateBoolean):
(JSC::DFG::Node::shouldSpeculateFinalObject):
(JSC::DFG::Node::shouldSpeculateFinalObjectOrOther):
(JSC::DFG::Node::shouldSpeculateArray):
(JSC::DFG::Node::shouldSpeculateArguments):
(JSC::DFG::Node::shouldSpeculateInt8Array):
(JSC::DFG::Node::shouldSpeculateInt16Array):
(JSC::DFG::Node::shouldSpeculateInt32Array):
(JSC::DFG::Node::shouldSpeculateUint8Array):
(JSC::DFG::Node::shouldSpeculateUint8ClampedArray):
(JSC::DFG::Node::shouldSpeculateUint16Array):
(JSC::DFG::Node::shouldSpeculateUint32Array):
(JSC::DFG::Node::shouldSpeculateFloat32Array):
(JSC::DFG::Node::shouldSpeculateFloat64Array):
(JSC::DFG::Node::shouldSpeculateArrayOrOther):
(JSC::DFG::Node::shouldSpeculateObject):
(JSC::DFG::Node::shouldSpeculateCell):
(Node):
* dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::setPrediction):
(JSC::DFG::PredictionPropagationPhase::mergePrediction):
(JSC::DFG::PredictionPropagationPhase::propagate):
(JSC::DFG::PredictionPropagationPhase::doRoundOfDoubleVoting):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::fillStorage):
(JSC::DFG::SpeculativeJIT::writeBarrier):
(JSC::DFG::GPRTemporary::GPRTemporary):
(JSC::DFG::FPRTemporary::FPRTemporary):
(JSC::DFG::SpeculativeJIT::compilePeepHoleDoubleBranch):
(JSC::DFG::SpeculativeJIT::compilePeepHoleObjectEquality):
(JSC::DFG::SpeculativeJIT::compilePeepHoleBranch):
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::checkArgumentTypes):
(JSC::DFG::SpeculativeJIT::compileGetCharCodeAt):
(JSC::DFG::SpeculativeJIT::compileGetByValOnString):
(JSC::DFG::SpeculativeJIT::compileValueToInt32):
(JSC::DFG::SpeculativeJIT::compileDoubleAsInt32):
(JSC::DFG::SpeculativeJIT::compileInt32ToDouble):
(JSC::DFG::SpeculativeJIT::compileGetTypedArrayLength):
(JSC::DFG::SpeculativeJIT::compileGetByValOnIntTypedArray):
(JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray):
(JSC::DFG::SpeculativeJIT::compileGetByValOnFloatTypedArray):
(JSC::DFG::SpeculativeJIT::compilePutByValForFloatTypedArray):
(JSC::DFG::SpeculativeJIT::compileInstanceOf):
(JSC::DFG::SpeculativeJIT::compileAdd):
(JSC::DFG::SpeculativeJIT::compileArithSub):
(JSC::DFG::SpeculativeJIT::compileArithNegate):
(JSC::DFG::SpeculativeJIT::compileArithMul):
(JSC::DFG::SpeculativeJIT::compileArithMod):
(JSC::DFG::SpeculativeJIT::compare):
(JSC::DFG::SpeculativeJIT::compileStrictEq):
(JSC::DFG::SpeculativeJIT::compileGetIndexedPropertyStorage):
(JSC::DFG::SpeculativeJIT::compileGetByValOnArguments):
(JSC::DFG::SpeculativeJIT::compileGetArgumentsLength):
(JSC::DFG::SpeculativeJIT::compileRegExpExec):
* dfg/DFGSpeculativeJIT.h:
(DFG):
(JSC::DFG::ValueSource::forSpeculation):
(SpeculativeJIT):
(GPRTemporary):
(FPRTemporary):
(JSC::DFG::SpecDoubleOperand::SpecDoubleOperand):
(JSC::DFG::SpecDoubleOperand::~SpecDoubleOperand):
(JSC::DFG::SpecDoubleOperand::fpr):
(JSC::DFG::SpecCellOperand::SpecCellOperand):
(JSC::DFG::SpecCellOperand::~SpecCellOperand):
(JSC::DFG::SpecCellOperand::gpr):
(JSC::DFG::SpecBooleanOperand::SpecBooleanOperand):
(JSC::DFG::SpecBooleanOperand::~SpecBooleanOperand):
(JSC::DFG::SpecBooleanOperand::gpr):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
(JSC::DFG::SpeculativeJIT::fillSpecDouble):
(JSC::DFG::SpeculativeJIT::fillSpecCell):
(JSC::DFG::SpeculativeJIT::fillSpecBoolean):
(JSC::DFG::SpeculativeJIT::compileObjectEquality):
(JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compileDoubleCompare):
(JSC::DFG::SpeculativeJIT::compileLogicalNot):
(JSC::DFG::SpeculativeJIT::emitBranch):
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
(JSC::DFG::SpeculativeJIT::fillSpecDouble):
(JSC::DFG::SpeculativeJIT::fillSpecCell):
(JSC::DFG::SpeculativeJIT::fillSpecBoolean):
(JSC::DFG::SpeculativeJIT::compileObjectEquality):
(JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compileDoubleCompare):
(JSC::DFG::SpeculativeJIT::compileLogicalNot):
(JSC::DFG::SpeculativeJIT::emitBranch):
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGVariableAccessData.h:
(JSC::DFG::VariableAccessData::VariableAccessData):
(JSC::DFG::VariableAccessData::predict):
(JSC::DFG::VariableAccessData::nonUnifiedPrediction):
(JSC::DFG::VariableAccessData::prediction):
(JSC::DFG::VariableAccessData::argumentAwarePrediction):
(JSC::DFG::VariableAccessData::mergeArgumentAwarePrediction):
(JSC::DFG::VariableAccessData::shouldUseDoubleFormatAccordingToVote):
(JSC::DFG::VariableAccessData::makePredictionForDoubleFormat):
(VariableAccessData):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@119660 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/JavaScriptCore/dfg/DFGAbstractState.cpp b/Source/JavaScriptCore/dfg/DFGAbstractState.cpp
index 38f1270..4186120 100644
--- a/Source/JavaScriptCore/dfg/DFGAbstractState.cpp
+++ b/Source/JavaScriptCore/dfg/DFGAbstractState.cpp
@@ -99,31 +99,31 @@
             continue;
         }
         
-        PredictedType prediction = node.variableAccessData()->prediction();
-        if (isInt32Prediction(prediction))
-            root->valuesAtHead.argument(i).set(PredictInt32);
-        else if (isArrayPrediction(prediction))
-            root->valuesAtHead.argument(i).set(PredictArray);
-        else if (isBooleanPrediction(prediction))
-            root->valuesAtHead.argument(i).set(PredictBoolean);
-        else if (isInt8ArrayPrediction(prediction))
-            root->valuesAtHead.argument(i).set(PredictInt8Array);
-        else if (isInt16ArrayPrediction(prediction))
-            root->valuesAtHead.argument(i).set(PredictInt16Array);
-        else if (isInt32ArrayPrediction(prediction))
-            root->valuesAtHead.argument(i).set(PredictInt32Array);
-        else if (isUint8ArrayPrediction(prediction))
-            root->valuesAtHead.argument(i).set(PredictUint8Array);
-        else if (isUint8ClampedArrayPrediction(prediction))
-            root->valuesAtHead.argument(i).set(PredictUint8ClampedArray);
-        else if (isUint16ArrayPrediction(prediction))
-            root->valuesAtHead.argument(i).set(PredictUint16Array);
-        else if (isUint32ArrayPrediction(prediction))
-            root->valuesAtHead.argument(i).set(PredictUint32Array);
-        else if (isFloat32ArrayPrediction(prediction))
-            root->valuesAtHead.argument(i).set(PredictFloat32Array);
-        else if (isFloat64ArrayPrediction(prediction))
-            root->valuesAtHead.argument(i).set(PredictFloat64Array);
+        SpeculatedType prediction = node.variableAccessData()->prediction();
+        if (isInt32Speculation(prediction))
+            root->valuesAtHead.argument(i).set(SpecInt32);
+        else if (isArraySpeculation(prediction))
+            root->valuesAtHead.argument(i).set(SpecArray);
+        else if (isBooleanSpeculation(prediction))
+            root->valuesAtHead.argument(i).set(SpecBoolean);
+        else if (isInt8ArraySpeculation(prediction))
+            root->valuesAtHead.argument(i).set(SpecInt8Array);
+        else if (isInt16ArraySpeculation(prediction))
+            root->valuesAtHead.argument(i).set(SpecInt16Array);
+        else if (isInt32ArraySpeculation(prediction))
+            root->valuesAtHead.argument(i).set(SpecInt32Array);
+        else if (isUint8ArraySpeculation(prediction))
+            root->valuesAtHead.argument(i).set(SpecUint8Array);
+        else if (isUint8ClampedArraySpeculation(prediction))
+            root->valuesAtHead.argument(i).set(SpecUint8ClampedArray);
+        else if (isUint16ArraySpeculation(prediction))
+            root->valuesAtHead.argument(i).set(SpecUint16Array);
+        else if (isUint32ArraySpeculation(prediction))
+            root->valuesAtHead.argument(i).set(SpecUint32Array);
+        else if (isFloat32ArraySpeculation(prediction))
+            root->valuesAtHead.argument(i).set(SpecFloat32Array);
+        else if (isFloat64ArraySpeculation(prediction))
+            root->valuesAtHead.argument(i).set(SpecFloat64Array);
         else
             root->valuesAtHead.argument(i).makeTop();
         
@@ -238,7 +238,7 @@
     case GetLocal: {
         VariableAccessData* variableAccessData = node.variableAccessData();
         bool canExit = false;
-        canExit |= variableAccessData->prediction() == PredictNone;
+        canExit |= variableAccessData->prediction() == SpecNone;
         AbstractValue value = m_variables.operand(variableAccessData->local());
         if (!variableAccessData->isCaptured()) {
             if (value.isClear())
@@ -269,17 +269,17 @@
         
         if (node.variableAccessData()->shouldUseDoubleFormat()) {
             speculateNumberUnary(node);
-            m_variables.operand(node.local()).set(PredictDouble);
+            m_variables.operand(node.local()).set(SpecDouble);
             break;
         }
         
-        PredictedType predictedType = node.variableAccessData()->argumentAwarePrediction();
-        if (isInt32Prediction(predictedType))
+        SpeculatedType predictedType = node.variableAccessData()->argumentAwarePrediction();
+        if (isInt32Speculation(predictedType))
             speculateInt32Unary(node);
-        else if (isArrayPrediction(predictedType)) {
-            node.setCanExit(!isArrayPrediction(forNode(node.child1()).m_type));
-            forNode(node.child1()).filter(PredictArray);
-        } else if (isBooleanPrediction(predictedType))
+        else if (isArraySpeculation(predictedType)) {
+            node.setCanExit(!isArraySpeculation(forNode(node.child1()).m_type));
+            forNode(node.child1()).filter(SpecArray);
+        } else if (isBooleanSpeculation(predictedType))
             speculateBooleanUnary(node);
         else
             node.setCanExit(false);
@@ -332,7 +332,7 @@
             break;
         }
         speculateInt32Binary(node);
-        forNode(nodeIndex).set(PredictInt32);
+        forNode(nodeIndex).set(SpecInt32);
         break;
     }
         
@@ -346,10 +346,10 @@
             break;
         }
         if (!node.canSpeculateInteger()) {
-            forNode(nodeIndex).set(PredictDouble);
+            forNode(nodeIndex).set(SpecDouble);
             node.setCanExit(false);
         } else {
-            forNode(nodeIndex).set(PredictInt32);
+            forNode(nodeIndex).set(SpecInt32);
             node.setCanExit(true);
         }
         break;
@@ -368,8 +368,8 @@
             }
         }
         node.setCanExit(true);
-        forNode(node.child1()).filter(PredictNumber);
-        forNode(nodeIndex).set(PredictInt32);
+        forNode(node.child1()).filter(SpecNumber);
+        forNode(nodeIndex).set(SpecInt32);
         break;
     }
             
@@ -393,7 +393,7 @@
         else
             node.setCanExit(false);
         
-        forNode(nodeIndex).set(PredictInt32);
+        forNode(nodeIndex).set(SpecInt32);
         break;
     }
         
@@ -406,12 +406,12 @@
             break;
         }
         speculateNumberUnary(node);
-        forNode(nodeIndex).set(PredictDouble);
+        forNode(nodeIndex).set(SpecDouble);
         break;
     }
         
     case CheckNumber:
-        forNode(node.child1()).filter(PredictNumber);
+        forNode(node.child1()).filter(SpecNumber);
         break;
             
     case ValueAdd:
@@ -427,17 +427,17 @@
         if (m_graph.addShouldSpeculateInteger(node)) {
             speculateInt32Binary(
                 node, !nodeCanTruncateInteger(node.arithNodeFlags()));
-            forNode(nodeIndex).set(PredictInt32);
+            forNode(nodeIndex).set(SpecInt32);
             break;
         }
         if (Node::shouldSpeculateNumber(m_graph[node.child1()], m_graph[node.child2()])) {
             speculateNumberBinary(node);
-            forNode(nodeIndex).set(PredictDouble);
+            forNode(nodeIndex).set(SpecDouble);
             break;
         }
         if (node.op() == ValueAdd) {
             clobberWorld(node.codeOrigin, indexInBlock);
-            forNode(nodeIndex).set(PredictString | PredictInt32 | PredictNumber);
+            forNode(nodeIndex).set(SpecString | SpecInt32 | SpecNumber);
             node.setCanExit(false);
             break;
         }
@@ -459,11 +459,11 @@
         if (m_graph.addShouldSpeculateInteger(node)) {
             speculateInt32Binary(
                 node, !nodeCanTruncateInteger(node.arithNodeFlags()));
-            forNode(nodeIndex).set(PredictInt32);
+            forNode(nodeIndex).set(SpecInt32);
             break;
         }
         speculateNumberBinary(node);
-        forNode(nodeIndex).set(PredictDouble);
+        forNode(nodeIndex).set(SpecDouble);
         break;
     }
         
@@ -478,11 +478,11 @@
         if (m_graph.negateShouldSpeculateInteger(node)) {
             speculateInt32Unary(
                 node, !nodeCanTruncateInteger(node.arithNodeFlags()));
-            forNode(nodeIndex).set(PredictInt32);
+            forNode(nodeIndex).set(SpecInt32);
             break;
         }
         speculateNumberUnary(node);
-        forNode(nodeIndex).set(PredictDouble);
+        forNode(nodeIndex).set(SpecDouble);
         break;
     }
         
@@ -500,11 +500,11 @@
                 node,
                 !nodeCanTruncateInteger(node.arithNodeFlags())
                 || !nodeCanIgnoreNegativeZero(node.arithNodeFlags()));
-            forNode(nodeIndex).set(PredictInt32);
+            forNode(nodeIndex).set(SpecInt32);
             break;
         }
         speculateNumberBinary(node);
-        forNode(nodeIndex).set(PredictDouble);
+        forNode(nodeIndex).set(SpecDouble);
         break;
     }
         
@@ -542,11 +542,11 @@
                 m_graph[node.child1()], m_graph[node.child2()])
             && node.canSpeculateInteger()) {
             speculateInt32Binary(node, true); // forcing can-exit, which is a bit on the conservative side.
-            forNode(nodeIndex).set(PredictInt32);
+            forNode(nodeIndex).set(SpecInt32);
             break;
         }
         speculateNumberBinary(node);
-        forNode(nodeIndex).set(PredictDouble);
+        forNode(nodeIndex).set(SpecDouble);
         break;
     }
             
@@ -561,11 +561,11 @@
         if (m_graph[node.child1()].shouldSpeculateInteger()
             && node.canSpeculateInteger()) {
             speculateInt32Unary(node, true);
-            forNode(nodeIndex).set(PredictInt32);
+            forNode(nodeIndex).set(SpecInt32);
             break;
         }
         speculateNumberUnary(node);
-        forNode(nodeIndex).set(PredictDouble);
+        forNode(nodeIndex).set(SpecDouble);
         break;
     }
             
@@ -578,7 +578,7 @@
             break;
         }
         speculateNumberUnary(node);
-        forNode(nodeIndex).set(PredictDouble);
+        forNode(nodeIndex).set(SpecDouble);
         break;
     }
             
@@ -590,23 +590,23 @@
             break;
         }
         Node& child = m_graph[node.child1()];
-        if (isBooleanPrediction(child.prediction()))
+        if (isBooleanSpeculation(child.prediction()))
             speculateBooleanUnary(node);
         else if (child.shouldSpeculateFinalObjectOrOther()) {
             node.setCanExit(
-                !isFinalObjectOrOtherPrediction(forNode(node.child1()).m_type));
-            forNode(node.child1()).filter(PredictFinalObject | PredictOther);
+                !isFinalObjectOrOtherSpeculation(forNode(node.child1()).m_type));
+            forNode(node.child1()).filter(SpecFinalObject | SpecOther);
         } else if (child.shouldSpeculateArrayOrOther()) {
             node.setCanExit(
-                !isArrayOrOtherPrediction(forNode(node.child1()).m_type));
-            forNode(node.child1()).filter(PredictArray | PredictOther);
+                !isArrayOrOtherSpeculation(forNode(node.child1()).m_type));
+            forNode(node.child1()).filter(SpecArray | SpecOther);
         } else if (child.shouldSpeculateInteger())
             speculateInt32Unary(node);
         else if (child.shouldSpeculateNumber())
             speculateNumberUnary(node);
         else
             node.setCanExit(false);
-        forNode(nodeIndex).set(PredictBoolean);
+        forNode(nodeIndex).set(SpecBoolean);
         break;
     }
         
@@ -644,7 +644,7 @@
                 break;
             }
         }
-        forNode(nodeIndex).set(PredictBoolean);
+        forNode(nodeIndex).set(SpecBoolean);
         break;
     }
             
@@ -683,18 +683,18 @@
             break;
         }
         
-        forNode(nodeIndex).set(PredictBoolean);
+        forNode(nodeIndex).set(SpecBoolean);
         
         Node& left = m_graph[node.child1()];
         Node& right = m_graph[node.child2()];
-        PredictedType filter;
-        PredictionChecker checker;
+        SpeculatedType filter;
+        SpeculatedTypeChecker checker;
         if (Node::shouldSpeculateInteger(left, right)) {
-            filter = PredictInt32;
-            checker = isInt32Prediction;
+            filter = SpecInt32;
+            checker = isInt32Speculation;
         } else if (Node::shouldSpeculateNumber(left, right)) {
-            filter = PredictNumber;
-            checker = isNumberPrediction;
+            filter = SpecNumber;
+            checker = isNumberSpeculation;
         } else if (node.op() == CompareEq) {
             if ((m_graph.isConstant(node.child1().index())
                  && m_graph.valueOfJSConstant(node.child1().index()).isNull())
@@ -706,47 +706,47 @@
             }
             
             if (Node::shouldSpeculateFinalObject(left, right)) {
-                filter = PredictFinalObject;
-                checker = isFinalObjectPrediction;
+                filter = SpecFinalObject;
+                checker = isFinalObjectSpeculation;
             } else if (Node::shouldSpeculateArray(left, right)) {
-                filter = PredictArray;
-                checker = isArrayPrediction;
+                filter = SpecArray;
+                checker = isArraySpeculation;
             } else if (left.shouldSpeculateFinalObject() && right.shouldSpeculateFinalObjectOrOther()) {
                 node.setCanExit(
-                    !isFinalObjectPrediction(forNode(node.child1()).m_type)
-                    || !isFinalObjectOrOtherPrediction(forNode(node.child2()).m_type));
-                forNode(node.child1()).filter(PredictFinalObject);
-                forNode(node.child2()).filter(PredictFinalObject | PredictOther);
+                    !isFinalObjectSpeculation(forNode(node.child1()).m_type)
+                    || !isFinalObjectOrOtherSpeculation(forNode(node.child2()).m_type));
+                forNode(node.child1()).filter(SpecFinalObject);
+                forNode(node.child2()).filter(SpecFinalObject | SpecOther);
                 break;
             } else if (right.shouldSpeculateFinalObject() && left.shouldSpeculateFinalObjectOrOther()) {
                 node.setCanExit(
-                    !isFinalObjectOrOtherPrediction(forNode(node.child1()).m_type)
-                    || !isFinalObjectPrediction(forNode(node.child2()).m_type));
-                forNode(node.child1()).filter(PredictFinalObject | PredictOther);
-                forNode(node.child2()).filter(PredictFinalObject);
+                    !isFinalObjectOrOtherSpeculation(forNode(node.child1()).m_type)
+                    || !isFinalObjectSpeculation(forNode(node.child2()).m_type));
+                forNode(node.child1()).filter(SpecFinalObject | SpecOther);
+                forNode(node.child2()).filter(SpecFinalObject);
                 break;
             } else if (left.shouldSpeculateArray() && right.shouldSpeculateArrayOrOther()) {
                 node.setCanExit(
-                    !isArrayPrediction(forNode(node.child1()).m_type)
-                    || !isArrayOrOtherPrediction(forNode(node.child2()).m_type));
-                forNode(node.child1()).filter(PredictArray);
-                forNode(node.child2()).filter(PredictArray | PredictOther);
+                    !isArraySpeculation(forNode(node.child1()).m_type)
+                    || !isArrayOrOtherSpeculation(forNode(node.child2()).m_type));
+                forNode(node.child1()).filter(SpecArray);
+                forNode(node.child2()).filter(SpecArray | SpecOther);
                 break;
             } else if (right.shouldSpeculateArray() && left.shouldSpeculateArrayOrOther()) {
                 node.setCanExit(
-                    !isArrayOrOtherPrediction(forNode(node.child1()).m_type)
-                    || !isArrayPrediction(forNode(node.child2()).m_type));
-                forNode(node.child1()).filter(PredictArray | PredictOther);
-                forNode(node.child2()).filter(PredictArray);
+                    !isArrayOrOtherSpeculation(forNode(node.child1()).m_type)
+                    || !isArraySpeculation(forNode(node.child2()).m_type));
+                forNode(node.child1()).filter(SpecArray | SpecOther);
+                forNode(node.child2()).filter(SpecArray);
                 break;
             } else {
-                filter = PredictTop;
-                checker = isAnyPrediction;
+                filter = SpecTop;
+                checker = isAnySpeculation;
                 clobberWorld(node.codeOrigin, indexInBlock);
             }
         } else {
-            filter = PredictTop;
-            checker = isAnyPrediction;
+            filter = SpecTop;
+            checker = isAnySpeculation;
             clobberWorld(node.codeOrigin, indexInBlock);
         }
         node.setCanExit(
@@ -766,7 +766,7 @@
             node.setCanExit(false);
             break;
         }
-        forNode(nodeIndex).set(PredictBoolean);
+        forNode(nodeIndex).set(SpecBoolean);
         if (m_graph.isJSConstant(node.child1().index())) {
             JSValue value = m_graph.valueOfJSConstant(node.child1().index());
             if (!value.isNumber() && !value.isString()) {
@@ -794,19 +794,19 @@
         if (Node::shouldSpeculateFinalObject(
                 m_graph[node.child1()], m_graph[node.child2()])) {
             node.setCanExit(
-                !isFinalObjectPrediction(forNode(node.child1()).m_type)
-                || !isFinalObjectPrediction(forNode(node.child2()).m_type));
-            forNode(node.child1()).filter(PredictFinalObject);
-            forNode(node.child2()).filter(PredictFinalObject);
+                !isFinalObjectSpeculation(forNode(node.child1()).m_type)
+                || !isFinalObjectSpeculation(forNode(node.child2()).m_type));
+            forNode(node.child1()).filter(SpecFinalObject);
+            forNode(node.child2()).filter(SpecFinalObject);
             break;
         }
         if (Node::shouldSpeculateArray(
                 m_graph[node.child1()], m_graph[node.child2()])) {
             node.setCanExit(
-                !isArrayPrediction(forNode(node.child1()).m_type)
-                || !isArrayPrediction(forNode(node.child2()).m_type));
-            forNode(node.child1()).filter(PredictArray);
-            forNode(node.child2()).filter(PredictArray);
+                !isArraySpeculation(forNode(node.child1()).m_type)
+                || !isArraySpeculation(forNode(node.child2()).m_type));
+            forNode(node.child1()).filter(SpecArray);
+            forNode(node.child2()).filter(SpecArray);
             break;
         }
         node.setCanExit(false);
@@ -815,16 +815,16 @@
         
     case StringCharCodeAt:
         node.setCanExit(true);
-        forNode(node.child1()).filter(PredictString);
-        forNode(node.child2()).filter(PredictInt32);
-        forNode(nodeIndex).set(PredictInt32);
+        forNode(node.child1()).filter(SpecString);
+        forNode(node.child2()).filter(SpecInt32);
+        forNode(nodeIndex).set(SpecInt32);
         break;
         
     case StringCharAt:
         node.setCanExit(true);
-        forNode(node.child1()).filter(PredictString);
-        forNode(node.child2()).filter(PredictInt32);
-        forNode(nodeIndex).set(PredictString);
+        forNode(node.child1()).filter(SpecString);
+        forNode(node.child2()).filter(SpecInt32);
+        forNode(nodeIndex).set(SpecString);
         break;
             
     case GetByVal: {
@@ -833,84 +833,84 @@
             m_isValid = false;
             break;
         }
-        if (!isActionableArrayPrediction(m_graph[node.child1()].prediction()) || !m_graph[node.child2()].shouldSpeculateInteger()) {
+        if (!isActionableArraySpeculation(m_graph[node.child1()].prediction()) || !m_graph[node.child2()].shouldSpeculateInteger()) {
             clobberWorld(node.codeOrigin, indexInBlock);
             forNode(nodeIndex).makeTop();
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateArguments()) {
-            forNode(node.child1()).filter(PredictArguments);
-            forNode(node.child2()).filter(PredictInt32);
+            forNode(node.child1()).filter(SpecArguments);
+            forNode(node.child2()).filter(SpecInt32);
             forNode(nodeIndex).makeTop();
             break;
         }
-        if (m_graph[node.child1()].prediction() == PredictString) {
-            forNode(node.child1()).filter(PredictString);
-            forNode(node.child2()).filter(PredictInt32);
-            forNode(nodeIndex).set(PredictString);
+        if (m_graph[node.child1()].prediction() == SpecString) {
+            forNode(node.child1()).filter(SpecString);
+            forNode(node.child2()).filter(SpecInt32);
+            forNode(nodeIndex).set(SpecString);
             break;
         }
         
         if (m_graph[node.child1()].shouldSpeculateInt8Array()) {
-            forNode(node.child1()).filter(PredictInt8Array);
-            forNode(node.child2()).filter(PredictInt32);
-            forNode(nodeIndex).set(PredictInt32);
+            forNode(node.child1()).filter(SpecInt8Array);
+            forNode(node.child2()).filter(SpecInt32);
+            forNode(nodeIndex).set(SpecInt32);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateInt16Array()) {
-            forNode(node.child1()).filter(PredictInt16Array);
-            forNode(node.child2()).filter(PredictInt32);
-            forNode(nodeIndex).set(PredictInt32);
+            forNode(node.child1()).filter(SpecInt16Array);
+            forNode(node.child2()).filter(SpecInt32);
+            forNode(nodeIndex).set(SpecInt32);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateInt32Array()) {
-            forNode(node.child1()).filter(PredictInt32Array);
-            forNode(node.child2()).filter(PredictInt32);
-            forNode(nodeIndex).set(PredictInt32);
+            forNode(node.child1()).filter(SpecInt32Array);
+            forNode(node.child2()).filter(SpecInt32);
+            forNode(nodeIndex).set(SpecInt32);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateUint8Array()) {
-            forNode(node.child1()).filter(PredictUint8Array);
-            forNode(node.child2()).filter(PredictInt32);
-            forNode(nodeIndex).set(PredictInt32);
+            forNode(node.child1()).filter(SpecUint8Array);
+            forNode(node.child2()).filter(SpecInt32);
+            forNode(nodeIndex).set(SpecInt32);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateUint8ClampedArray()) {
-            forNode(node.child1()).filter(PredictUint8ClampedArray);
-            forNode(node.child2()).filter(PredictInt32);
-            forNode(nodeIndex).set(PredictInt32);
+            forNode(node.child1()).filter(SpecUint8ClampedArray);
+            forNode(node.child2()).filter(SpecInt32);
+            forNode(nodeIndex).set(SpecInt32);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateUint16Array()) {
-            forNode(node.child1()).filter(PredictUint16Array);
-            forNode(node.child2()).filter(PredictInt32);
-            forNode(nodeIndex).set(PredictInt32);
+            forNode(node.child1()).filter(SpecUint16Array);
+            forNode(node.child2()).filter(SpecInt32);
+            forNode(nodeIndex).set(SpecInt32);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateUint32Array()) {
-            forNode(node.child1()).filter(PredictUint32Array);
-            forNode(node.child2()).filter(PredictInt32);
+            forNode(node.child1()).filter(SpecUint32Array);
+            forNode(node.child2()).filter(SpecInt32);
             if (node.shouldSpeculateInteger())
-                forNode(nodeIndex).set(PredictInt32);
+                forNode(nodeIndex).set(SpecInt32);
             else
-                forNode(nodeIndex).set(PredictDouble);
+                forNode(nodeIndex).set(SpecDouble);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateFloat32Array()) {
-            forNode(node.child1()).filter(PredictFloat32Array);
-            forNode(node.child2()).filter(PredictInt32);
-            forNode(nodeIndex).set(PredictDouble);
+            forNode(node.child1()).filter(SpecFloat32Array);
+            forNode(node.child2()).filter(SpecInt32);
+            forNode(nodeIndex).set(SpecDouble);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateFloat64Array()) {
-            forNode(node.child1()).filter(PredictFloat64Array);
-            forNode(node.child2()).filter(PredictInt32);
-            forNode(nodeIndex).set(PredictDouble);
+            forNode(node.child1()).filter(SpecFloat64Array);
+            forNode(node.child2()).filter(SpecInt32);
+            forNode(nodeIndex).set(SpecDouble);
             break;
         }
         ASSERT(m_graph[node.child1()].shouldSpeculateArray());
-        forNode(node.child1()).filter(PredictArray);
-        forNode(node.child2()).filter(PredictInt32);
+        forNode(node.child1()).filter(SpecArray);
+        forNode(node.child2()).filter(SpecInt32);
         forNode(nodeIndex).makeTop();
         break;
     }
@@ -922,7 +922,7 @@
             m_isValid = false;
             break;
         }
-        if (!m_graph[node.child2()].shouldSpeculateInteger() || !isActionableMutableArrayPrediction(m_graph[node.child1()].prediction())
+        if (!m_graph[node.child2()].shouldSpeculateInteger() || !isActionableMutableArraySpeculation(m_graph[node.child1()].prediction())
 #if USE(JSVALUE32_64)
             || m_graph[node.child1()].shouldSpeculateArguments()
 #endif
@@ -934,88 +934,88 @@
         }
         
         if (m_graph[node.child1()].shouldSpeculateArguments()) {
-            forNode(node.child1()).filter(PredictArguments);
-            forNode(node.child2()).filter(PredictInt32);
+            forNode(node.child1()).filter(SpecArguments);
+            forNode(node.child2()).filter(SpecInt32);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateInt8Array()) {
-            forNode(node.child1()).filter(PredictInt8Array);
-            forNode(node.child2()).filter(PredictInt32);
+            forNode(node.child1()).filter(SpecInt8Array);
+            forNode(node.child2()).filter(SpecInt32);
             if (m_graph[node.child3()].shouldSpeculateInteger())
-                forNode(node.child3()).filter(PredictInt32);
+                forNode(node.child3()).filter(SpecInt32);
             else
-                forNode(node.child3()).filter(PredictNumber);
+                forNode(node.child3()).filter(SpecNumber);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateInt16Array()) {
-            forNode(node.child1()).filter(PredictInt16Array);
-            forNode(node.child2()).filter(PredictInt32);
+            forNode(node.child1()).filter(SpecInt16Array);
+            forNode(node.child2()).filter(SpecInt32);
             if (m_graph[node.child3()].shouldSpeculateInteger())
-                forNode(node.child3()).filter(PredictInt32);
+                forNode(node.child3()).filter(SpecInt32);
             else
-                forNode(node.child3()).filter(PredictNumber);
+                forNode(node.child3()).filter(SpecNumber);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateInt32Array()) {
-            forNode(node.child1()).filter(PredictInt32Array);
-            forNode(node.child2()).filter(PredictInt32);
+            forNode(node.child1()).filter(SpecInt32Array);
+            forNode(node.child2()).filter(SpecInt32);
             if (m_graph[node.child3()].shouldSpeculateInteger())
-                forNode(node.child3()).filter(PredictInt32);
+                forNode(node.child3()).filter(SpecInt32);
             else
-                forNode(node.child3()).filter(PredictNumber);
+                forNode(node.child3()).filter(SpecNumber);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateUint8Array()) {
-            forNode(node.child1()).filter(PredictUint8Array);
-            forNode(node.child2()).filter(PredictInt32);
+            forNode(node.child1()).filter(SpecUint8Array);
+            forNode(node.child2()).filter(SpecInt32);
             if (m_graph[node.child3()].shouldSpeculateInteger())
-                forNode(node.child3()).filter(PredictInt32);
+                forNode(node.child3()).filter(SpecInt32);
             else
-                forNode(node.child3()).filter(PredictNumber);
+                forNode(node.child3()).filter(SpecNumber);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateUint8ClampedArray()) {
-            forNode(node.child1()).filter(PredictUint8ClampedArray);
-            forNode(node.child2()).filter(PredictInt32);
+            forNode(node.child1()).filter(SpecUint8ClampedArray);
+            forNode(node.child2()).filter(SpecInt32);
             if (m_graph[node.child3()].shouldSpeculateInteger())
-                forNode(node.child3()).filter(PredictInt32);
+                forNode(node.child3()).filter(SpecInt32);
             else
-                forNode(node.child3()).filter(PredictNumber);
+                forNode(node.child3()).filter(SpecNumber);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateUint16Array()) {
-            forNode(node.child1()).filter(PredictUint16Array);
-            forNode(node.child2()).filter(PredictInt32);
+            forNode(node.child1()).filter(SpecUint16Array);
+            forNode(node.child2()).filter(SpecInt32);
             if (m_graph[node.child3()].shouldSpeculateInteger())
-                forNode(node.child3()).filter(PredictInt32);
+                forNode(node.child3()).filter(SpecInt32);
             else
-                forNode(node.child3()).filter(PredictNumber);
+                forNode(node.child3()).filter(SpecNumber);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateUint32Array()) {
-            forNode(node.child1()).filter(PredictUint32Array);
-            forNode(node.child2()).filter(PredictInt32);
+            forNode(node.child1()).filter(SpecUint32Array);
+            forNode(node.child2()).filter(SpecInt32);
             if (m_graph[node.child3()].shouldSpeculateInteger())
-                forNode(node.child3()).filter(PredictInt32);
+                forNode(node.child3()).filter(SpecInt32);
             else
-                forNode(node.child3()).filter(PredictNumber);
+                forNode(node.child3()).filter(SpecNumber);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateFloat32Array()) {
-            forNode(node.child1()).filter(PredictFloat32Array);
-            forNode(node.child2()).filter(PredictInt32);
-            forNode(node.child3()).filter(PredictNumber);
+            forNode(node.child1()).filter(SpecFloat32Array);
+            forNode(node.child2()).filter(SpecInt32);
+            forNode(node.child3()).filter(SpecNumber);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateFloat64Array()) {
-            forNode(node.child1()).filter(PredictFloat64Array);
-            forNode(node.child2()).filter(PredictInt32);
-            forNode(node.child3()).filter(PredictNumber);
+            forNode(node.child1()).filter(SpecFloat64Array);
+            forNode(node.child2()).filter(SpecInt32);
+            forNode(node.child3()).filter(SpecNumber);
             break;
         }
         ASSERT(m_graph[node.child1()].shouldSpeculateArray());
-        forNode(node.child1()).filter(PredictArray);
-        forNode(node.child2()).filter(PredictInt32);
+        forNode(node.child1()).filter(SpecArray);
+        forNode(node.child2()).filter(SpecInt32);
         if (node.op() == PutByVal)
             clobberWorld(node.codeOrigin, indexInBlock);
         break;
@@ -1023,23 +1023,23 @@
             
     case ArrayPush:
         node.setCanExit(true);
-        forNode(node.child1()).filter(PredictArray);
-        forNode(nodeIndex).set(PredictNumber);
+        forNode(node.child1()).filter(SpecArray);
+        forNode(nodeIndex).set(SpecNumber);
         break;
             
     case ArrayPop:
         node.setCanExit(true);
-        forNode(node.child1()).filter(PredictArray);
+        forNode(node.child1()).filter(SpecArray);
         forNode(nodeIndex).makeTop();
         break;
             
     case RegExpExec:
     case RegExpTest:
         node.setCanExit(
-            !isCellPrediction(forNode(node.child1()).m_type)
-            || !isCellPrediction(forNode(node.child2()).m_type));
-        forNode(node.child1()).filter(PredictCell);
-        forNode(node.child2()).filter(PredictCell);
+            !isCellSpeculation(forNode(node.child1()).m_type)
+            || !isCellSpeculation(forNode(node.child2()).m_type));
+        forNode(node.child1()).filter(SpecCell);
+        forNode(node.child2()).filter(SpecCell);
         forNode(nodeIndex).makeTop();
         break;
             
@@ -1070,12 +1070,12 @@
             speculateBooleanUnary(node);
         else if (child.shouldSpeculateFinalObjectOrOther()) {
             node.setCanExit(
-                !isFinalObjectOrOtherPrediction(forNode(node.child1()).m_type));
-            forNode(node.child1()).filter(PredictFinalObject | PredictOther);
+                !isFinalObjectOrOtherSpeculation(forNode(node.child1()).m_type));
+            forNode(node.child1()).filter(SpecFinalObject | SpecOther);
         } else if (child.shouldSpeculateArrayOrOther()) {
             node.setCanExit(
-                !isArrayOrOtherPrediction(forNode(node.child1()).m_type));
-            forNode(node.child1()).filter(PredictArray | PredictOther);
+                !isArrayOrOtherSpeculation(forNode(node.child1()).m_type));
+            forNode(node.child1()).filter(SpecArray | SpecOther);
         } else if (child.shouldSpeculateInteger())
             speculateInt32Unary(node);
         else if (child.shouldSpeculateNumber())
@@ -1109,17 +1109,17 @@
         Node& child = m_graph[node.child1()];
         if (child.shouldSpeculateInteger()) {
             speculateInt32Unary(node);
-            forNode(nodeIndex).set(PredictInt32);
+            forNode(nodeIndex).set(SpecInt32);
             break;
         }
 
         AbstractValue& source = forNode(node.child1());
         AbstractValue& destination = forNode(nodeIndex);
             
-        PredictedType type = source.m_type;
-        if (type & ~(PredictNumber | PredictString | PredictBoolean)) {
-            type &= (PredictNumber | PredictString | PredictBoolean);
-            type |= PredictString;
+        SpeculatedType type = source.m_type;
+        if (type & ~(SpecNumber | SpecString | SpecBoolean)) {
+            type &= (SpecNumber | SpecString | SpecBoolean);
+            type |= SpecString;
         }
         destination.set(type);
         node.setCanExit(false);
@@ -1128,7 +1128,7 @@
             
     case StrCat:
         node.setCanExit(false);
-        forNode(nodeIndex).set(PredictString);
+        forNode(nodeIndex).set(SpecString);
         break;
             
     case NewArray:
@@ -1149,7 +1149,7 @@
         AbstractValue& source = forNode(node.child1());
         AbstractValue& destination = forNode(nodeIndex);
             
-        if (isObjectPrediction(source.m_type)) {
+        if (isObjectSpeculation(source.m_type)) {
             // This is the simple case. We already know that the source is an
             // object, so there's nothing to do. I don't think this case will
             // be hit, but then again, you never know.
@@ -1160,20 +1160,20 @@
         
         node.setCanExit(true);
         
-        if (isOtherPrediction(child.prediction())) {
-            source.filter(PredictOther);
-            destination.set(PredictObjectOther);
+        if (isOtherSpeculation(child.prediction())) {
+            source.filter(SpecOther);
+            destination.set(SpecObjectOther);
             break;
         }
         
-        if (isObjectPrediction(child.prediction())) {
-            source.filter(PredictObjectMask);
+        if (isObjectSpeculation(child.prediction())) {
+            source.filter(SpecObjectMask);
             destination = source;
             break;
         }
             
         destination = source;
-        destination.merge(PredictObjectOther);
+        destination.merge(SpecObjectOther);
         break;
     }
 
@@ -1181,10 +1181,10 @@
         AbstractValue& source = forNode(node.child1());
         AbstractValue& destination = forNode(nodeIndex);
         
-        node.setCanExit(!isCellPrediction(source.m_type));
+        node.setCanExit(!isCellSpeculation(source.m_type));
             
-        source.filter(PredictFunction);
-        destination.set(PredictFinalObject);
+        source.filter(SpecFunction);
+        destination.set(SpecFinalObject);
         break;
     }
 
@@ -1213,7 +1213,7 @@
         break;
 
     case CheckArgumentsNotCreated:
-        if (isEmptyPrediction(
+        if (isEmptySpeculation(
                 m_variables.operand(
                     m_graph.argumentsRegisterFor(node.codeOrigin)).m_type)) {
             node.setCanExit(false);
@@ -1230,9 +1230,9 @@
         if (node.codeOrigin.inlineCallFrame)
             forNode(nodeIndex).set(jsNumber(node.codeOrigin.inlineCallFrame->arguments.size() - 1));
         else
-            forNode(nodeIndex).set(PredictInt32);
+            forNode(nodeIndex).set(SpecInt32);
         node.setCanExit(
-            !isEmptyPrediction(
+            !isEmptySpeculation(
                 m_variables.operand(
                     m_graph.argumentsRegisterFor(node.codeOrigin)).m_type));
         break;
@@ -1252,7 +1252,7 @@
         // We know that this executable does not escape its arguments, so we can optimize
         // the arguments a bit. Note that this ends up being further optimized by the
         // ArgumentsSimplificationPhase.
-        forNode(node.child1()).filter(PredictInt32);
+        forNode(node.child1()).filter(SpecInt32);
         forNode(nodeIndex).makeTop();
         break;
         
@@ -1262,7 +1262,7 @@
         // a getter. We don't speculate against this.
         clobberWorld(node.codeOrigin, indexInBlock);
         // But we do speculate that the index is an integer.
-        forNode(node.child1()).filter(PredictInt32);
+        forNode(node.child1()).filter(SpecInt32);
         // And the result is unknown.
         forNode(nodeIndex).makeTop();
         break;
@@ -1276,12 +1276,12 @@
         
     case GetCallee:
         node.setCanExit(false);
-        forNode(nodeIndex).set(PredictFunction);
+        forNode(nodeIndex).set(SpecFunction);
         break;
             
     case GetScopeChain:
         node.setCanExit(false);
-        forNode(nodeIndex).set(PredictCellOther);
+        forNode(nodeIndex).set(SpecCellOther);
         break;
             
     case GetScopedVar:
@@ -1301,74 +1301,74 @@
             m_isValid = false;
             break;
         }
-        if (isCellPrediction(m_graph[node.child1()].prediction()))
-            forNode(node.child1()).filter(PredictCell);
+        if (isCellSpeculation(m_graph[node.child1()].prediction()))
+            forNode(node.child1()).filter(SpecCell);
         clobberWorld(node.codeOrigin, indexInBlock);
         forNode(nodeIndex).makeTop();
         break;
             
     case GetArrayLength:
         node.setCanExit(true);
-        forNode(node.child1()).filter(PredictArray);
-        forNode(nodeIndex).set(PredictInt32);
+        forNode(node.child1()).filter(SpecArray);
+        forNode(nodeIndex).set(SpecInt32);
         break;
 
     case GetArgumentsLength:
         node.setCanExit(true);
-        forNode(node.child1()).filter(PredictArguments);
-        forNode(nodeIndex).set(PredictInt32);
+        forNode(node.child1()).filter(SpecArguments);
+        forNode(nodeIndex).set(SpecInt32);
         break;
 
     case GetStringLength:
-        node.setCanExit(!isStringPrediction(forNode(node.child1()).m_type));
-        forNode(node.child1()).filter(PredictString);
-        forNode(nodeIndex).set(PredictInt32);
+        node.setCanExit(!isStringSpeculation(forNode(node.child1()).m_type));
+        forNode(node.child1()).filter(SpecString);
+        forNode(nodeIndex).set(SpecInt32);
         break;
         
     case GetInt8ArrayLength:
-        node.setCanExit(!isInt8ArrayPrediction(forNode(node.child1()).m_type));
-        forNode(node.child1()).filter(PredictInt8Array);
-        forNode(nodeIndex).set(PredictInt32);
+        node.setCanExit(!isInt8ArraySpeculation(forNode(node.child1()).m_type));
+        forNode(node.child1()).filter(SpecInt8Array);
+        forNode(nodeIndex).set(SpecInt32);
         break;
     case GetInt16ArrayLength:
-        node.setCanExit(!isInt16ArrayPrediction(forNode(node.child1()).m_type));
-        forNode(node.child1()).filter(PredictInt16Array);
-        forNode(nodeIndex).set(PredictInt32);
+        node.setCanExit(!isInt16ArraySpeculation(forNode(node.child1()).m_type));
+        forNode(node.child1()).filter(SpecInt16Array);
+        forNode(nodeIndex).set(SpecInt32);
         break;
     case GetInt32ArrayLength:
-        node.setCanExit(!isInt32ArrayPrediction(forNode(node.child1()).m_type));
-        forNode(node.child1()).filter(PredictInt32Array);
-        forNode(nodeIndex).set(PredictInt32);
+        node.setCanExit(!isInt32ArraySpeculation(forNode(node.child1()).m_type));
+        forNode(node.child1()).filter(SpecInt32Array);
+        forNode(nodeIndex).set(SpecInt32);
         break;
     case GetUint8ArrayLength:
-        node.setCanExit(!isUint8ArrayPrediction(forNode(node.child1()).m_type));
-        forNode(node.child1()).filter(PredictUint8Array);
-        forNode(nodeIndex).set(PredictInt32);
+        node.setCanExit(!isUint8ArraySpeculation(forNode(node.child1()).m_type));
+        forNode(node.child1()).filter(SpecUint8Array);
+        forNode(nodeIndex).set(SpecInt32);
         break;
     case GetUint8ClampedArrayLength:
-        node.setCanExit(!isUint8ClampedArrayPrediction(forNode(node.child1()).m_type));
-        forNode(node.child1()).filter(PredictUint8ClampedArray);
-        forNode(nodeIndex).set(PredictInt32);
+        node.setCanExit(!isUint8ClampedArraySpeculation(forNode(node.child1()).m_type));
+        forNode(node.child1()).filter(SpecUint8ClampedArray);
+        forNode(nodeIndex).set(SpecInt32);
         break;
     case GetUint16ArrayLength:
-        node.setCanExit(!isUint16ArrayPrediction(forNode(node.child1()).m_type));
-        forNode(node.child1()).filter(PredictUint16Array);
-        forNode(nodeIndex).set(PredictInt32);
+        node.setCanExit(!isUint16ArraySpeculation(forNode(node.child1()).m_type));
+        forNode(node.child1()).filter(SpecUint16Array);
+        forNode(nodeIndex).set(SpecInt32);
         break;
     case GetUint32ArrayLength:
-        node.setCanExit(!isUint32ArrayPrediction(forNode(node.child1()).m_type));
-        forNode(node.child1()).filter(PredictUint32Array);
-        forNode(nodeIndex).set(PredictInt32);
+        node.setCanExit(!isUint32ArraySpeculation(forNode(node.child1()).m_type));
+        forNode(node.child1()).filter(SpecUint32Array);
+        forNode(nodeIndex).set(SpecInt32);
         break;
     case GetFloat32ArrayLength:
-        node.setCanExit(!isFloat32ArrayPrediction(forNode(node.child1()).m_type));
-        forNode(node.child1()).filter(PredictFloat32Array);
-        forNode(nodeIndex).set(PredictInt32);
+        node.setCanExit(!isFloat32ArraySpeculation(forNode(node.child1()).m_type));
+        forNode(node.child1()).filter(SpecFloat32Array);
+        forNode(nodeIndex).set(SpecInt32);
         break;
     case GetFloat64ArrayLength:
-        node.setCanExit(!isFloat64ArrayPrediction(forNode(node.child1()).m_type));
-        forNode(node.child1()).filter(PredictFloat64Array);
-        forNode(nodeIndex).set(PredictInt32);
+        node.setCanExit(!isFloat64ArraySpeculation(forNode(node.child1()).m_type));
+        forNode(node.child1()).filter(SpecFloat64Array);
+        forNode(nodeIndex).set(SpecInt32);
         break;
             
     case CheckStructure: {
@@ -1376,7 +1376,7 @@
         AbstractValue& value = forNode(node.child1());
         node.setCanExit(
             !value.m_structure.isSubsetOf(node.structureSet())
-            || !isCellPrediction(value.m_type));
+            || !isCellSpeculation(value.m_type));
         value.filter(node.structureSet());
         m_haveStructures = true;
         break;
@@ -1391,13 +1391,13 @@
         break;
     case GetPropertyStorage:
         node.setCanExit(false);
-        forNode(node.child1()).filter(PredictCell);
+        forNode(node.child1()).filter(SpecCell);
         forNode(nodeIndex).clear(); // The result is not a JS value.
         break;
     case GetIndexedPropertyStorage: {
         node.setCanExit(true); // Lies, but this is (almost) always followed by GetByVal, which does exit. So no point in trying to be more precise.
-        PredictedType basePrediction = m_graph[node.child2()].prediction();
-        if (!(basePrediction & PredictInt32) && basePrediction) {
+        SpeculatedType basePrediction = m_graph[node.child2()].prediction();
+        if (!(basePrediction & SpecInt32) && basePrediction) {
             forNode(nodeIndex).clear();
             break;
         }
@@ -1405,82 +1405,82 @@
             ASSERT_NOT_REACHED();
             break;
         }
-        if (m_graph[node.child1()].prediction() == PredictString) {
-            forNode(node.child1()).filter(PredictString);
+        if (m_graph[node.child1()].prediction() == SpecString) {
+            forNode(node.child1()).filter(SpecString);
             forNode(nodeIndex).clear();
             break;
         }
         
         if (m_graph[node.child1()].shouldSpeculateInt8Array()) {
-            forNode(node.child1()).filter(PredictInt8Array);
+            forNode(node.child1()).filter(SpecInt8Array);
             forNode(nodeIndex).clear();
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateInt16Array()) {
-            forNode(node.child1()).filter(PredictInt16Array);
+            forNode(node.child1()).filter(SpecInt16Array);
             forNode(nodeIndex).clear();
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateInt32Array()) {
-            forNode(node.child1()).filter(PredictInt32Array);
+            forNode(node.child1()).filter(SpecInt32Array);
             forNode(nodeIndex).clear();
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateUint8Array()) {
-            forNode(node.child1()).filter(PredictUint8Array);
+            forNode(node.child1()).filter(SpecUint8Array);
             forNode(nodeIndex).clear();
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateUint8ClampedArray()) {
-            forNode(node.child1()).filter(PredictUint8ClampedArray);
+            forNode(node.child1()).filter(SpecUint8ClampedArray);
             forNode(nodeIndex).clear();
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateUint16Array()) {
-            forNode(node.child1()).filter(PredictUint16Array);
-            forNode(nodeIndex).set(PredictOther);
+            forNode(node.child1()).filter(SpecUint16Array);
+            forNode(nodeIndex).set(SpecOther);
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateUint32Array()) {
-            forNode(node.child1()).filter(PredictUint32Array);
+            forNode(node.child1()).filter(SpecUint32Array);
             forNode(nodeIndex).clear();
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateFloat32Array()) {
-            forNode(node.child1()).filter(PredictFloat32Array);
+            forNode(node.child1()).filter(SpecFloat32Array);
             forNode(nodeIndex).clear();
             break;
         }
         if (m_graph[node.child1()].shouldSpeculateFloat64Array()) {
-            forNode(node.child1()).filter(PredictFloat64Array);
+            forNode(node.child1()).filter(SpecFloat64Array);
             forNode(nodeIndex).clear();
             break;
         }
-        forNode(node.child1()).filter(PredictArray);
+        forNode(node.child1()).filter(SpecArray);
         forNode(nodeIndex).clear();
         break; 
     }
     case GetByOffset:
         node.setCanExit(false);
-        forNode(node.child1()).filter(PredictCell);
+        forNode(node.child1()).filter(SpecCell);
         forNode(nodeIndex).makeTop();
         break;
             
     case PutByOffset:
         node.setCanExit(false);
-        forNode(node.child1()).filter(PredictCell);
+        forNode(node.child1()).filter(SpecCell);
         break;
             
     case CheckFunction:
         node.setCanExit(true); // Lies! We can do better.
-        forNode(node.child1()).filter(PredictFunction);
+        forNode(node.child1()).filter(SpecFunction);
         // FIXME: Should be able to propagate the fact that we know what the function is.
         break;
             
     case PutById:
     case PutByIdDirect:
         node.setCanExit(true);
-        forNode(node.child1()).filter(PredictCell);
+        forNode(node.child1()).filter(SpecCell);
         clobberWorld(node.codeOrigin, indexInBlock);
         break;
             
@@ -1495,17 +1495,17 @@
             
     case CheckHasInstance:
         node.setCanExit(true);
-        forNode(node.child1()).filter(PredictCell);
+        forNode(node.child1()).filter(SpecCell);
         // Sadly, we don't propagate the fact that we've done CheckHasInstance
         break;
             
     case InstanceOf:
         node.setCanExit(true);
         // Again, sadly, we don't propagate the fact that we've done InstanceOf
-        if (!(m_graph[node.child1()].prediction() & ~PredictCell) && !(forNode(node.child1()).m_type & ~PredictCell))
-            forNode(node.child1()).filter(PredictCell);
-        forNode(node.child3()).filter(PredictCell);
-        forNode(nodeIndex).set(PredictBoolean);
+        if (!(m_graph[node.child1()].prediction() & ~SpecCell) && !(forNode(node.child1()).m_type & ~SpecCell))
+            forNode(node.child1()).filter(SpecCell);
+        forNode(node.child3()).filter(SpecCell);
+        forNode(nodeIndex).set(SpecBoolean);
         break;
             
     case Phi:
@@ -1631,7 +1631,7 @@
             // before and after setting it.
             if (node.variableAccessData()->shouldUseDoubleFormat()) {
                 // FIXME: This unnecessarily loses precision.
-                source.set(PredictDouble);
+                source.set(SpecDouble);
             } else
                 source = forNode(node.child1());
 #if DFG_ENABLE(DEBUG_PROPAGATION_VERBOSE)