• Home
  • Raw
  • Download

Lines Matching refs:instr

478 void LChunk::AddInstruction(LInstruction* instr, HBasicBlock* block) {  in AddInstruction()  argument
481 if (instr->IsControl()) { in AddInstruction()
484 instructions_.Add(instr); in AddInstruction()
487 instructions_.Add(instr); in AddInstruction()
490 if (instr->HasPointerMap()) { in AddInstruction()
491 pointer_maps_.Add(instr->pointer_map()); in AddInstruction()
492 instr->pointer_map()->set_lithium_position(index); in AddInstruction()
671 HInstruction* instr = HInstruction::cast(value); in Use() local
672 VisitInstruction(instr); in Use()
680 LInstruction* LChunkBuilder::Define(LTemplateInstruction<1, I, T>* instr, in Define() argument
683 instr->set_result(result); in Define()
684 return instr; in Define()
690 LTemplateInstruction<1, I, T>* instr) { in DefineAsRegister() argument
691 return Define(instr, in DefineAsRegister()
698 LTemplateInstruction<1, I, T>* instr, int index) { in DefineAsSpilled() argument
699 return Define(instr, in DefineAsSpilled()
706 LTemplateInstruction<1, I, T>* instr) { in DefineSameAsFirst() argument
707 return Define(instr, in DefineSameAsFirst()
714 LTemplateInstruction<1, I, T>* instr, Register reg) { in DefineFixed() argument
715 return Define(instr, ToUnallocated(reg)); in DefineFixed()
721 LTemplateInstruction<1, I, T>* instr, DoubleRegister reg) { in DefineFixedDouble() argument
722 return Define(instr, ToUnallocated(reg)); in DefineFixedDouble()
726 LInstruction* LChunkBuilder::AssignEnvironment(LInstruction* instr) { in AssignEnvironment() argument
729 instr->set_environment(CreateEnvironment(hydrogen_env, in AssignEnvironment()
731 return instr; in AssignEnvironment()
736 LInstruction* instr, int ast_id) { in SetInstructionPendingDeoptimizationEnvironment() argument
739 instruction_pending_deoptimization_environment_ = instr; in SetInstructionPendingDeoptimizationEnvironment()
741 return instr; in SetInstructionPendingDeoptimizationEnvironment()
751 LInstruction* LChunkBuilder::MarkAsCall(LInstruction* instr, in MarkAsCall() argument
755 instr->VerifyCall(); in MarkAsCall()
757 instr->MarkAsCall(); in MarkAsCall()
758 instr = AssignPointerMap(instr); in MarkAsCall()
763 instr = SetInstructionPendingDeoptimizationEnvironment( in MarkAsCall()
764 instr, sim->ast_id()); in MarkAsCall()
774 if (needs_environment && !instr->HasEnvironment()) { in MarkAsCall()
775 instr = AssignEnvironment(instr); in MarkAsCall()
778 return instr; in MarkAsCall()
782 LInstruction* LChunkBuilder::MarkAsSaveDoubles(LInstruction* instr) { in MarkAsSaveDoubles() argument
783 instr->MarkAsSaveDoubles(); in MarkAsSaveDoubles()
784 return instr; in MarkAsSaveDoubles()
788 LInstruction* LChunkBuilder::AssignPointerMap(LInstruction* instr) { in AssignPointerMap() argument
789 ASSERT(!instr->HasPointerMap()); in AssignPointerMap()
790 instr->set_pointer_map(new(zone()) LPointerMap(position_)); in AssignPointerMap()
791 return instr; in AssignPointerMap()
818 LInstruction* LChunkBuilder::DoBlockEntry(HBlockEntry* instr) { in DoBlockEntry() argument
819 return new(zone()) LLabel(instr->block()); in DoBlockEntry()
823 LInstruction* LChunkBuilder::DoSoftDeoptimize(HSoftDeoptimize* instr) { in DoSoftDeoptimize() argument
828 LInstruction* LChunkBuilder::DoDeoptimize(HDeoptimize* instr) { in DoDeoptimize() argument
834 HBitwiseBinaryOperation* instr) { in DoShift() argument
835 if (instr->representation().IsTagged()) { in DoShift()
836 ASSERT(instr->left()->representation().IsTagged()); in DoShift()
837 ASSERT(instr->right()->representation().IsTagged()); in DoShift()
839 LOperand* left = UseFixed(instr->left(), a1); in DoShift()
840 LOperand* right = UseFixed(instr->right(), a0); in DoShift()
842 return MarkAsCall(DefineFixed(result, v0), instr); in DoShift()
845 ASSERT(instr->representation().IsInteger32()); in DoShift()
846 ASSERT(instr->left()->representation().IsInteger32()); in DoShift()
847 ASSERT(instr->right()->representation().IsInteger32()); in DoShift()
848 LOperand* left = UseRegisterAtStart(instr->left()); in DoShift()
850 HValue* right_value = instr->right(); in DoShift()
866 for (HUseIterator it(instr->uses()); !it.Done(); it.Advance()) { in DoShift()
881 HArithmeticBinaryOperation* instr) { in DoArithmeticD() argument
882 ASSERT(instr->representation().IsDouble()); in DoArithmeticD()
883 ASSERT(instr->left()->representation().IsDouble()); in DoArithmeticD()
884 ASSERT(instr->right()->representation().IsDouble()); in DoArithmeticD()
886 LOperand* left = UseRegisterAtStart(instr->left()); in DoArithmeticD()
887 LOperand* right = UseRegisterAtStart(instr->right()); in DoArithmeticD()
894 HArithmeticBinaryOperation* instr) { in DoArithmeticT() argument
900 HValue* left = instr->left(); in DoArithmeticT()
901 HValue* right = instr->right(); in DoArithmeticT()
908 return MarkAsCall(DefineFixed(result, v0), instr); in DoArithmeticT()
979 LInstruction* instr = current->CompileToLithium(this); in VisitInstruction() local
981 if (instr != NULL) { in VisitInstruction()
982 if (FLAG_stress_pointer_maps && !instr->HasPointerMap()) { in VisitInstruction()
983 instr = AssignPointerMap(instr); in VisitInstruction()
985 if (FLAG_stress_environments && !instr->HasEnvironment()) { in VisitInstruction()
986 instr = AssignEnvironment(instr); in VisitInstruction()
988 instr->set_hydrogen_value(current); in VisitInstruction()
989 chunk_->AddInstruction(instr, current_block_); in VisitInstruction()
1038 LInstruction* LChunkBuilder::DoGoto(HGoto* instr) { in DoGoto() argument
1039 return new(zone()) LGoto(instr->FirstSuccessor()->block_id()); in DoGoto()
1043 LInstruction* LChunkBuilder::DoBranch(HBranch* instr) { in DoBranch() argument
1044 HValue* value = instr->value(); in DoBranch()
1047 ? instr->FirstSuccessor() in DoBranch()
1048 : instr->SecondSuccessor(); in DoBranch()
1064 LInstruction* LChunkBuilder::DoCompareMap(HCompareMap* instr) { in DoCompareMap() argument
1065 ASSERT(instr->value()->representation().IsTagged()); in DoCompareMap()
1066 LOperand* value = UseRegisterAtStart(instr->value()); in DoCompareMap()
1083 LInstruction* LChunkBuilder::DoInstanceOf(HInstanceOf* instr) { in DoInstanceOf() argument
1085 new(zone()) LInstanceOf(UseFixed(instr->left(), a0), in DoInstanceOf()
1086 UseFixed(instr->right(), a1)); in DoInstanceOf()
1087 return MarkAsCall(DefineFixed(result, v0), instr); in DoInstanceOf()
1092 HInstanceOfKnownGlobal* instr) { in DoInstanceOfKnownGlobal() argument
1094 new(zone()) LInstanceOfKnownGlobal(UseFixed(instr->left(), a0), in DoInstanceOfKnownGlobal()
1096 return MarkAsCall(DefineFixed(result, v0), instr); in DoInstanceOfKnownGlobal()
1100 LInstruction* LChunkBuilder::DoWrapReceiver(HWrapReceiver* instr) { in DoWrapReceiver() argument
1101 LOperand* receiver = UseRegisterAtStart(instr->receiver()); in DoWrapReceiver()
1102 LOperand* function = UseRegisterAtStart(instr->function()); in DoWrapReceiver()
1108 LInstruction* LChunkBuilder::DoApplyArguments(HApplyArguments* instr) { in DoApplyArguments() argument
1109 LOperand* function = UseFixed(instr->function(), a1); in DoApplyArguments()
1110 LOperand* receiver = UseFixed(instr->receiver(), a0); in DoApplyArguments()
1111 LOperand* length = UseFixed(instr->length(), a2); in DoApplyArguments()
1112 LOperand* elements = UseFixed(instr->elements(), a3); in DoApplyArguments()
1117 return MarkAsCall(DefineFixed(result, v0), instr, CAN_DEOPTIMIZE_EAGERLY); in DoApplyArguments()
1121 LInstruction* LChunkBuilder::DoPushArgument(HPushArgument* instr) { in DoPushArgument() argument
1123 LOperand* argument = Use(instr->argument()); in DoPushArgument()
1128 LInstruction* LChunkBuilder::DoThisFunction(HThisFunction* instr) { in DoThisFunction() argument
1129 return instr->HasNoUses() in DoThisFunction()
1135 LInstruction* LChunkBuilder::DoContext(HContext* instr) { in DoContext() argument
1136 return instr->HasNoUses() ? NULL : DefineAsRegister(new(zone()) LContext); in DoContext()
1140 LInstruction* LChunkBuilder::DoOuterContext(HOuterContext* instr) { in DoOuterContext() argument
1141 LOperand* context = UseRegisterAtStart(instr->value()); in DoOuterContext()
1146 LInstruction* LChunkBuilder::DoDeclareGlobals(HDeclareGlobals* instr) { in DoDeclareGlobals() argument
1147 return MarkAsCall(new(zone()) LDeclareGlobals, instr); in DoDeclareGlobals()
1151 LInstruction* LChunkBuilder::DoGlobalObject(HGlobalObject* instr) { in DoGlobalObject() argument
1152 LOperand* context = UseRegisterAtStart(instr->value()); in DoGlobalObject()
1157 LInstruction* LChunkBuilder::DoGlobalReceiver(HGlobalReceiver* instr) { in DoGlobalReceiver() argument
1158 LOperand* global_object = UseRegisterAtStart(instr->value()); in DoGlobalReceiver()
1164 HCallConstantFunction* instr) { in DoCallConstantFunction() argument
1165 argument_count_ -= instr->argument_count(); in DoCallConstantFunction()
1166 return MarkAsCall(DefineFixed(new(zone()) LCallConstantFunction, v0), instr); in DoCallConstantFunction()
1170 LInstruction* LChunkBuilder::DoInvokeFunction(HInvokeFunction* instr) { in DoInvokeFunction() argument
1171 LOperand* function = UseFixed(instr->function(), a1); in DoInvokeFunction()
1172 argument_count_ -= instr->argument_count(); in DoInvokeFunction()
1174 return MarkAsCall(DefineFixed(result, v0), instr, CANNOT_DEOPTIMIZE_EAGERLY); in DoInvokeFunction()
1178 LInstruction* LChunkBuilder::DoUnaryMathOperation(HUnaryMathOperation* instr) { in DoUnaryMathOperation() argument
1179 BuiltinFunctionId op = instr->op(); in DoUnaryMathOperation()
1181 LOperand* input = UseFixedDouble(instr->value(), f4); in DoUnaryMathOperation()
1183 return MarkAsCall(DefineFixedDouble(result, f4), instr); in DoUnaryMathOperation()
1187 LOperand* input = UseFixedDouble(instr->value(), f8); in DoUnaryMathOperation()
1192 LOperand* input = UseRegisterAtStart(instr->value()); in DoUnaryMathOperation()
1212 LInstruction* LChunkBuilder::DoCallKeyed(HCallKeyed* instr) { in DoCallKeyed() argument
1213 ASSERT(instr->key()->representation().IsTagged()); in DoCallKeyed()
1214 argument_count_ -= instr->argument_count(); in DoCallKeyed()
1215 LOperand* key = UseFixed(instr->key(), a2); in DoCallKeyed()
1216 return MarkAsCall(DefineFixed(new(zone()) LCallKeyed(key), v0), instr); in DoCallKeyed()
1220 LInstruction* LChunkBuilder::DoCallNamed(HCallNamed* instr) { in DoCallNamed() argument
1221 argument_count_ -= instr->argument_count(); in DoCallNamed()
1222 return MarkAsCall(DefineFixed(new(zone()) LCallNamed, v0), instr); in DoCallNamed()
1226 LInstruction* LChunkBuilder::DoCallGlobal(HCallGlobal* instr) { in DoCallGlobal() argument
1227 argument_count_ -= instr->argument_count(); in DoCallGlobal()
1228 return MarkAsCall(DefineFixed(new(zone()) LCallGlobal, v0), instr); in DoCallGlobal()
1232 LInstruction* LChunkBuilder::DoCallKnownGlobal(HCallKnownGlobal* instr) { in DoCallKnownGlobal() argument
1233 argument_count_ -= instr->argument_count(); in DoCallKnownGlobal()
1234 return MarkAsCall(DefineFixed(new(zone()) LCallKnownGlobal, v0), instr); in DoCallKnownGlobal()
1238 LInstruction* LChunkBuilder::DoCallNew(HCallNew* instr) { in DoCallNew() argument
1239 LOperand* constructor = UseFixed(instr->constructor(), a1); in DoCallNew()
1240 argument_count_ -= instr->argument_count(); in DoCallNew()
1242 return MarkAsCall(DefineFixed(result, v0), instr); in DoCallNew()
1246 LInstruction* LChunkBuilder::DoCallFunction(HCallFunction* instr) { in DoCallFunction() argument
1247 LOperand* function = UseFixed(instr->function(), a1); in DoCallFunction()
1248 argument_count_ -= instr->argument_count(); in DoCallFunction()
1250 instr); in DoCallFunction()
1254 LInstruction* LChunkBuilder::DoCallRuntime(HCallRuntime* instr) { in DoCallRuntime() argument
1255 argument_count_ -= instr->argument_count(); in DoCallRuntime()
1256 return MarkAsCall(DefineFixed(new(zone()) LCallRuntime, v0), instr); in DoCallRuntime()
1260 LInstruction* LChunkBuilder::DoShr(HShr* instr) { in DoShr() argument
1261 return DoShift(Token::SHR, instr); in DoShr()
1265 LInstruction* LChunkBuilder::DoSar(HSar* instr) { in DoSar() argument
1266 return DoShift(Token::SAR, instr); in DoSar()
1270 LInstruction* LChunkBuilder::DoShl(HShl* instr) { in DoShl() argument
1271 return DoShift(Token::SHL, instr); in DoShl()
1275 LInstruction* LChunkBuilder::DoBitwise(HBitwise* instr) { in DoBitwise() argument
1276 if (instr->representation().IsInteger32()) { in DoBitwise()
1277 ASSERT(instr->left()->representation().IsInteger32()); in DoBitwise()
1278 ASSERT(instr->right()->representation().IsInteger32()); in DoBitwise()
1280 LOperand* left = UseRegisterAtStart(instr->LeastConstantOperand()); in DoBitwise()
1281 LOperand* right = UseOrConstantAtStart(instr->MostConstantOperand()); in DoBitwise()
1284 ASSERT(instr->representation().IsTagged()); in DoBitwise()
1285 ASSERT(instr->left()->representation().IsTagged()); in DoBitwise()
1286 ASSERT(instr->right()->representation().IsTagged()); in DoBitwise()
1288 LOperand* left = UseFixed(instr->left(), a1); in DoBitwise()
1289 LOperand* right = UseFixed(instr->right(), a0); in DoBitwise()
1290 LArithmeticT* result = new(zone()) LArithmeticT(instr->op(), left, right); in DoBitwise()
1291 return MarkAsCall(DefineFixed(result, v0), instr); in DoBitwise()
1296 LInstruction* LChunkBuilder::DoBitNot(HBitNot* instr) { in DoBitNot() argument
1297 ASSERT(instr->value()->representation().IsInteger32()); in DoBitNot()
1298 ASSERT(instr->representation().IsInteger32()); in DoBitNot()
1299 LOperand* value = UseRegisterAtStart(instr->value()); in DoBitNot()
1304 LInstruction* LChunkBuilder::DoDiv(HDiv* instr) { in DoDiv() argument
1305 if (instr->representation().IsDouble()) { in DoDiv()
1306 return DoArithmeticD(Token::DIV, instr); in DoDiv()
1307 } else if (instr->representation().IsInteger32()) { in DoDiv()
1313 LOperand* dividend = UseFixed(instr->left(), a0); in DoDiv()
1314 LOperand* divisor = UseFixed(instr->right(), a1); in DoDiv()
1318 return DoArithmeticT(Token::DIV, instr); in DoDiv()
1323 LInstruction* LChunkBuilder::DoMod(HMod* instr) { in DoMod() argument
1324 if (instr->representation().IsInteger32()) { in DoMod()
1325 ASSERT(instr->left()->representation().IsInteger32()); in DoMod()
1326 ASSERT(instr->right()->representation().IsInteger32()); in DoMod()
1329 if (instr->HasPowerOf2Divisor()) { in DoMod()
1330 ASSERT(!instr->CheckFlag(HValue::kCanBeDivByZero)); in DoMod()
1331 LOperand* value = UseRegisterAtStart(instr->left()); in DoMod()
1332 mod = new(zone()) LModI(value, UseOrConstant(instr->right())); in DoMod()
1334 LOperand* dividend = UseRegister(instr->left()); in DoMod()
1335 LOperand* divisor = UseRegister(instr->right()); in DoMod()
1343 if (instr->CheckFlag(HValue::kBailoutOnMinusZero) || in DoMod()
1344 instr->CheckFlag(HValue::kCanBeDivByZero)) { in DoMod()
1349 } else if (instr->representation().IsTagged()) { in DoMod()
1350 return DoArithmeticT(Token::MOD, instr); in DoMod()
1352 ASSERT(instr->representation().IsDouble()); in DoMod()
1356 LOperand* left = UseFixedDouble(instr->left(), f2); in DoMod()
1357 LOperand* right = UseFixedDouble(instr->right(), f4); in DoMod()
1359 return MarkAsCall(DefineFixedDouble(result, f2), instr); in DoMod()
1364 LInstruction* LChunkBuilder::DoMul(HMul* instr) { in DoMul() argument
1365 if (instr->representation().IsInteger32()) { in DoMul()
1366 ASSERT(instr->left()->representation().IsInteger32()); in DoMul()
1367 ASSERT(instr->right()->representation().IsInteger32()); in DoMul()
1369 LOperand* right = UseOrConstant(instr->MostConstantOperand()); in DoMul()
1371 if (instr->CheckFlag(HValue::kBailoutOnMinusZero) && in DoMul()
1372 (instr->CheckFlag(HValue::kCanOverflow) || in DoMul()
1374 left = UseRegister(instr->LeastConstantOperand()); in DoMul()
1377 left = UseRegisterAtStart(instr->LeastConstantOperand()); in DoMul()
1380 if (instr->CheckFlag(HValue::kCanOverflow) || in DoMul()
1381 instr->CheckFlag(HValue::kBailoutOnMinusZero)) { in DoMul()
1386 } else if (instr->representation().IsDouble()) { in DoMul()
1387 return DoArithmeticD(Token::MUL, instr); in DoMul()
1390 return DoArithmeticT(Token::MUL, instr); in DoMul()
1395 LInstruction* LChunkBuilder::DoSub(HSub* instr) { in DoSub() argument
1396 if (instr->representation().IsInteger32()) { in DoSub()
1397 ASSERT(instr->left()->representation().IsInteger32()); in DoSub()
1398 ASSERT(instr->right()->representation().IsInteger32()); in DoSub()
1399 LOperand* left = UseRegisterAtStart(instr->left()); in DoSub()
1400 LOperand* right = UseOrConstantAtStart(instr->right()); in DoSub()
1403 if (instr->CheckFlag(HValue::kCanOverflow)) { in DoSub()
1407 } else if (instr->representation().IsDouble()) { in DoSub()
1408 return DoArithmeticD(Token::SUB, instr); in DoSub()
1410 return DoArithmeticT(Token::SUB, instr); in DoSub()
1415 LInstruction* LChunkBuilder::DoAdd(HAdd* instr) { in DoAdd() argument
1416 if (instr->representation().IsInteger32()) { in DoAdd()
1417 ASSERT(instr->left()->representation().IsInteger32()); in DoAdd()
1418 ASSERT(instr->right()->representation().IsInteger32()); in DoAdd()
1419 LOperand* left = UseRegisterAtStart(instr->LeastConstantOperand()); in DoAdd()
1420 LOperand* right = UseOrConstantAtStart(instr->MostConstantOperand()); in DoAdd()
1423 if (instr->CheckFlag(HValue::kCanOverflow)) { in DoAdd()
1427 } else if (instr->representation().IsDouble()) { in DoAdd()
1428 return DoArithmeticD(Token::ADD, instr); in DoAdd()
1430 ASSERT(instr->representation().IsTagged()); in DoAdd()
1431 return DoArithmeticT(Token::ADD, instr); in DoAdd()
1436 LInstruction* LChunkBuilder::DoPower(HPower* instr) { in DoPower() argument
1437 ASSERT(instr->representation().IsDouble()); in DoPower()
1440 Representation exponent_type = instr->right()->representation(); in DoPower()
1441 ASSERT(instr->left()->representation().IsDouble()); in DoPower()
1442 LOperand* left = UseFixedDouble(instr->left(), f2); in DoPower()
1444 UseFixedDouble(instr->right(), f4) : in DoPower()
1445 UseFixed(instr->right(), a2); in DoPower()
1448 instr, in DoPower()
1453 LInstruction* LChunkBuilder::DoRandom(HRandom* instr) { in DoRandom() argument
1454 ASSERT(instr->representation().IsDouble()); in DoRandom()
1455 ASSERT(instr->global_object()->representation().IsTagged()); in DoRandom()
1456 LOperand* global_object = UseFixed(instr->global_object(), a0); in DoRandom()
1458 return MarkAsCall(DefineFixedDouble(result, f0), instr); in DoRandom()
1462 LInstruction* LChunkBuilder::DoCompareGeneric(HCompareGeneric* instr) { in DoCompareGeneric() argument
1463 ASSERT(instr->left()->representation().IsTagged()); in DoCompareGeneric()
1464 ASSERT(instr->right()->representation().IsTagged()); in DoCompareGeneric()
1465 LOperand* left = UseFixed(instr->left(), a1); in DoCompareGeneric()
1466 LOperand* right = UseFixed(instr->right(), a0); in DoCompareGeneric()
1468 return MarkAsCall(DefineFixed(result, v0), instr); in DoCompareGeneric()
1473 HCompareIDAndBranch* instr) { in DoCompareIDAndBranch() argument
1474 Representation r = instr->GetInputRepresentation(); in DoCompareIDAndBranch()
1476 ASSERT(instr->left()->representation().IsInteger32()); in DoCompareIDAndBranch()
1477 ASSERT(instr->right()->representation().IsInteger32()); in DoCompareIDAndBranch()
1478 LOperand* left = UseRegisterOrConstantAtStart(instr->left()); in DoCompareIDAndBranch()
1479 LOperand* right = UseRegisterOrConstantAtStart(instr->right()); in DoCompareIDAndBranch()
1483 ASSERT(instr->left()->representation().IsDouble()); in DoCompareIDAndBranch()
1484 ASSERT(instr->right()->representation().IsDouble()); in DoCompareIDAndBranch()
1485 LOperand* left = UseRegisterAtStart(instr->left()); in DoCompareIDAndBranch()
1486 LOperand* right = UseRegisterAtStart(instr->right()); in DoCompareIDAndBranch()
1493 HCompareObjectEqAndBranch* instr) { in DoCompareObjectEqAndBranch() argument
1494 LOperand* left = UseRegisterAtStart(instr->left()); in DoCompareObjectEqAndBranch()
1495 LOperand* right = UseRegisterAtStart(instr->right()); in DoCompareObjectEqAndBranch()
1501 HCompareConstantEqAndBranch* instr) { in DoCompareConstantEqAndBranch() argument
1503 UseRegisterAtStart(instr->value())); in DoCompareConstantEqAndBranch()
1507 LInstruction* LChunkBuilder::DoIsNilAndBranch(HIsNilAndBranch* instr) { in DoIsNilAndBranch() argument
1508 ASSERT(instr->value()->representation().IsTagged()); in DoIsNilAndBranch()
1509 return new(zone()) LIsNilAndBranch(UseRegisterAtStart(instr->value())); in DoIsNilAndBranch()
1513 LInstruction* LChunkBuilder::DoIsObjectAndBranch(HIsObjectAndBranch* instr) { in DoIsObjectAndBranch() argument
1514 ASSERT(instr->value()->representation().IsTagged()); in DoIsObjectAndBranch()
1516 return new(zone()) LIsObjectAndBranch(UseRegisterAtStart(instr->value()), in DoIsObjectAndBranch()
1521 LInstruction* LChunkBuilder::DoIsStringAndBranch(HIsStringAndBranch* instr) { in DoIsStringAndBranch() argument
1522 ASSERT(instr->value()->representation().IsTagged()); in DoIsStringAndBranch()
1524 return new(zone()) LIsStringAndBranch(UseRegisterAtStart(instr->value()), in DoIsStringAndBranch()
1529 LInstruction* LChunkBuilder::DoIsSmiAndBranch(HIsSmiAndBranch* instr) { in DoIsSmiAndBranch() argument
1530 ASSERT(instr->value()->representation().IsTagged()); in DoIsSmiAndBranch()
1531 return new(zone()) LIsSmiAndBranch(Use(instr->value())); in DoIsSmiAndBranch()
1536 HIsUndetectableAndBranch* instr) { in DoIsUndetectableAndBranch() argument
1537 ASSERT(instr->value()->representation().IsTagged()); in DoIsUndetectableAndBranch()
1539 UseRegisterAtStart(instr->value()), TempRegister()); in DoIsUndetectableAndBranch()
1544 HStringCompareAndBranch* instr) { in DoStringCompareAndBranch() argument
1545 ASSERT(instr->left()->representation().IsTagged()); in DoStringCompareAndBranch()
1546 ASSERT(instr->right()->representation().IsTagged()); in DoStringCompareAndBranch()
1547 LOperand* left = UseFixed(instr->left(), a1); in DoStringCompareAndBranch()
1548 LOperand* right = UseFixed(instr->right(), a0); in DoStringCompareAndBranch()
1551 return MarkAsCall(result, instr); in DoStringCompareAndBranch()
1556 HHasInstanceTypeAndBranch* instr) { in DoHasInstanceTypeAndBranch() argument
1557 ASSERT(instr->value()->representation().IsTagged()); in DoHasInstanceTypeAndBranch()
1558 LOperand* value = UseRegisterAtStart(instr->value()); in DoHasInstanceTypeAndBranch()
1564 HGetCachedArrayIndex* instr) { in DoGetCachedArrayIndex() argument
1565 ASSERT(instr->value()->representation().IsTagged()); in DoGetCachedArrayIndex()
1566 LOperand* value = UseRegisterAtStart(instr->value()); in DoGetCachedArrayIndex()
1573 HHasCachedArrayIndexAndBranch* instr) { in DoHasCachedArrayIndexAndBranch() argument
1574 ASSERT(instr->value()->representation().IsTagged()); in DoHasCachedArrayIndexAndBranch()
1576 UseRegisterAtStart(instr->value())); in DoHasCachedArrayIndexAndBranch()
1581 HClassOfTestAndBranch* instr) { in DoClassOfTestAndBranch() argument
1582 ASSERT(instr->value()->representation().IsTagged()); in DoClassOfTestAndBranch()
1583 return new(zone()) LClassOfTestAndBranch(UseRegister(instr->value()), in DoClassOfTestAndBranch()
1588 LInstruction* LChunkBuilder::DoJSArrayLength(HJSArrayLength* instr) { in DoJSArrayLength() argument
1589 LOperand* array = UseRegisterAtStart(instr->value()); in DoJSArrayLength()
1595 HFixedArrayBaseLength* instr) { in DoFixedArrayBaseLength() argument
1596 LOperand* array = UseRegisterAtStart(instr->value()); in DoFixedArrayBaseLength()
1601 LInstruction* LChunkBuilder::DoElementsKind(HElementsKind* instr) { in DoElementsKind() argument
1602 LOperand* object = UseRegisterAtStart(instr->value()); in DoElementsKind()
1607 LInstruction* LChunkBuilder::DoValueOf(HValueOf* instr) { in DoValueOf() argument
1608 LOperand* object = UseRegister(instr->value()); in DoValueOf()
1614 LInstruction* LChunkBuilder::DoDateField(HDateField* instr) { in DoDateField() argument
1615 LOperand* object = UseFixed(instr->value(), a0); in DoDateField()
1616 LDateField* result = new LDateField(object, FixedTemp(a1), instr->index()); in DoDateField()
1617 return MarkAsCall(DefineFixed(result, v0), instr); in DoDateField()
1621 LInstruction* LChunkBuilder::DoBoundsCheck(HBoundsCheck* instr) { in DoBoundsCheck() argument
1622 LOperand* value = UseRegisterAtStart(instr->index()); in DoBoundsCheck()
1623 LOperand* length = UseRegister(instr->length()); in DoBoundsCheck()
1628 LInstruction* LChunkBuilder::DoAbnormalExit(HAbnormalExit* instr) { in DoAbnormalExit() argument
1635 LInstruction* LChunkBuilder::DoThrow(HThrow* instr) { in DoThrow() argument
1636 LOperand* value = UseFixed(instr->value(), a0); in DoThrow()
1637 return MarkAsCall(new(zone()) LThrow(value), instr); in DoThrow()
1641 LInstruction* LChunkBuilder::DoUseConst(HUseConst* instr) { in DoUseConst() argument
1654 LInstruction* LChunkBuilder::DoChange(HChange* instr) { in DoChange() argument
1655 Representation from = instr->from(); in DoChange()
1656 Representation to = instr->to(); in DoChange()
1659 LOperand* value = UseRegister(instr->value()); in DoChange()
1664 LOperand* value = UseRegisterAtStart(instr->value()); in DoChange()
1665 bool needs_check = !instr->value()->type().IsSmi(); in DoChange()
1671 LOperand* temp2 = instr->CanTruncateToInt32() ? TempRegister() in DoChange()
1673 LOperand* temp3 = instr->CanTruncateToInt32() ? FixedTemp(f22) in DoChange()
1685 LOperand* value = UseRegister(instr->value()); in DoChange()
1697 LOperand* value = UseRegister(instr->value()); in DoChange()
1699 LOperand* temp2 = instr->CanTruncateToInt32() ? TempRegister() : NULL; in DoChange()
1705 HValue* val = instr->value(); in DoChange()
1715 LOperand* value = Use(instr->value()); in DoChange()
1724 LInstruction* LChunkBuilder::DoCheckNonSmi(HCheckNonSmi* instr) { in DoCheckNonSmi() argument
1725 LOperand* value = UseRegisterAtStart(instr->value()); in DoCheckNonSmi()
1730 LInstruction* LChunkBuilder::DoCheckInstanceType(HCheckInstanceType* instr) { in DoCheckInstanceType() argument
1731 LOperand* value = UseRegisterAtStart(instr->value()); in DoCheckInstanceType()
1737 LInstruction* LChunkBuilder::DoCheckPrototypeMaps(HCheckPrototypeMaps* instr) { in DoCheckPrototypeMaps() argument
1745 LInstruction* LChunkBuilder::DoCheckSmi(HCheckSmi* instr) { in DoCheckSmi() argument
1746 LOperand* value = UseRegisterAtStart(instr->value()); in DoCheckSmi()
1751 LInstruction* LChunkBuilder::DoCheckFunction(HCheckFunction* instr) { in DoCheckFunction() argument
1752 LOperand* value = UseRegisterAtStart(instr->value()); in DoCheckFunction()
1757 LInstruction* LChunkBuilder::DoCheckMap(HCheckMap* instr) { in DoCheckMap() argument
1758 LOperand* value = UseRegisterAtStart(instr->value()); in DoCheckMap()
1764 LInstruction* LChunkBuilder::DoClampToUint8(HClampToUint8* instr) { in DoClampToUint8() argument
1765 HValue* value = instr->value(); in DoClampToUint8()
1783 LInstruction* LChunkBuilder::DoReturn(HReturn* instr) { in DoReturn() argument
1784 return new(zone()) LReturn(UseFixed(instr->value(), v0)); in DoReturn()
1788 LInstruction* LChunkBuilder::DoConstant(HConstant* instr) { in DoConstant() argument
1789 Representation r = instr->representation(); in DoConstant()
1803 LInstruction* LChunkBuilder::DoLoadGlobalCell(HLoadGlobalCell* instr) { in DoLoadGlobalCell() argument
1805 return instr->RequiresHoleCheck() in DoLoadGlobalCell()
1811 LInstruction* LChunkBuilder::DoLoadGlobalGeneric(HLoadGlobalGeneric* instr) { in DoLoadGlobalGeneric() argument
1812 LOperand* global_object = UseFixed(instr->global_object(), a0); in DoLoadGlobalGeneric()
1814 return MarkAsCall(DefineFixed(result, v0), instr); in DoLoadGlobalGeneric()
1818 LInstruction* LChunkBuilder::DoStoreGlobalCell(HStoreGlobalCell* instr) { in DoStoreGlobalCell() argument
1819 LOperand* value = UseRegister(instr->value()); in DoStoreGlobalCell()
1822 return instr->RequiresHoleCheck() in DoStoreGlobalCell()
1828 LInstruction* LChunkBuilder::DoStoreGlobalGeneric(HStoreGlobalGeneric* instr) { in DoStoreGlobalGeneric() argument
1829 LOperand* global_object = UseFixed(instr->global_object(), a1); in DoStoreGlobalGeneric()
1830 LOperand* value = UseFixed(instr->value(), a0); in DoStoreGlobalGeneric()
1833 return MarkAsCall(result, instr); in DoStoreGlobalGeneric()
1837 LInstruction* LChunkBuilder::DoLoadContextSlot(HLoadContextSlot* instr) { in DoLoadContextSlot() argument
1838 LOperand* context = UseRegisterAtStart(instr->value()); in DoLoadContextSlot()
1841 return instr->RequiresHoleCheck() ? AssignEnvironment(result) : result; in DoLoadContextSlot()
1845 LInstruction* LChunkBuilder::DoStoreContextSlot(HStoreContextSlot* instr) { in DoStoreContextSlot() argument
1848 if (instr->NeedsWriteBarrier()) { in DoStoreContextSlot()
1849 context = UseTempRegister(instr->context()); in DoStoreContextSlot()
1850 value = UseTempRegister(instr->value()); in DoStoreContextSlot()
1852 context = UseRegister(instr->context()); in DoStoreContextSlot()
1853 value = UseRegister(instr->value()); in DoStoreContextSlot()
1856 return instr->RequiresHoleCheck() ? AssignEnvironment(result) : result; in DoStoreContextSlot()
1860 LInstruction* LChunkBuilder::DoLoadNamedField(HLoadNamedField* instr) { in DoLoadNamedField() argument
1862 new(zone()) LLoadNamedField(UseRegisterAtStart(instr->object()))); in DoLoadNamedField()
1867 HLoadNamedFieldPolymorphic* instr) { in DoLoadNamedFieldPolymorphic() argument
1868 ASSERT(instr->representation().IsTagged()); in DoLoadNamedFieldPolymorphic()
1869 if (instr->need_generic()) { in DoLoadNamedFieldPolymorphic()
1870 LOperand* obj = UseFixed(instr->object(), a0); in DoLoadNamedFieldPolymorphic()
1873 return MarkAsCall(DefineFixed(result, v0), instr); in DoLoadNamedFieldPolymorphic()
1875 LOperand* obj = UseRegisterAtStart(instr->object()); in DoLoadNamedFieldPolymorphic()
1883 LInstruction* LChunkBuilder::DoLoadNamedGeneric(HLoadNamedGeneric* instr) { in DoLoadNamedGeneric() argument
1884 LOperand* object = UseFixed(instr->object(), a0); in DoLoadNamedGeneric()
1886 return MarkAsCall(result, instr); in DoLoadNamedGeneric()
1891 HLoadFunctionPrototype* instr) { in DoLoadFunctionPrototype() argument
1893 new(zone()) LLoadFunctionPrototype(UseRegister(instr->function())))); in DoLoadFunctionPrototype()
1897 LInstruction* LChunkBuilder::DoLoadElements(HLoadElements* instr) { in DoLoadElements() argument
1898 LOperand* input = UseRegisterAtStart(instr->value()); in DoLoadElements()
1904 HLoadExternalArrayPointer* instr) { in DoLoadExternalArrayPointer() argument
1905 LOperand* input = UseRegisterAtStart(instr->value()); in DoLoadExternalArrayPointer()
1911 HLoadKeyedFastElement* instr) { in DoLoadKeyedFastElement() argument
1912 ASSERT(instr->representation().IsTagged()); in DoLoadKeyedFastElement()
1913 ASSERT(instr->key()->representation().IsInteger32()); in DoLoadKeyedFastElement()
1914 LOperand* obj = UseRegisterAtStart(instr->object()); in DoLoadKeyedFastElement()
1915 LOperand* key = UseRegisterAtStart(instr->key()); in DoLoadKeyedFastElement()
1917 if (instr->RequiresHoleCheck()) AssignEnvironment(result); in DoLoadKeyedFastElement()
1923 HLoadKeyedFastDoubleElement* instr) { in DoLoadKeyedFastDoubleElement() argument
1924 ASSERT(instr->representation().IsDouble()); in DoLoadKeyedFastDoubleElement()
1925 ASSERT(instr->key()->representation().IsInteger32()); in DoLoadKeyedFastDoubleElement()
1926 LOperand* elements = UseTempRegister(instr->elements()); in DoLoadKeyedFastDoubleElement()
1927 LOperand* key = UseRegisterOrConstantAtStart(instr->key()); in DoLoadKeyedFastDoubleElement()
1935 HLoadKeyedSpecializedArrayElement* instr) { in DoLoadKeyedSpecializedArrayElement() argument
1936 ElementsKind elements_kind = instr->elements_kind(); in DoLoadKeyedSpecializedArrayElement()
1937 Representation representation(instr->representation()); in DoLoadKeyedSpecializedArrayElement()
1945 ASSERT(instr->key()->representation().IsInteger32()); in DoLoadKeyedSpecializedArrayElement()
1946 LOperand* external_pointer = UseRegister(instr->external_pointer()); in DoLoadKeyedSpecializedArrayElement()
1947 LOperand* key = UseRegisterOrConstant(instr->key()); in DoLoadKeyedSpecializedArrayElement()
1958 LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) { in DoLoadKeyedGeneric() argument
1959 LOperand* object = UseFixed(instr->object(), a1); in DoLoadKeyedGeneric()
1960 LOperand* key = UseFixed(instr->key(), a0); in DoLoadKeyedGeneric()
1964 return MarkAsCall(result, instr); in DoLoadKeyedGeneric()
1969 HStoreKeyedFastElement* instr) { in DoStoreKeyedFastElement() argument
1970 bool needs_write_barrier = instr->NeedsWriteBarrier(); in DoStoreKeyedFastElement()
1971 ASSERT(instr->value()->representation().IsTagged()); in DoStoreKeyedFastElement()
1972 ASSERT(instr->object()->representation().IsTagged()); in DoStoreKeyedFastElement()
1973 ASSERT(instr->key()->representation().IsInteger32()); in DoStoreKeyedFastElement()
1975 LOperand* obj = UseTempRegister(instr->object()); in DoStoreKeyedFastElement()
1977 ? UseTempRegister(instr->value()) in DoStoreKeyedFastElement()
1978 : UseRegisterAtStart(instr->value()); in DoStoreKeyedFastElement()
1980 ? UseTempRegister(instr->key()) in DoStoreKeyedFastElement()
1981 : UseRegisterOrConstantAtStart(instr->key()); in DoStoreKeyedFastElement()
1987 HStoreKeyedFastDoubleElement* instr) { in DoStoreKeyedFastDoubleElement() argument
1988 ASSERT(instr->value()->representation().IsDouble()); in DoStoreKeyedFastDoubleElement()
1989 ASSERT(instr->elements()->representation().IsTagged()); in DoStoreKeyedFastDoubleElement()
1990 ASSERT(instr->key()->representation().IsInteger32()); in DoStoreKeyedFastDoubleElement()
1992 LOperand* elements = UseRegisterAtStart(instr->elements()); in DoStoreKeyedFastDoubleElement()
1993 LOperand* val = UseTempRegister(instr->value()); in DoStoreKeyedFastDoubleElement()
1994 LOperand* key = UseRegisterOrConstantAtStart(instr->key()); in DoStoreKeyedFastDoubleElement()
2001 HStoreKeyedSpecializedArrayElement* instr) { in DoStoreKeyedSpecializedArrayElement() argument
2002 Representation representation(instr->value()->representation()); in DoStoreKeyedSpecializedArrayElement()
2003 ElementsKind elements_kind = instr->elements_kind(); in DoStoreKeyedSpecializedArrayElement()
2011 ASSERT(instr->external_pointer()->representation().IsExternal()); in DoStoreKeyedSpecializedArrayElement()
2012 ASSERT(instr->key()->representation().IsInteger32()); in DoStoreKeyedSpecializedArrayElement()
2014 LOperand* external_pointer = UseRegister(instr->external_pointer()); in DoStoreKeyedSpecializedArrayElement()
2019 ? UseTempRegister(instr->value()) in DoStoreKeyedSpecializedArrayElement()
2020 : UseRegister(instr->value()); in DoStoreKeyedSpecializedArrayElement()
2021 LOperand* key = UseRegisterOrConstant(instr->key()); in DoStoreKeyedSpecializedArrayElement()
2029 LInstruction* LChunkBuilder::DoStoreKeyedGeneric(HStoreKeyedGeneric* instr) { in DoStoreKeyedGeneric() argument
2030 LOperand* obj = UseFixed(instr->object(), a2); in DoStoreKeyedGeneric()
2031 LOperand* key = UseFixed(instr->key(), a1); in DoStoreKeyedGeneric()
2032 LOperand* val = UseFixed(instr->value(), a0); in DoStoreKeyedGeneric()
2034 ASSERT(instr->object()->representation().IsTagged()); in DoStoreKeyedGeneric()
2035 ASSERT(instr->key()->representation().IsTagged()); in DoStoreKeyedGeneric()
2036 ASSERT(instr->value()->representation().IsTagged()); in DoStoreKeyedGeneric()
2038 return MarkAsCall(new(zone()) LStoreKeyedGeneric(obj, key, val), instr); in DoStoreKeyedGeneric()
2043 HTransitionElementsKind* instr) { in DoTransitionElementsKind() argument
2044 if (instr->original_map()->elements_kind() == FAST_SMI_ONLY_ELEMENTS && in DoTransitionElementsKind()
2045 instr->transitioned_map()->elements_kind() == FAST_ELEMENTS) { in DoTransitionElementsKind()
2046 LOperand* object = UseRegister(instr->object()); in DoTransitionElementsKind()
2052 LOperand* object = UseFixed(instr->object(), a0); in DoTransitionElementsKind()
2059 return MarkAsCall(DefineFixed(result, v0), instr); in DoTransitionElementsKind()
2064 LInstruction* LChunkBuilder::DoStoreNamedField(HStoreNamedField* instr) { in DoStoreNamedField() argument
2065 bool needs_write_barrier = instr->NeedsWriteBarrier(); in DoStoreNamedField()
2068 ? UseTempRegister(instr->object()) in DoStoreNamedField()
2069 : UseRegisterAtStart(instr->object()); in DoStoreNamedField()
2072 ? UseTempRegister(instr->value()) in DoStoreNamedField()
2073 : UseRegister(instr->value()); in DoStoreNamedField()
2079 LInstruction* LChunkBuilder::DoStoreNamedGeneric(HStoreNamedGeneric* instr) { in DoStoreNamedGeneric() argument
2080 LOperand* obj = UseFixed(instr->object(), a1); in DoStoreNamedGeneric()
2081 LOperand* val = UseFixed(instr->value(), a0); in DoStoreNamedGeneric()
2084 return MarkAsCall(result, instr); in DoStoreNamedGeneric()
2088 LInstruction* LChunkBuilder::DoStringAdd(HStringAdd* instr) { in DoStringAdd() argument
2089 LOperand* left = UseRegisterAtStart(instr->left()); in DoStringAdd()
2090 LOperand* right = UseRegisterAtStart(instr->right()); in DoStringAdd()
2092 instr); in DoStringAdd()
2096 LInstruction* LChunkBuilder::DoStringCharCodeAt(HStringCharCodeAt* instr) { in DoStringCharCodeAt() argument
2097 LOperand* string = UseTempRegister(instr->string()); in DoStringCharCodeAt()
2098 LOperand* index = UseTempRegister(instr->index()); in DoStringCharCodeAt()
2104 LInstruction* LChunkBuilder::DoStringCharFromCode(HStringCharFromCode* instr) { in DoStringCharFromCode() argument
2105 LOperand* char_code = UseRegister(instr->value()); in DoStringCharFromCode()
2111 LInstruction* LChunkBuilder::DoStringLength(HStringLength* instr) { in DoStringLength() argument
2112 LOperand* string = UseRegisterAtStart(instr->value()); in DoStringLength()
2117 LInstruction* LChunkBuilder::DoAllocateObject(HAllocateObject* instr) { in DoAllocateObject() argument
2124 LInstruction* LChunkBuilder::DoFastLiteral(HFastLiteral* instr) { in DoFastLiteral() argument
2125 return MarkAsCall(DefineFixed(new(zone()) LFastLiteral, v0), instr); in DoFastLiteral()
2129 LInstruction* LChunkBuilder::DoArrayLiteral(HArrayLiteral* instr) { in DoArrayLiteral() argument
2130 return MarkAsCall(DefineFixed(new(zone()) LArrayLiteral, v0), instr); in DoArrayLiteral()
2134 LInstruction* LChunkBuilder::DoObjectLiteral(HObjectLiteral* instr) { in DoObjectLiteral() argument
2135 return MarkAsCall(DefineFixed(new(zone()) LObjectLiteral, v0), instr); in DoObjectLiteral()
2139 LInstruction* LChunkBuilder::DoRegExpLiteral(HRegExpLiteral* instr) { in DoRegExpLiteral() argument
2140 return MarkAsCall(DefineFixed(new(zone()) LRegExpLiteral, v0), instr); in DoRegExpLiteral()
2144 LInstruction* LChunkBuilder::DoFunctionLiteral(HFunctionLiteral* instr) { in DoFunctionLiteral() argument
2145 return MarkAsCall(DefineFixed(new(zone()) LFunctionLiteral, v0), instr); in DoFunctionLiteral()
2149 LInstruction* LChunkBuilder::DoDeleteProperty(HDeleteProperty* instr) { in DoDeleteProperty() argument
2150 LOperand* object = UseFixed(instr->object(), a0); in DoDeleteProperty()
2151 LOperand* key = UseFixed(instr->key(), a1); in DoDeleteProperty()
2153 return MarkAsCall(DefineFixed(result, v0), instr); in DoDeleteProperty()
2157 LInstruction* LChunkBuilder::DoOsrEntry(HOsrEntry* instr) { in DoOsrEntry() argument
2159 current_block_->last_environment()->set_ast_id(instr->ast_id()); in DoOsrEntry()
2164 LInstruction* LChunkBuilder::DoParameter(HParameter* instr) { in DoParameter() argument
2165 int spill_index = chunk()->GetParameterStackSlot(instr->index()); in DoParameter()
2170 LInstruction* LChunkBuilder::DoUnknownOSRValue(HUnknownOSRValue* instr) { in DoUnknownOSRValue() argument
2180 LInstruction* LChunkBuilder::DoCallStub(HCallStub* instr) { in DoCallStub() argument
2181 argument_count_ -= instr->argument_count(); in DoCallStub()
2182 return MarkAsCall(DefineFixed(new(zone()) LCallStub, v0), instr); in DoCallStub()
2186 LInstruction* LChunkBuilder::DoArgumentsObject(HArgumentsObject* instr) { in DoArgumentsObject() argument
2195 LInstruction* LChunkBuilder::DoAccessArgumentsAt(HAccessArgumentsAt* instr) { in DoAccessArgumentsAt() argument
2196 LOperand* arguments = UseRegister(instr->arguments()); in DoAccessArgumentsAt()
2197 LOperand* length = UseTempRegister(instr->length()); in DoAccessArgumentsAt()
2198 LOperand* index = UseRegister(instr->index()); in DoAccessArgumentsAt()
2205 LInstruction* LChunkBuilder::DoToFastProperties(HToFastProperties* instr) { in DoToFastProperties() argument
2206 LOperand* object = UseFixed(instr->value(), a0); in DoToFastProperties()
2208 return MarkAsCall(DefineFixed(result, v0), instr); in DoToFastProperties()
2212 LInstruction* LChunkBuilder::DoTypeof(HTypeof* instr) { in DoTypeof() argument
2213 LTypeof* result = new(zone()) LTypeof(UseFixed(instr->value(), a0)); in DoTypeof()
2214 return MarkAsCall(DefineFixed(result, v0), instr); in DoTypeof()
2218 LInstruction* LChunkBuilder::DoTypeofIsAndBranch(HTypeofIsAndBranch* instr) { in DoTypeofIsAndBranch() argument
2219 return new(zone()) LTypeofIsAndBranch(UseTempRegister(instr->value())); in DoTypeofIsAndBranch()
2224 HIsConstructCallAndBranch* instr) { in DoIsConstructCallAndBranch() argument
2229 LInstruction* LChunkBuilder::DoSimulate(HSimulate* instr) { in DoSimulate() argument
2233 env->set_ast_id(instr->ast_id()); in DoSimulate()
2235 env->Drop(instr->pop_count()); in DoSimulate()
2236 for (int i = 0; i < instr->values()->length(); ++i) { in DoSimulate()
2237 HValue* value = instr->values()->at(i); in DoSimulate()
2238 if (instr->HasAssignedIndexAt(i)) { in DoSimulate()
2239 env->Bind(instr->GetAssignedIndexAt(i), value); in DoSimulate()
2247 if (pending_deoptimization_ast_id_ == instr->ast_id()) { in DoSimulate()
2260 LInstruction* LChunkBuilder::DoStackCheck(HStackCheck* instr) { in DoStackCheck() argument
2261 if (instr->is_function_entry()) { in DoStackCheck()
2262 return MarkAsCall(new(zone()) LStackCheck, instr); in DoStackCheck()
2264 ASSERT(instr->is_backwards_branch()); in DoStackCheck()
2270 LInstruction* LChunkBuilder::DoEnterInlined(HEnterInlined* instr) { in DoEnterInlined() argument
2273 HEnvironment* inner = outer->CopyForInlining(instr->closure(), in DoEnterInlined()
2274 instr->arguments_count(), in DoEnterInlined()
2275 instr->function(), in DoEnterInlined()
2277 instr->call_kind(), in DoEnterInlined()
2278 instr->is_construct()); in DoEnterInlined()
2279 if (instr->arguments() != NULL) { in DoEnterInlined()
2280 inner->Bind(instr->arguments(), graph()->GetArgumentsObject()); in DoEnterInlined()
2283 chunk_->AddInlinedClosure(instr->closure()); in DoEnterInlined()
2288 LInstruction* LChunkBuilder::DoLeaveInlined(HLeaveInlined* instr) { in DoLeaveInlined() argument
2296 LInstruction* LChunkBuilder::DoIn(HIn* instr) { in DoIn() argument
2297 LOperand* key = UseRegisterAtStart(instr->key()); in DoIn()
2298 LOperand* object = UseRegisterAtStart(instr->object()); in DoIn()
2300 return MarkAsCall(DefineFixed(result, v0), instr); in DoIn()
2304 LInstruction* LChunkBuilder::DoForInPrepareMap(HForInPrepareMap* instr) { in DoForInPrepareMap() argument
2305 LOperand* object = UseFixed(instr->enumerable(), a0); in DoForInPrepareMap()
2307 return MarkAsCall(DefineFixed(result, v0), instr, CAN_DEOPTIMIZE_EAGERLY); in DoForInPrepareMap()
2311 LInstruction* LChunkBuilder::DoForInCacheArray(HForInCacheArray* instr) { in DoForInCacheArray() argument
2312 LOperand* map = UseRegister(instr->map()); in DoForInCacheArray()
2318 LInstruction* LChunkBuilder::DoCheckMapValue(HCheckMapValue* instr) { in DoCheckMapValue() argument
2319 LOperand* value = UseRegisterAtStart(instr->value()); in DoCheckMapValue()
2320 LOperand* map = UseRegisterAtStart(instr->map()); in DoCheckMapValue()
2325 LInstruction* LChunkBuilder::DoLoadFieldByIndex(HLoadFieldByIndex* instr) { in DoLoadFieldByIndex() argument
2326 LOperand* object = UseRegister(instr->object()); in DoLoadFieldByIndex()
2327 LOperand* index = UseRegister(instr->index()); in DoLoadFieldByIndex()