Changeset 171648 in webkit for trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
- Timestamp:
- Jul 26, 2014, 12:06:44 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
r171641 r171648 98 98 default: 99 99 m_jit.load64(JITCompiler::addressFor(virtualRegister), gpr); 100 DFG_ASSERT(m_jit.graph(), m_currentNode,spillFormat & DataFormatJS);100 RELEASE_ASSERT(spillFormat & DataFormatJS); 101 101 break; 102 102 } … … 138 138 case DataFormatInt52: 139 139 // this type currently never occurs 140 DFG_CRASH(m_jit.graph(), m_currentNode, "Bad data format");140 RELEASE_ASSERT_NOT_REACHED(); 141 141 142 142 default: 143 DFG_CRASH(m_jit.graph(), m_currentNode, "Corrupt data format");143 RELEASE_ASSERT_NOT_REACHED(); 144 144 return InvalidGPRReg; 145 145 } … … 312 312 Node* branchNode = m_block->at(branchIndexInBlock); 313 313 314 DFG_ASSERT(m_jit.graph(), node,node->adjustedRefCount() == 1);314 RELEASE_ASSERT(node->adjustedRefCount() == 1); 315 315 316 316 nonSpeculativePeepholeBranchNull(operand, branchNode, invert); … … 629 629 bool isCall = node->op() == Call; 630 630 if (!isCall) 631 DFG_ASSERT(m_jit.graph(), node,node->op() == Construct);632 631 RELEASE_ASSERT(node->op() == Construct); 632 633 633 // For constructors, the this argument is not passed but we have to make space 634 634 // for it. … … 742 742 DataFormat spillFormat = info.spillFormat(); 743 743 744 DFG_ASSERT(m_jit.graph(), m_currentNode,(spillFormat & DataFormatJS) || spillFormat == DataFormatInt32);744 RELEASE_ASSERT((spillFormat & DataFormatJS) || spillFormat == DataFormatInt32); 745 745 746 746 m_gprs.retain(gpr, virtualRegister, SpillOrderSpilled); … … 772 772 773 773 case DataFormatJS: { 774 DFG_ASSERT(m_jit.graph(), m_currentNode,!(type & SpecInt52));774 RELEASE_ASSERT(!(type & SpecInt52)); 775 775 // Check the value is an integer. 776 776 GPRReg gpr = info.gpr(); … … 835 835 case DataFormatInt52: 836 836 case DataFormatStrictInt52: 837 DFG_CRASH(m_jit.graph(), m_currentNode, "Bad data format");837 RELEASE_ASSERT_NOT_REACHED(); 838 838 839 839 default: 840 DFG_CRASH(m_jit.graph(), m_currentNode, "Corrupt data format");840 RELEASE_ASSERT_NOT_REACHED(); 841 841 return InvalidGPRReg; 842 842 } … … 855 855 DataFormat mustBeDataFormatInt32; 856 856 GPRReg result = fillSpeculateInt32Internal<true>(edge, mustBeDataFormatInt32); 857 DFG_ASSERT(m_jit.graph(), m_currentNode,mustBeDataFormatInt32 == DataFormatInt32);857 RELEASE_ASSERT(mustBeDataFormatInt32 == DataFormatInt32); 858 858 return result; 859 859 } … … 890 890 DataFormat spillFormat = info.spillFormat(); 891 891 892 DFG_ASSERT(m_jit.graph(), m_currentNode,spillFormat == DataFormatInt52 || spillFormat == DataFormatStrictInt52);892 RELEASE_ASSERT(spillFormat == DataFormatInt52 || spillFormat == DataFormatStrictInt52); 893 893 894 894 m_gprs.retain(gpr, virtualRegister, SpillOrderSpilled); … … 942 942 943 943 default: 944 DFG_CRASH(m_jit.graph(), m_currentNode, "Bad data format");944 RELEASE_ASSERT_NOT_REACHED(); 945 945 return InvalidGPRReg; 946 946 } … … 973 973 974 974 DataFormat spillFormat = info.spillFormat(); 975 DFG_ASSERT(m_jit.graph(), m_currentNode,spillFormat == DataFormatDouble);975 RELEASE_ASSERT(spillFormat == DataFormatDouble); 976 976 FPRReg fpr = fprAllocate(); 977 977 m_jit.loadDouble(JITCompiler::addressFor(virtualRegister), fpr); … … 981 981 } 982 982 983 DFG_ASSERT(m_jit.graph(), m_currentNode,info.registerFormat() == DataFormatDouble);983 RELEASE_ASSERT(info.registerFormat() == DataFormatDouble); 984 984 FPRReg fpr = info.fpr(); 985 985 m_fprs.lock(fpr); … … 996 996 GenerationInfo& info = generationInfoFromVirtualRegister(virtualRegister); 997 997 998 if (edge->hasConstant() && !edge->isCellConstant()) { 999 // Better to fail early on constants. 1000 terminateSpeculativeExecution(Uncountable, JSValueRegs(), 0); 1001 return allocate(); 1002 } 1003 998 1004 switch (info.registerFormat()) { 999 1005 case DataFormatNone: { … … 1002 1008 if (edge->hasConstant()) { 1003 1009 JSValue jsValue = edge->asJSValue(); 1004 if (jsValue.isCell()) { 1005 m_gprs.retain(gpr, virtualRegister, SpillOrderConstant); 1006 m_jit.move(MacroAssembler::TrustedImm64(JSValue::encode(jsValue)), gpr); 1007 info.fillJSValue(*m_stream, gpr, DataFormatJSCell); 1008 return gpr; 1009 } 1010 terminateSpeculativeExecution(Uncountable, JSValueRegs(), 0); 1010 m_gprs.retain(gpr, virtualRegister, SpillOrderConstant); 1011 m_jit.move(MacroAssembler::TrustedImm64(JSValue::encode(jsValue)), gpr); 1012 info.fillJSValue(*m_stream, gpr, DataFormatJSCell); 1011 1013 return gpr; 1012 1014 } … … 1061 1063 case DataFormatInt52: 1062 1064 case DataFormatStrictInt52: 1063 DFG_CRASH(m_jit.graph(), m_currentNode, "Bad data format");1065 RELEASE_ASSERT_NOT_REACHED(); 1064 1066 1065 1067 default: 1066 DFG_CRASH(m_jit.graph(), m_currentNode, "Corrupt data format");1068 RELEASE_ASSERT_NOT_REACHED(); 1067 1069 return InvalidGPRReg; 1068 1070 } … … 1097 1099 return gpr; 1098 1100 } 1099 DFG_ASSERT(m_jit.graph(), m_currentNode,info.spillFormat() & DataFormatJS);1101 RELEASE_ASSERT(info.spillFormat() & DataFormatJS); 1100 1102 m_gprs.retain(gpr, virtualRegister, SpillOrderSpilled); 1101 1103 m_jit.load64(JITCompiler::addressFor(virtualRegister), gpr); … … 1142 1144 case DataFormatInt52: 1143 1145 case DataFormatStrictInt52: 1144 DFG_CRASH(m_jit.graph(), m_currentNode, "Bad data format");1146 RELEASE_ASSERT_NOT_REACHED(); 1145 1147 1146 1148 default: 1147 DFG_CRASH(m_jit.graph(), m_currentNode, "Corrupt data format");1149 RELEASE_ASSERT_NOT_REACHED(); 1148 1150 return InvalidGPRReg; 1149 1151 } … … 1609 1611 1610 1612 default: 1611 DFG_CRASH(m_jit.graph(), node, "Bad use kind");1613 RELEASE_ASSERT_NOT_REACHED(); 1612 1614 break; 1613 1615 } … … 1764 1766 1765 1767 default: 1766 DFG_CRASH(m_jit.graph(), m_currentNode, "Bad use kind");1768 RELEASE_ASSERT_NOT_REACHED(); 1767 1769 } 1768 1770 } … … 1789 1791 case Identity: { 1790 1792 // CSE should always eliminate this. 1791 DFG_CRASH(m_jit.graph(), node, "Unexpected Identity node");1793 RELEASE_ASSERT_NOT_REACHED(); 1792 1794 break; 1793 1795 } … … 1870 1872 case ZombieHint: 1871 1873 case Check: { 1872 DFG_CRASH(m_jit.graph(), node, "Unexpected node");1874 RELEASE_ASSERT_NOT_REACHED(); 1873 1875 break; 1874 1876 } … … 1930 1932 1931 1933 default: 1932 DFG_CRASH(m_jit.graph(), node, "Bad flush format");1934 RELEASE_ASSERT_NOT_REACHED(); 1933 1935 break; 1934 1936 } … … 2068 2070 2069 2071 default: 2070 DFG_CRASH(m_jit.graph(), node, "Bad use kind");2072 RELEASE_ASSERT_NOT_REACHED(); 2071 2073 } 2072 2074 break; … … 2148 2150 2149 2151 default: 2150 DFG_CRASH(m_jit.graph(), node, "Bad use kind");2152 RELEASE_ASSERT_NOT_REACHED(); 2151 2153 break; 2152 2154 } … … 2215 2217 2216 2218 default: 2217 DFG_CRASH(m_jit.graph(), node, "Bad use kind");2219 RELEASE_ASSERT_NOT_REACHED(); 2218 2220 break; 2219 2221 } … … 2337 2339 case Array::SelectUsingPredictions: 2338 2340 case Array::ForceExit: 2339 DFG_CRASH(m_jit.graph(), node, "Bad array mode type"); 2341 RELEASE_ASSERT_NOT_REACHED(); 2342 terminateSpeculativeExecution(InadequateCoverage, JSValueRegs(), 0); 2340 2343 break; 2341 2344 case Array::Generic: { … … 2538 2541 case Array::SelectUsingPredictions: 2539 2542 case Array::ForceExit: 2540 DFG_CRASH(m_jit.graph(), node, "Bad array mode type"); 2543 RELEASE_ASSERT_NOT_REACHED(); 2544 terminateSpeculativeExecution(InadequateCoverage, JSValueRegs(), 0); 2545 alreadyHandled = true; 2541 2546 break; 2542 2547 case Array::Generic: { 2543 DFG_ASSERT(m_jit.graph(), node,node->op() == PutByVal);2548 RELEASE_ASSERT(node->op() == PutByVal); 2544 2549 2545 2550 JSValueOperand arg1(this, child1); … … 3114 3119 3115 3120 default: 3116 DFG_CRASH(m_jit.graph(), node, "Bad use kind");3121 RELEASE_ASSERT_NOT_REACHED(); 3117 3122 break; 3118 3123 } … … 3121 3126 3122 3127 case ToPrimitive: { 3123 DFG_ASSERT(m_jit.graph(), node,node->child1().useKind() == UntypedUse);3128 RELEASE_ASSERT(node->child1().useKind() == UntypedUse); 3124 3129 JSValueOperand op1(this, node->child1()); 3125 3130 GPRTemporary result(this, Reuse, op1); … … 3188 3193 if (!globalObject->isHavingABadTime() && !hasAnyArrayStorage(node->indexingType())) { 3189 3194 Structure* structure = globalObject->arrayStructureForIndexingTypeDuringAllocation(node->indexingType()); 3190 DFG_ASSERT(m_jit.graph(), node,structure->indexingType() == node->indexingType());3195 RELEASE_ASSERT(structure->indexingType() == node->indexingType()); 3191 3196 ASSERT( 3192 3197 hasUndecided(structure->indexingType()) … … 3439 3444 emitAllocateJSArray(resultGPR, globalObject->arrayStructureForIndexingTypeDuringAllocation(indexingType), storageGPR, numElements); 3440 3445 3441 DFG_ASSERT(m_jit.graph(), node,indexingType & IsArray);3446 RELEASE_ASSERT(indexingType & IsArray); 3442 3447 JSValue* data = m_jit.codeBlock()->constantBuffer(node->startConstant()); 3443 3448 if (indexingType == ArrayWithDouble) { … … 3493 3498 } 3494 3499 default: 3495 DFG_CRASH(m_jit.graph(), node, "Bad use kind");3500 RELEASE_ASSERT_NOT_REACHED(); 3496 3501 break; 3497 3502 } … … 3723 3728 3724 3729 default: 3725 DFG_CRASH(m_jit.graph(), node, "Bad use kind");3730 RELEASE_ASSERT_NOT_REACHED(); 3726 3731 break; 3727 3732 } … … 3773 3778 3774 3779 default: 3775 DFG_CRASH(m_jit.graph(), node, "Bad use kind");3780 RELEASE_ASSERT_NOT_REACHED(); 3776 3781 break; 3777 3782 } … … 3829 3834 } 3830 3835 3836 noResult(node); 3837 break; 3838 } 3839 3840 case PhantomPutStructure: { 3841 ASSERT(isKnownCell(node->child1().node())); 3842 m_jit.jitCode()->common.notifyCompilingStructureTransition(m_jit.graph().m_plan, m_jit.codeBlock(), node); 3831 3843 noResult(node); 3832 3844 break; … … 4237 4249 4238 4250 case CreateActivation: { 4239 DFG_ASSERT(m_jit.graph(), node,!node->origin.semantic.inlineCallFrame);4251 RELEASE_ASSERT(!node->origin.semantic.inlineCallFrame); 4240 4252 4241 4253 JSValueOperand value(this, node->child1()); … … 4310 4322 4311 4323 case TearOffActivation: { 4312 DFG_ASSERT(m_jit.graph(), node,!node->origin.semantic.inlineCallFrame);4324 RELEASE_ASSERT(!node->origin.semantic.inlineCallFrame); 4313 4325 4314 4326 JSValueOperand activationValue(this, node->child1()); … … 4382 4394 } 4383 4395 4384 DFG_ASSERT(m_jit.graph(), node,!node->origin.semantic.inlineCallFrame);4396 RELEASE_ASSERT(!node->origin.semantic.inlineCallFrame); 4385 4397 m_jit.load32(JITCompiler::payloadFor(JSStack::ArgumentCount), resultGPR); 4386 4398 m_jit.sub32(TrustedImm32(1), resultGPR); … … 4458 4470 JITCompiler::JumpList slowArgumentOutOfBounds; 4459 4471 if (m_jit.symbolTableFor(node->origin.semantic)->slowArguments()) { 4460 DFG_ASSERT(m_jit.graph(), node,!node->origin.semantic.inlineCallFrame);4472 RELEASE_ASSERT(!node->origin.semantic.inlineCallFrame); 4461 4473 const SlowArgument* slowArguments = m_jit.graph().m_slowArguments.get(); 4462 4474 … … 4525 4537 JITCompiler::JumpList slowArgumentOutOfBounds; 4526 4538 if (m_jit.symbolTableFor(node->origin.semantic)->slowArguments()) { 4527 DFG_ASSERT(m_jit.graph(), node,!node->origin.semantic.inlineCallFrame);4539 RELEASE_ASSERT(!node->origin.semantic.inlineCallFrame); 4528 4540 const SlowArgument* slowArguments = m_jit.graph().m_slowArguments.get(); 4529 4541 … … 4660 4672 4661 4673 case Unreachable: 4662 DFG_CRASH(m_jit.graph(), node, "Unexpected Unreachable node");4674 RELEASE_ASSERT_NOT_REACHED(); 4663 4675 break; 4664 4676 … … 4728 4740 case CheckTierUpAtReturn: 4729 4741 case CheckTierUpAndOSREnter: 4730 DFG_CRASH(m_jit.graph(), node, "Unexpected tier-up node");4742 RELEASE_ASSERT_NOT_REACHED(); 4731 4743 break; 4732 4744 #endif // ENABLE(FTL_JIT) … … 4744 4756 case MultiPutByOffset: 4745 4757 case FiatInt52: 4746 DFG_CRASH(m_jit.graph(), node, "Unexpected FTL node");4758 RELEASE_ASSERT_NOT_REACHED(); 4747 4759 break; 4748 4760 }
Note:
See TracChangeset
for help on using the changeset viewer.