Lines Matching full:__
32 #define __ assembler-> macro
320 Node* zero_value = __ NumberConstant(0.0); in DoLdaZero()
321 __ SetAccumulator(zero_value); in DoLdaZero()
322 __ Dispatch(); in DoLdaZero()
329 Node* raw_int = __ BytecodeOperandImm(0); in DoLdaSmi()
330 Node* smi_int = __ SmiTag(raw_int); in DoLdaSmi()
331 __ SetAccumulator(smi_int); in DoLdaSmi()
332 __ Dispatch(); in DoLdaSmi()
339 Node* index = __ BytecodeOperandIdx(0); in DoLdaConstant()
340 Node* constant = __ LoadConstantPoolEntry(index); in DoLdaConstant()
341 __ SetAccumulator(constant); in DoLdaConstant()
342 __ Dispatch(); in DoLdaConstant()
350 __ HeapConstant(isolate_->factory()->undefined_value()); in DoLdaUndefined()
351 __ SetAccumulator(undefined_value); in DoLdaUndefined()
352 __ Dispatch(); in DoLdaUndefined()
359 Node* null_value = __ HeapConstant(isolate_->factory()->null_value()); in DoLdaNull()
360 __ SetAccumulator(null_value); in DoLdaNull()
361 __ Dispatch(); in DoLdaNull()
368 Node* the_hole_value = __ HeapConstant(isolate_->factory()->the_hole_value()); in DoLdaTheHole()
369 __ SetAccumulator(the_hole_value); in DoLdaTheHole()
370 __ Dispatch(); in DoLdaTheHole()
377 Node* true_value = __ HeapConstant(isolate_->factory()->true_value()); in DoLdaTrue()
378 __ SetAccumulator(true_value); in DoLdaTrue()
379 __ Dispatch(); in DoLdaTrue()
386 Node* false_value = __ HeapConstant(isolate_->factory()->false_value()); in DoLdaFalse()
387 __ SetAccumulator(false_value); in DoLdaFalse()
388 __ Dispatch(); in DoLdaFalse()
395 Node* reg_index = __ BytecodeOperandReg(0); in DoLdar()
396 Node* value = __ LoadRegister(reg_index); in DoLdar()
397 __ SetAccumulator(value); in DoLdar()
398 __ Dispatch(); in DoLdar()
405 Node* reg_index = __ BytecodeOperandReg(0); in DoStar()
406 Node* accumulator = __ GetAccumulator(); in DoStar()
407 __ StoreRegister(accumulator, reg_index); in DoStar()
408 __ Dispatch(); in DoStar()
415 Node* src_index = __ BytecodeOperandReg(0); in DoMov()
416 Node* src_value = __ LoadRegister(src_index); in DoMov()
417 Node* dst_index = __ BytecodeOperandReg(1); in DoMov()
418 __ StoreRegister(src_value, dst_index); in DoMov()
419 __ Dispatch(); in DoMov()
428 Node* code_target = __ HeapConstant(ic.code()); in BuildLoadGlobal()
429 Node* smi_slot = __ SmiTag(feedback_slot); in BuildLoadGlobal()
430 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in BuildLoadGlobal()
431 return __ CallStub(ic.descriptor(), code_target, context, in BuildLoadGlobal()
444 Node* context = __ GetContext(); in DoLdaGlobal()
446 Node* raw_slot = __ BytecodeOperandIdx(0); in DoLdaGlobal()
448 __ SetAccumulator(result); in DoLdaGlobal()
449 __ Dispatch(); in DoLdaGlobal()
460 Node* context = __ GetContext(); in DoLdaGlobalInsideTypeof()
462 Node* raw_slot = __ BytecodeOperandIdx(0); in DoLdaGlobalInsideTypeof()
464 __ SetAccumulator(result); in DoLdaGlobalInsideTypeof()
465 __ Dispatch(); in DoLdaGlobalInsideTypeof()
471 Node* context = __ GetContext(); in DoStaGlobal()
472 Node* native_context = __ LoadNativeContext(context); in DoStaGlobal()
474 __ LoadContextElement(native_context, Context::EXTENSION_INDEX); in DoStaGlobal()
477 Node* code_target = __ HeapConstant(ic.code()); in DoStaGlobal()
478 Node* constant_index = __ BytecodeOperandIdx(0); in DoStaGlobal()
479 Node* name = __ LoadConstantPoolEntry(constant_index); in DoStaGlobal()
480 Node* value = __ GetAccumulator(); in DoStaGlobal()
481 Node* raw_slot = __ BytecodeOperandIdx(1); in DoStaGlobal()
482 Node* smi_slot = __ SmiTag(raw_slot); in DoStaGlobal()
483 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoStaGlobal()
484 __ CallStub(ic.descriptor(), code_target, context, in DoStaGlobal()
488 __ Dispatch(); in DoStaGlobal()
514 Node* reg_index = __ BytecodeOperandReg(0); in DoLdaContextSlot()
515 Node* context = __ LoadRegister(reg_index); in DoLdaContextSlot()
516 Node* slot_index = __ BytecodeOperandIdx(1); in DoLdaContextSlot()
517 Node* depth = __ BytecodeOperandUImm(2); in DoLdaContextSlot()
518 Node* slot_context = __ GetContextAtDepth(context, depth); in DoLdaContextSlot()
519 Node* result = __ LoadContextElement(slot_context, slot_index); in DoLdaContextSlot()
520 __ SetAccumulator(result); in DoLdaContextSlot()
521 __ Dispatch(); in DoLdaContextSlot()
528 Node* slot_index = __ BytecodeOperandIdx(0); in DoLdaCurrentContextSlot()
529 Node* slot_context = __ GetContext(); in DoLdaCurrentContextSlot()
530 Node* result = __ LoadContextElement(slot_context, slot_index); in DoLdaCurrentContextSlot()
531 __ SetAccumulator(result); in DoLdaCurrentContextSlot()
532 __ Dispatch(); in DoLdaCurrentContextSlot()
540 Node* value = __ GetAccumulator(); in DoStaContextSlot()
541 Node* reg_index = __ BytecodeOperandReg(0); in DoStaContextSlot()
542 Node* context = __ LoadRegister(reg_index); in DoStaContextSlot()
543 Node* slot_index = __ BytecodeOperandIdx(1); in DoStaContextSlot()
544 Node* depth = __ BytecodeOperandUImm(2); in DoStaContextSlot()
545 Node* slot_context = __ GetContextAtDepth(context, depth); in DoStaContextSlot()
546 __ StoreContextElement(slot_context, slot_index, value); in DoStaContextSlot()
547 __ Dispatch(); in DoStaContextSlot()
555 Node* value = __ GetAccumulator(); in DoStaCurrentContextSlot()
556 Node* slot_index = __ BytecodeOperandIdx(0); in DoStaCurrentContextSlot()
557 Node* slot_context = __ GetContext(); in DoStaCurrentContextSlot()
558 __ StoreContextElement(slot_context, slot_index, value); in DoStaCurrentContextSlot()
559 __ Dispatch(); in DoStaCurrentContextSlot()
564 Node* name_index = __ BytecodeOperandIdx(0); in DoLdaLookupSlot()
565 Node* name = __ LoadConstantPoolEntry(name_index); in DoLdaLookupSlot()
566 Node* context = __ GetContext(); in DoLdaLookupSlot()
567 Node* result = __ CallRuntime(function_id, context, name); in DoLdaLookupSlot()
568 __ SetAccumulator(result); in DoLdaLookupSlot()
569 __ Dispatch(); in DoLdaLookupSlot()
590 Node* context = __ GetContext(); in DoLdaLookupContextSlot()
591 Node* name_index = __ BytecodeOperandIdx(0); in DoLdaLookupContextSlot()
592 Node* slot_index = __ BytecodeOperandIdx(1); in DoLdaLookupContextSlot()
593 Node* depth = __ BytecodeOperandUImm(2); in DoLdaLookupContextSlot()
598 __ GotoIfHasContextExtensionUpToDepth(context, depth, &slowpath); in DoLdaLookupContextSlot()
602 Node* slot_context = __ GetContextAtDepth(context, depth); in DoLdaLookupContextSlot()
603 Node* result = __ LoadContextElement(slot_context, slot_index); in DoLdaLookupContextSlot()
604 __ SetAccumulator(result); in DoLdaLookupContextSlot()
605 __ Dispatch(); in DoLdaLookupContextSlot()
609 __ Bind(&slowpath); in DoLdaLookupContextSlot()
611 Node* name = __ LoadConstantPoolEntry(name_index); in DoLdaLookupContextSlot()
612 Node* result = __ CallRuntime(function_id, context, name); in DoLdaLookupContextSlot()
613 __ SetAccumulator(result); in DoLdaLookupContextSlot()
614 __ Dispatch(); in DoLdaLookupContextSlot()
637 Node* context = __ GetContext(); in DoLdaLookupGlobalSlot()
638 Node* name_index = __ BytecodeOperandIdx(0); in DoLdaLookupGlobalSlot()
639 Node* feedback_slot = __ BytecodeOperandIdx(1); in DoLdaLookupGlobalSlot()
640 Node* depth = __ BytecodeOperandUImm(2); in DoLdaLookupGlobalSlot()
645 __ GotoIfHasContextExtensionUpToDepth(context, depth, &slowpath); in DoLdaLookupGlobalSlot()
654 __ SetAccumulator(result); in DoLdaLookupGlobalSlot()
655 __ Dispatch(); in DoLdaLookupGlobalSlot()
659 __ Bind(&slowpath); in DoLdaLookupGlobalSlot()
661 Node* name = __ LoadConstantPoolEntry(name_index); in DoLdaLookupGlobalSlot()
662 Node* result = __ CallRuntime(function_id, context, name); in DoLdaLookupGlobalSlot()
663 __ SetAccumulator(result); in DoLdaLookupGlobalSlot()
664 __ Dispatch(); in DoLdaLookupGlobalSlot()
687 Node* value = __ GetAccumulator(); in DoStaLookupSlot()
688 Node* index = __ BytecodeOperandIdx(0); in DoStaLookupSlot()
689 Node* name = __ LoadConstantPoolEntry(index); in DoStaLookupSlot()
690 Node* context = __ GetContext(); in DoStaLookupSlot()
691 Node* result = __ CallRuntime(is_strict(language_mode) in DoStaLookupSlot()
695 __ SetAccumulator(result); in DoStaLookupSlot()
696 __ Dispatch(); in DoStaLookupSlot()
722 Node* code_target = __ HeapConstant(ic.code()); in DoLdaNamedProperty()
723 Node* register_index = __ BytecodeOperandReg(0); in DoLdaNamedProperty()
724 Node* object = __ LoadRegister(register_index); in DoLdaNamedProperty()
725 Node* constant_index = __ BytecodeOperandIdx(1); in DoLdaNamedProperty()
726 Node* name = __ LoadConstantPoolEntry(constant_index); in DoLdaNamedProperty()
727 Node* raw_slot = __ BytecodeOperandIdx(2); in DoLdaNamedProperty()
728 Node* smi_slot = __ SmiTag(raw_slot); in DoLdaNamedProperty()
729 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoLdaNamedProperty()
730 Node* context = __ GetContext(); in DoLdaNamedProperty()
731 Node* result = __ CallStub( in DoLdaNamedProperty()
735 __ SetAccumulator(result); in DoLdaNamedProperty()
736 __ Dispatch(); in DoLdaNamedProperty()
746 Node* code_target = __ HeapConstant(ic.code()); in DoLdaKeyedProperty()
747 Node* reg_index = __ BytecodeOperandReg(0); in DoLdaKeyedProperty()
748 Node* object = __ LoadRegister(reg_index); in DoLdaKeyedProperty()
749 Node* name = __ GetAccumulator(); in DoLdaKeyedProperty()
750 Node* raw_slot = __ BytecodeOperandIdx(1); in DoLdaKeyedProperty()
751 Node* smi_slot = __ SmiTag(raw_slot); in DoLdaKeyedProperty()
752 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoLdaKeyedProperty()
753 Node* context = __ GetContext(); in DoLdaKeyedProperty()
754 Node* result = __ CallStub( in DoLdaKeyedProperty()
758 __ SetAccumulator(result); in DoLdaKeyedProperty()
759 __ Dispatch(); in DoLdaKeyedProperty()
764 Node* code_target = __ HeapConstant(ic.code()); in DoStoreIC()
765 Node* object_reg_index = __ BytecodeOperandReg(0); in DoStoreIC()
766 Node* object = __ LoadRegister(object_reg_index); in DoStoreIC()
767 Node* constant_index = __ BytecodeOperandIdx(1); in DoStoreIC()
768 Node* name = __ LoadConstantPoolEntry(constant_index); in DoStoreIC()
769 Node* value = __ GetAccumulator(); in DoStoreIC()
770 Node* raw_slot = __ BytecodeOperandIdx(2); in DoStoreIC()
771 Node* smi_slot = __ SmiTag(raw_slot); in DoStoreIC()
772 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoStoreIC()
773 Node* context = __ GetContext(); in DoStoreIC()
774 __ CallStub(ic.descriptor(), code_target, context, in DoStoreIC()
778 __ Dispatch(); in DoStoreIC()
803 Node* code_target = __ HeapConstant(ic.code()); in DoKeyedStoreIC()
804 Node* object_reg_index = __ BytecodeOperandReg(0); in DoKeyedStoreIC()
805 Node* object = __ LoadRegister(object_reg_index); in DoKeyedStoreIC()
806 Node* name_reg_index = __ BytecodeOperandReg(1); in DoKeyedStoreIC()
807 Node* name = __ LoadRegister(name_reg_index); in DoKeyedStoreIC()
808 Node* value = __ GetAccumulator(); in DoKeyedStoreIC()
809 Node* raw_slot = __ BytecodeOperandIdx(2); in DoKeyedStoreIC()
810 Node* smi_slot = __ SmiTag(raw_slot); in DoKeyedStoreIC()
811 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoKeyedStoreIC()
812 Node* context = __ GetContext(); in DoKeyedStoreIC()
813 __ CallStub(ic.descriptor(), code_target, context, in DoKeyedStoreIC()
817 __ Dispatch(); in DoKeyedStoreIC()
844 Node* cell_index = __ BytecodeOperandImm(0); in DoLdaModuleVariable()
845 Node* depth = __ BytecodeOperandUImm(1); in DoLdaModuleVariable()
847 Node* module_context = __ GetContextAtDepth(__ GetContext(), depth); in DoLdaModuleVariable()
849 __ LoadContextElement(module_context, Context::EXTENSION_INDEX); in DoLdaModuleVariable()
852 __ Branch(__ IntPtrGreaterThan(cell_index, __ IntPtrConstant(0)), &if_export, in DoLdaModuleVariable()
855 __ Bind(&if_export); in DoLdaModuleVariable()
858 __ LoadObjectField(module, Module::kRegularExportsOffset); in DoLdaModuleVariable()
860 Node* export_index = __ IntPtrSub(cell_index, __ IntPtrConstant(1)); in DoLdaModuleVariable()
861 Node* cell = __ LoadFixedArrayElement(regular_exports, export_index); in DoLdaModuleVariable()
862 __ SetAccumulator(__ LoadObjectField(cell, Cell::kValueOffset)); in DoLdaModuleVariable()
863 __ Goto(&end); in DoLdaModuleVariable()
866 __ Bind(&if_import); in DoLdaModuleVariable()
869 __ LoadObjectField(module, Module::kRegularImportsOffset); in DoLdaModuleVariable()
871 Node* import_index = __ IntPtrSub(__ IntPtrConstant(-1), cell_index); in DoLdaModuleVariable()
872 Node* cell = __ LoadFixedArrayElement(regular_imports, import_index); in DoLdaModuleVariable()
873 __ SetAccumulator(__ LoadObjectField(cell, Cell::kValueOffset)); in DoLdaModuleVariable()
874 __ Goto(&end); in DoLdaModuleVariable()
877 __ Bind(&end); in DoLdaModuleVariable()
878 __ Dispatch(); in DoLdaModuleVariable()
886 Node* value = __ GetAccumulator(); in DoStaModuleVariable()
887 Node* cell_index = __ BytecodeOperandImm(0); in DoStaModuleVariable()
888 Node* depth = __ BytecodeOperandUImm(1); in DoStaModuleVariable()
890 Node* module_context = __ GetContextAtDepth(__ GetContext(), depth); in DoStaModuleVariable()
892 __ LoadContextElement(module_context, Context::EXTENSION_INDEX); in DoStaModuleVariable()
895 __ Branch(__ IntPtrGreaterThan(cell_index, __ IntPtrConstant(0)), &if_export, in DoStaModuleVariable()
898 __ Bind(&if_export); in DoStaModuleVariable()
901 __ LoadObjectField(module, Module::kRegularExportsOffset); in DoStaModuleVariable()
903 Node* export_index = __ IntPtrSub(cell_index, __ IntPtrConstant(1)); in DoStaModuleVariable()
904 Node* cell = __ LoadFixedArrayElement(regular_exports, export_index); in DoStaModuleVariable()
905 __ StoreObjectField(cell, Cell::kValueOffset, value); in DoStaModuleVariable()
906 __ Goto(&end); in DoStaModuleVariable()
909 __ Bind(&if_import); in DoStaModuleVariable()
912 __ Abort(kUnsupportedModuleOperation); in DoStaModuleVariable()
913 __ Goto(&end); in DoStaModuleVariable()
916 __ Bind(&end); in DoStaModuleVariable()
917 __ Dispatch(); in DoStaModuleVariable()
925 Node* reg_index = __ BytecodeOperandReg(0); in DoPushContext()
926 Node* new_context = __ GetAccumulator(); in DoPushContext()
927 Node* old_context = __ GetContext(); in DoPushContext()
928 __ StoreRegister(old_context, reg_index); in DoPushContext()
929 __ SetContext(new_context); in DoPushContext()
930 __ Dispatch(); in DoPushContext()
937 Node* reg_index = __ BytecodeOperandReg(0); in DoPopContext()
938 Node* context = __ LoadRegister(reg_index); in DoPopContext()
939 __ SetContext(context); in DoPopContext()
940 __ Dispatch(); in DoPopContext()
946 Node* reg_index = __ BytecodeOperandReg(0); in DoCompareOp()
947 Node* lhs = __ LoadRegister(reg_index); in DoCompareOp()
948 Node* rhs = __ GetAccumulator(); in DoCompareOp()
949 Node* context = __ GetContext(); in DoCompareOp()
961 __ SetAccumulator(result); in DoCompareOp()
962 __ Dispatch(); in DoCompareOp()
967 Node* reg_index = __ BytecodeOperandReg(0); in DoBinaryOpWithFeedback()
968 Node* lhs = __ LoadRegister(reg_index); in DoBinaryOpWithFeedback()
969 Node* rhs = __ GetAccumulator(); in DoBinaryOpWithFeedback()
970 Node* context = __ GetContext(); in DoBinaryOpWithFeedback()
971 Node* slot_index = __ BytecodeOperandIdx(1); in DoBinaryOpWithFeedback()
972 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoBinaryOpWithFeedback()
975 __ SetAccumulator(result); in DoBinaryOpWithFeedback()
976 __ Dispatch(); in DoBinaryOpWithFeedback()
981 Node* reg_index = __ BytecodeOperandReg(0); in DoCompareOpWithFeedback()
982 Node* lhs = __ LoadRegister(reg_index); in DoCompareOpWithFeedback()
983 Node* rhs = __ GetAccumulator(); in DoCompareOpWithFeedback()
984 Node* context = __ GetContext(); in DoCompareOpWithFeedback()
985 Node* slot_index = __ BytecodeOperandIdx(1); in DoCompareOpWithFeedback()
986 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoCompareOpWithFeedback()
993 __ GotoIf(__ WordEqual(slot_index, __ IntPtrConstant(0)), in DoCompareOpWithFeedback()
999 __ Branch(__ TaggedIsSmi(lhs), &lhs_is_smi, &lhs_is_not_smi); in DoCompareOpWithFeedback()
1001 __ Bind(&lhs_is_smi); in DoCompareOpWithFeedback()
1003 __ Int32Constant(CompareOperationFeedback::kSignedSmall)); in DoCompareOpWithFeedback()
1004 __ Goto(&gather_rhs_type); in DoCompareOpWithFeedback()
1006 __ Bind(&lhs_is_not_smi); in DoCompareOpWithFeedback()
1009 Node* lhs_map = __ LoadMap(lhs); in DoCompareOpWithFeedback()
1010 __ Branch(__ WordEqual(lhs_map, __ HeapNumberMapConstant()), &lhs_is_number, in DoCompareOpWithFeedback()
1013 __ Bind(&lhs_is_number); in DoCompareOpWithFeedback()
1014 var_type_feedback.Bind(__ Int32Constant(CompareOperationFeedback::kNumber)); in DoCompareOpWithFeedback()
1015 __ Goto(&gather_rhs_type); in DoCompareOpWithFeedback()
1017 __ Bind(&lhs_is_not_number); in DoCompareOpWithFeedback()
1018 var_type_feedback.Bind(__ Int32Constant(CompareOperationFeedback::kAny)); in DoCompareOpWithFeedback()
1019 __ Goto(&do_compare); in DoCompareOpWithFeedback()
1022 __ Bind(&gather_rhs_type); in DoCompareOpWithFeedback()
1025 __ GotoIf(__ TaggedIsSmi(rhs), &rhs_is_smi); in DoCompareOpWithFeedback()
1027 Node* rhs_map = __ LoadMap(rhs); in DoCompareOpWithFeedback()
1029 __ Select(__ WordEqual(rhs_map, __ HeapNumberMapConstant()), in DoCompareOpWithFeedback()
1030 __ Int32Constant(CompareOperationFeedback::kNumber), in DoCompareOpWithFeedback()
1031 __ Int32Constant(CompareOperationFeedback::kAny)); in DoCompareOpWithFeedback()
1032 var_type_feedback.Bind(__ Word32Or(var_type_feedback.value(), rhs_type)); in DoCompareOpWithFeedback()
1033 __ Goto(&do_compare); in DoCompareOpWithFeedback()
1035 __ Bind(&rhs_is_smi); in DoCompareOpWithFeedback()
1037 __ Word32Or(var_type_feedback.value(), in DoCompareOpWithFeedback()
1038 __ Int32Constant(CompareOperationFeedback::kSignedSmall))); in DoCompareOpWithFeedback()
1039 __ Goto(&do_compare); in DoCompareOpWithFeedback()
1042 __ Bind(&do_compare); in DoCompareOpWithFeedback()
1043 __ UpdateFeedback(var_type_feedback.value(), type_feedback_vector, in DoCompareOpWithFeedback()
1045 __ Goto(&skip_feedback_update); in DoCompareOpWithFeedback()
1047 __ Bind(&skip_feedback_update); in DoCompareOpWithFeedback()
1081 __ SetAccumulator(result); in DoCompareOpWithFeedback()
1082 __ Dispatch(); in DoCompareOpWithFeedback()
1122 Node* reg_index = __ BytecodeOperandReg(0); in DoBitwiseBinaryOp()
1123 Node* lhs = __ LoadRegister(reg_index); in DoBitwiseBinaryOp()
1124 Node* rhs = __ GetAccumulator(); in DoBitwiseBinaryOp()
1125 Node* context = __ GetContext(); in DoBitwiseBinaryOp()
1126 Node* slot_index = __ BytecodeOperandIdx(1); in DoBitwiseBinaryOp()
1127 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoBitwiseBinaryOp()
1131 Node* lhs_value = __ TruncateTaggedToWord32WithFeedback( in DoBitwiseBinaryOp()
1133 Node* rhs_value = __ TruncateTaggedToWord32WithFeedback( in DoBitwiseBinaryOp()
1139 Node* value = __ Word32Or(lhs_value, rhs_value); in DoBitwiseBinaryOp()
1140 result = __ ChangeInt32ToTagged(value); in DoBitwiseBinaryOp()
1143 Node* value = __ Word32And(lhs_value, rhs_value); in DoBitwiseBinaryOp()
1144 result = __ ChangeInt32ToTagged(value); in DoBitwiseBinaryOp()
1147 Node* value = __ Word32Xor(lhs_value, rhs_value); in DoBitwiseBinaryOp()
1148 result = __ ChangeInt32ToTagged(value); in DoBitwiseBinaryOp()
1151 Node* value = __ Word32Shl( in DoBitwiseBinaryOp()
1152 lhs_value, __ Word32And(rhs_value, __ Int32Constant(0x1f))); in DoBitwiseBinaryOp()
1153 result = __ ChangeInt32ToTagged(value); in DoBitwiseBinaryOp()
1156 Node* value = __ Word32Shr( in DoBitwiseBinaryOp()
1157 lhs_value, __ Word32And(rhs_value, __ Int32Constant(0x1f))); in DoBitwiseBinaryOp()
1158 result = __ ChangeUint32ToTagged(value); in DoBitwiseBinaryOp()
1161 Node* value = __ Word32Sar( in DoBitwiseBinaryOp()
1162 lhs_value, __ Word32And(rhs_value, __ Int32Constant(0x1f))); in DoBitwiseBinaryOp()
1163 result = __ ChangeInt32ToTagged(value); in DoBitwiseBinaryOp()
1170 __ Select(__ TaggedIsSmi(result), in DoBitwiseBinaryOp()
1171 __ Int32Constant(BinaryOperationFeedback::kSignedSmall), in DoBitwiseBinaryOp()
1172 __ Int32Constant(BinaryOperationFeedback::kNumber)); in DoBitwiseBinaryOp()
1176 __ GotoIf(__ TaggedIsSmi(result), &ok); in DoBitwiseBinaryOp()
1177 Node* result_map = __ LoadMap(result); in DoBitwiseBinaryOp()
1178 __ AbortIfWordNotEqual(result_map, __ HeapNumberMapConstant(), in DoBitwiseBinaryOp()
1180 __ Goto(&ok); in DoBitwiseBinaryOp()
1181 __ Bind(&ok); in DoBitwiseBinaryOp()
1185 __ Word32Or(var_lhs_type_feedback.value(), var_rhs_type_feedback.value()); in DoBitwiseBinaryOp()
1186 __ UpdateFeedback(__ Word32Or(result_type, input_feedback), in DoBitwiseBinaryOp()
1188 __ SetAccumulator(result); in DoBitwiseBinaryOp()
1189 __ Dispatch(); in DoBitwiseBinaryOp()
1252 Node* reg_index = __ BytecodeOperandReg(1); in DoAddSmi()
1253 Node* left = __ LoadRegister(reg_index); in DoAddSmi()
1254 Node* raw_int = __ BytecodeOperandImm(0); in DoAddSmi()
1255 Node* right = __ SmiTag(raw_int); in DoAddSmi()
1256 Node* slot_index = __ BytecodeOperandIdx(2); in DoAddSmi()
1257 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoAddSmi()
1261 __ Branch(__ TaggedIsSmi(left), &fastpath, &slowpath); in DoAddSmi()
1262 __ Bind(&fastpath); in DoAddSmi()
1265 Node* pair = __ IntPtrAddWithOverflow(__ BitcastTaggedToWord(left), in DoAddSmi()
1266 __ BitcastTaggedToWord(right)); in DoAddSmi()
1267 Node* overflow = __ Projection(1, pair); in DoAddSmi()
1271 __ Branch(overflow, &slowpath, &if_notoverflow); in DoAddSmi()
1272 __ Bind(&if_notoverflow); in DoAddSmi()
1274 __ UpdateFeedback(__ Int32Constant(BinaryOperationFeedback::kSignedSmall), in DoAddSmi()
1276 var_result.Bind(__ BitcastWordToTaggedSigned(__ Projection(0, pair))); in DoAddSmi()
1277 __ Goto(&end); in DoAddSmi()
1280 __ Bind(&slowpath); in DoAddSmi()
1282 Node* context = __ GetContext(); in DoAddSmi()
1283 AddWithFeedbackStub stub(__ isolate()); in DoAddSmi()
1285 Callable(stub.GetCode(), AddWithFeedbackStub::Descriptor(__ isolate())); in DoAddSmi()
1287 var_result.Bind(__ CallStubN(callable, args, 1)); in DoAddSmi()
1288 __ Goto(&end); in DoAddSmi()
1290 __ Bind(&end); in DoAddSmi()
1292 __ SetAccumulator(var_result.value()); in DoAddSmi()
1293 __ Dispatch(); in DoAddSmi()
1306 Node* reg_index = __ BytecodeOperandReg(1); in DoSubSmi()
1307 Node* left = __ LoadRegister(reg_index); in DoSubSmi()
1308 Node* raw_int = __ BytecodeOperandImm(0); in DoSubSmi()
1309 Node* right = __ SmiTag(raw_int); in DoSubSmi()
1310 Node* slot_index = __ BytecodeOperandIdx(2); in DoSubSmi()
1311 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoSubSmi()
1315 __ Branch(__ TaggedIsSmi(left), &fastpath, &slowpath); in DoSubSmi()
1316 __ Bind(&fastpath); in DoSubSmi()
1319 Node* pair = __ IntPtrSubWithOverflow(__ BitcastTaggedToWord(left), in DoSubSmi()
1320 __ BitcastTaggedToWord(right)); in DoSubSmi()
1321 Node* overflow = __ Projection(1, pair); in DoSubSmi()
1325 __ Branch(overflow, &slowpath, &if_notoverflow); in DoSubSmi()
1326 __ Bind(&if_notoverflow); in DoSubSmi()
1328 __ UpdateFeedback(__ Int32Constant(BinaryOperationFeedback::kSignedSmall), in DoSubSmi()
1330 var_result.Bind(__ BitcastWordToTaggedSigned(__ Projection(0, pair))); in DoSubSmi()
1331 __ Goto(&end); in DoSubSmi()
1334 __ Bind(&slowpath); in DoSubSmi()
1336 Node* context = __ GetContext(); in DoSubSmi()
1337 SubtractWithFeedbackStub stub(__ isolate()); in DoSubSmi()
1339 stub.GetCode(), SubtractWithFeedbackStub::Descriptor(__ isolate())); in DoSubSmi()
1341 var_result.Bind(__ CallStubN(callable, args, 1)); in DoSubSmi()
1342 __ Goto(&end); in DoSubSmi()
1344 __ Bind(&end); in DoSubSmi()
1346 __ SetAccumulator(var_result.value()); in DoSubSmi()
1347 __ Dispatch(); in DoSubSmi()
1356 Node* reg_index = __ BytecodeOperandReg(1); in DoBitwiseOrSmi()
1357 Node* left = __ LoadRegister(reg_index); in DoBitwiseOrSmi()
1358 Node* raw_int = __ BytecodeOperandImm(0); in DoBitwiseOrSmi()
1359 Node* right = __ SmiTag(raw_int); in DoBitwiseOrSmi()
1360 Node* context = __ GetContext(); in DoBitwiseOrSmi()
1361 Node* slot_index = __ BytecodeOperandIdx(2); in DoBitwiseOrSmi()
1362 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoBitwiseOrSmi()
1364 Node* lhs_value = __ TruncateTaggedToWord32WithFeedback( in DoBitwiseOrSmi()
1366 Node* rhs_value = __ SmiToWord32(right); in DoBitwiseOrSmi()
1367 Node* value = __ Word32Or(lhs_value, rhs_value); in DoBitwiseOrSmi()
1368 Node* result = __ ChangeInt32ToTagged(value); in DoBitwiseOrSmi()
1370 __ Select(__ TaggedIsSmi(result), in DoBitwiseOrSmi()
1371 __ Int32Constant(BinaryOperationFeedback::kSignedSmall), in DoBitwiseOrSmi()
1372 __ Int32Constant(BinaryOperationFeedback::kNumber)); in DoBitwiseOrSmi()
1373 __ UpdateFeedback(__ Word32Or(result_type, var_lhs_type_feedback.value()), in DoBitwiseOrSmi()
1375 __ SetAccumulator(result); in DoBitwiseOrSmi()
1376 __ Dispatch(); in DoBitwiseOrSmi()
1384 Node* reg_index = __ BytecodeOperandReg(1); in DoBitwiseAndSmi()
1385 Node* left = __ LoadRegister(reg_index); in DoBitwiseAndSmi()
1386 Node* raw_int = __ BytecodeOperandImm(0); in DoBitwiseAndSmi()
1387 Node* right = __ SmiTag(raw_int); in DoBitwiseAndSmi()
1388 Node* context = __ GetContext(); in DoBitwiseAndSmi()
1389 Node* slot_index = __ BytecodeOperandIdx(2); in DoBitwiseAndSmi()
1390 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoBitwiseAndSmi()
1392 Node* lhs_value = __ TruncateTaggedToWord32WithFeedback( in DoBitwiseAndSmi()
1394 Node* rhs_value = __ SmiToWord32(right); in DoBitwiseAndSmi()
1395 Node* value = __ Word32And(lhs_value, rhs_value); in DoBitwiseAndSmi()
1396 Node* result = __ ChangeInt32ToTagged(value); in DoBitwiseAndSmi()
1398 __ Select(__ TaggedIsSmi(result), in DoBitwiseAndSmi()
1399 __ Int32Constant(BinaryOperationFeedback::kSignedSmall), in DoBitwiseAndSmi()
1400 __ Int32Constant(BinaryOperationFeedback::kNumber)); in DoBitwiseAndSmi()
1401 __ UpdateFeedback(__ Word32Or(result_type, var_lhs_type_feedback.value()), in DoBitwiseAndSmi()
1403 __ SetAccumulator(result); in DoBitwiseAndSmi()
1404 __ Dispatch(); in DoBitwiseAndSmi()
1413 Node* reg_index = __ BytecodeOperandReg(1); in DoShiftLeftSmi()
1414 Node* left = __ LoadRegister(reg_index); in DoShiftLeftSmi()
1415 Node* raw_int = __ BytecodeOperandImm(0); in DoShiftLeftSmi()
1416 Node* right = __ SmiTag(raw_int); in DoShiftLeftSmi()
1417 Node* context = __ GetContext(); in DoShiftLeftSmi()
1418 Node* slot_index = __ BytecodeOperandIdx(2); in DoShiftLeftSmi()
1419 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoShiftLeftSmi()
1421 Node* lhs_value = __ TruncateTaggedToWord32WithFeedback( in DoShiftLeftSmi()
1423 Node* rhs_value = __ SmiToWord32(right); in DoShiftLeftSmi()
1424 Node* shift_count = __ Word32And(rhs_value, __ Int32Constant(0x1f)); in DoShiftLeftSmi()
1425 Node* value = __ Word32Shl(lhs_value, shift_count); in DoShiftLeftSmi()
1426 Node* result = __ ChangeInt32ToTagged(value); in DoShiftLeftSmi()
1428 __ Select(__ TaggedIsSmi(result), in DoShiftLeftSmi()
1429 __ Int32Constant(BinaryOperationFeedback::kSignedSmall), in DoShiftLeftSmi()
1430 __ Int32Constant(BinaryOperationFeedback::kNumber)); in DoShiftLeftSmi()
1431 __ UpdateFeedback(__ Word32Or(result_type, var_lhs_type_feedback.value()), in DoShiftLeftSmi()
1433 __ SetAccumulator(result); in DoShiftLeftSmi()
1434 __ Dispatch(); in DoShiftLeftSmi()
1443 Node* reg_index = __ BytecodeOperandReg(1); in DoShiftRightSmi()
1444 Node* left = __ LoadRegister(reg_index); in DoShiftRightSmi()
1445 Node* raw_int = __ BytecodeOperandImm(0); in DoShiftRightSmi()
1446 Node* right = __ SmiTag(raw_int); in DoShiftRightSmi()
1447 Node* context = __ GetContext(); in DoShiftRightSmi()
1448 Node* slot_index = __ BytecodeOperandIdx(2); in DoShiftRightSmi()
1449 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoShiftRightSmi()
1451 Node* lhs_value = __ TruncateTaggedToWord32WithFeedback( in DoShiftRightSmi()
1453 Node* rhs_value = __ SmiToWord32(right); in DoShiftRightSmi()
1454 Node* shift_count = __ Word32And(rhs_value, __ Int32Constant(0x1f)); in DoShiftRightSmi()
1455 Node* value = __ Word32Sar(lhs_value, shift_count); in DoShiftRightSmi()
1456 Node* result = __ ChangeInt32ToTagged(value); in DoShiftRightSmi()
1458 __ Select(__ TaggedIsSmi(result), in DoShiftRightSmi()
1459 __ Int32Constant(BinaryOperationFeedback::kSignedSmall), in DoShiftRightSmi()
1460 __ Int32Constant(BinaryOperationFeedback::kNumber)); in DoShiftRightSmi()
1461 __ UpdateFeedback(__ Word32Or(result_type, var_lhs_type_feedback.value()), in DoShiftRightSmi()
1463 __ SetAccumulator(result); in DoShiftRightSmi()
1464 __ Dispatch(); in DoShiftRightSmi()
1469 Node* target = __ HeapConstant(callable.code()); in BuildUnaryOp()
1470 Node* accumulator = __ GetAccumulator(); in BuildUnaryOp()
1471 Node* context = __ GetContext(); in BuildUnaryOp()
1472 return __ CallStub(callable.descriptor(), target, context, accumulator); in BuildUnaryOp()
1477 Node* value = __ GetAccumulator(); in DoUnaryOpWithFeedback()
1478 Node* context = __ GetContext(); in DoUnaryOpWithFeedback()
1479 Node* slot_index = __ BytecodeOperandIdx(0); in DoUnaryOpWithFeedback()
1480 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoUnaryOpWithFeedback()
1483 __ SetAccumulator(result); in DoUnaryOpWithFeedback()
1484 __ Dispatch(); in DoUnaryOpWithFeedback()
1491 Node* object = __ GetAccumulator(); in DoToName()
1492 Node* context = __ GetContext(); in DoToName()
1493 Node* result = __ ToName(context, object); in DoToName()
1494 __ StoreRegister(result, __ BytecodeOperandReg(0)); in DoToName()
1495 __ Dispatch(); in DoToName()
1502 Node* object = __ GetAccumulator(); in DoToNumber()
1503 Node* context = __ GetContext(); in DoToNumber()
1504 Node* result = __ ToNumber(context, object); in DoToNumber()
1505 __ StoreRegister(result, __ BytecodeOperandReg(0)); in DoToNumber()
1506 __ Dispatch(); in DoToNumber()
1514 __ StoreRegister(result, __ BytecodeOperandReg(0)); in DoToObject()
1515 __ Dispatch(); in DoToObject()
1538 Node* value = __ GetAccumulator(); in DoToBooleanLogicalNot()
1541 Node* true_value = __ BooleanConstant(true); in DoToBooleanLogicalNot()
1542 Node* false_value = __ BooleanConstant(false); in DoToBooleanLogicalNot()
1543 __ BranchIfToBooleanIsTrue(value, &if_true, &if_false); in DoToBooleanLogicalNot()
1544 __ Bind(&if_true); in DoToBooleanLogicalNot()
1547 __ Goto(&end); in DoToBooleanLogicalNot()
1549 __ Bind(&if_false); in DoToBooleanLogicalNot()
1552 __ Goto(&end); in DoToBooleanLogicalNot()
1554 __ Bind(&end); in DoToBooleanLogicalNot()
1555 __ SetAccumulator(result.value()); in DoToBooleanLogicalNot()
1556 __ Dispatch(); in DoToBooleanLogicalNot()
1564 Node* value = __ GetAccumulator(); in DoLogicalNot()
1567 Node* true_value = __ BooleanConstant(true); in DoLogicalNot()
1568 Node* false_value = __ BooleanConstant(false); in DoLogicalNot()
1569 __ Branch(__ WordEqual(value, true_value), &if_true, &if_false); in DoLogicalNot()
1570 __ Bind(&if_true); in DoLogicalNot()
1573 __ Goto(&end); in DoLogicalNot()
1575 __ Bind(&if_false); in DoLogicalNot()
1578 __ AbortIfWordNotEqual(value, false_value, in DoLogicalNot()
1582 __ Goto(&end); in DoLogicalNot()
1584 __ Bind(&end); in DoLogicalNot()
1585 __ SetAccumulator(result.value()); in DoLogicalNot()
1586 __ Dispatch(); in DoLogicalNot()
1594 Node* value = __ GetAccumulator(); in DoTypeOf()
1595 Node* context = __ GetContext(); in DoTypeOf()
1597 __ SetAccumulator(result); in DoTypeOf()
1598 __ Dispatch(); in DoTypeOf()
1603 Node* reg_index = __ BytecodeOperandReg(0); in DoDelete()
1604 Node* object = __ LoadRegister(reg_index); in DoDelete()
1605 Node* key = __ GetAccumulator(); in DoDelete()
1606 Node* context = __ GetContext(); in DoDelete()
1607 Node* result = __ CallRuntime(function_id, context, object, key); in DoDelete()
1608 __ SetAccumulator(result); in DoDelete()
1609 __ Dispatch(); in DoDelete()
1630 Node* function_reg = __ BytecodeOperandReg(0); in DoJSCall()
1631 Node* function = __ LoadRegister(function_reg); in DoJSCall()
1632 Node* receiver_reg = __ BytecodeOperandReg(1); in DoJSCall()
1633 Node* receiver_arg = __ RegisterLocation(receiver_reg); in DoJSCall()
1634 Node* receiver_args_count = __ BytecodeOperandCount(2); in DoJSCall()
1635 Node* receiver_count = __ Int32Constant(1); in DoJSCall()
1636 Node* args_count = __ Int32Sub(receiver_args_count, receiver_count); in DoJSCall()
1637 Node* slot_id = __ BytecodeOperandIdx(3); in DoJSCall()
1638 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoJSCall()
1639 Node* context = __ GetContext(); in DoJSCall()
1641 __ CallJSWithFeedback(function, context, receiver_arg, args_count, in DoJSCall()
1643 __ SetAccumulator(result); in DoJSCall()
1644 __ Dispatch(); in DoJSCall()
1682 Node* function_id = __ BytecodeOperandRuntimeId(0); in DoCallRuntime()
1683 Node* first_arg_reg = __ BytecodeOperandReg(1); in DoCallRuntime()
1684 Node* first_arg = __ RegisterLocation(first_arg_reg); in DoCallRuntime()
1685 Node* args_count = __ BytecodeOperandCount(2); in DoCallRuntime()
1686 Node* context = __ GetContext(); in DoCallRuntime()
1687 Node* result = __ CallRuntimeN(function_id, context, first_arg, args_count); in DoCallRuntime()
1688 __ SetAccumulator(result); in DoCallRuntime()
1689 __ Dispatch(); in DoCallRuntime()
1698 Node* function_id = __ BytecodeOperandIntrinsicId(0); in DoInvokeIntrinsic()
1699 Node* first_arg_reg = __ BytecodeOperandReg(1); in DoInvokeIntrinsic()
1700 Node* arg_count = __ BytecodeOperandCount(2); in DoInvokeIntrinsic()
1701 Node* context = __ GetContext(); in DoInvokeIntrinsic()
1705 __ SetAccumulator(result); in DoInvokeIntrinsic()
1706 __ Dispatch(); in DoInvokeIntrinsic()
1717 Node* function_id = __ BytecodeOperandRuntimeId(0); in DoCallRuntimeForPair()
1718 Node* first_arg_reg = __ BytecodeOperandReg(1); in DoCallRuntimeForPair()
1719 Node* first_arg = __ RegisterLocation(first_arg_reg); in DoCallRuntimeForPair()
1720 Node* args_count = __ BytecodeOperandCount(2); in DoCallRuntimeForPair()
1721 Node* context = __ GetContext(); in DoCallRuntimeForPair()
1723 __ CallRuntimeN(function_id, context, first_arg, args_count, 2); in DoCallRuntimeForPair()
1726 Node* first_return_reg = __ BytecodeOperandReg(3); in DoCallRuntimeForPair()
1727 Node* second_return_reg = __ NextRegister(first_return_reg); in DoCallRuntimeForPair()
1728 Node* result0 = __ Projection(0, result_pair); in DoCallRuntimeForPair()
1729 Node* result1 = __ Projection(1, result_pair); in DoCallRuntimeForPair()
1730 __ StoreRegister(result0, first_return_reg); in DoCallRuntimeForPair()
1731 __ StoreRegister(result1, second_return_reg); in DoCallRuntimeForPair()
1732 __ Dispatch(); in DoCallRuntimeForPair()
1740 Node* context_index = __ BytecodeOperandIdx(0); in DoCallJSRuntime()
1741 Node* receiver_reg = __ BytecodeOperandReg(1); in DoCallJSRuntime()
1742 Node* first_arg = __ RegisterLocation(receiver_reg); in DoCallJSRuntime()
1743 Node* receiver_args_count = __ BytecodeOperandCount(2); in DoCallJSRuntime()
1744 Node* receiver_count = __ Int32Constant(1); in DoCallJSRuntime()
1745 Node* args_count = __ Int32Sub(receiver_args_count, receiver_count); in DoCallJSRuntime()
1748 Node* context = __ GetContext(); in DoCallJSRuntime()
1749 Node* native_context = __ LoadNativeContext(context); in DoCallJSRuntime()
1750 Node* function = __ LoadContextElement(native_context, context_index); in DoCallJSRuntime()
1753 Node* result = __ CallJS(function, context, first_arg, args_count, in DoCallJSRuntime()
1755 __ SetAccumulator(result); in DoCallJSRuntime()
1756 __ Dispatch(); in DoCallJSRuntime()
1767 Node* new_target = __ GetAccumulator(); in DoNew()
1768 Node* constructor_reg = __ BytecodeOperandReg(0); in DoNew()
1769 Node* constructor = __ LoadRegister(constructor_reg); in DoNew()
1770 Node* first_arg_reg = __ BytecodeOperandReg(1); in DoNew()
1771 Node* first_arg = __ RegisterLocation(first_arg_reg); in DoNew()
1772 Node* args_count = __ BytecodeOperandCount(2); in DoNew()
1773 Node* slot_id = __ BytecodeOperandIdx(3); in DoNew()
1774 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoNew()
1775 Node* context = __ GetContext(); in DoNew()
1776 Node* result = __ CallConstruct(constructor, context, new_target, first_arg, in DoNew()
1778 __ SetAccumulator(result); in DoNew()
1779 __ Dispatch(); in DoNew()
1853 Node* relative_jump = __ BytecodeOperandImm(0); in DoJump()
1854 __ Jump(relative_jump); in DoJump()
1861 Node* index = __ BytecodeOperandIdx(0); in DoJumpConstant()
1862 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpConstant()
1863 __ Jump(relative_jump); in DoJumpConstant()
1871 Node* accumulator = __ GetAccumulator(); in DoJumpIfTrue()
1872 Node* relative_jump = __ BytecodeOperandImm(0); in DoJumpIfTrue()
1873 Node* true_value = __ BooleanConstant(true); in DoJumpIfTrue()
1874 __ JumpIfWordEqual(accumulator, true_value, relative_jump); in DoJumpIfTrue()
1882 Node* accumulator = __ GetAccumulator(); in DoJumpIfTrueConstant()
1883 Node* index = __ BytecodeOperandIdx(0); in DoJumpIfTrueConstant()
1884 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpIfTrueConstant()
1885 Node* true_value = __ BooleanConstant(true); in DoJumpIfTrueConstant()
1886 __ JumpIfWordEqual(accumulator, true_value, relative_jump); in DoJumpIfTrueConstant()
1894 Node* accumulator = __ GetAccumulator(); in DoJumpIfFalse()
1895 Node* relative_jump = __ BytecodeOperandImm(0); in DoJumpIfFalse()
1896 Node* false_value = __ BooleanConstant(false); in DoJumpIfFalse()
1897 __ JumpIfWordEqual(accumulator, false_value, relative_jump); in DoJumpIfFalse()
1905 Node* accumulator = __ GetAccumulator(); in DoJumpIfFalseConstant()
1906 Node* index = __ BytecodeOperandIdx(0); in DoJumpIfFalseConstant()
1907 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpIfFalseConstant()
1908 Node* false_value = __ BooleanConstant(false); in DoJumpIfFalseConstant()
1909 __ JumpIfWordEqual(accumulator, false_value, relative_jump); in DoJumpIfFalseConstant()
1917 Node* value = __ GetAccumulator(); in DoJumpIfToBooleanTrue()
1918 Node* relative_jump = __ BytecodeOperandImm(0); in DoJumpIfToBooleanTrue()
1920 __ BranchIfToBooleanIsTrue(value, &if_true, &if_false); in DoJumpIfToBooleanTrue()
1921 __ Bind(&if_true); in DoJumpIfToBooleanTrue()
1922 __ Jump(relative_jump); in DoJumpIfToBooleanTrue()
1923 __ Bind(&if_false); in DoJumpIfToBooleanTrue()
1924 __ Dispatch(); in DoJumpIfToBooleanTrue()
1934 Node* value = __ GetAccumulator(); in DoJumpIfToBooleanTrueConstant()
1935 Node* index = __ BytecodeOperandIdx(0); in DoJumpIfToBooleanTrueConstant()
1936 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpIfToBooleanTrueConstant()
1938 __ BranchIfToBooleanIsTrue(value, &if_true, &if_false); in DoJumpIfToBooleanTrueConstant()
1939 __ Bind(&if_true); in DoJumpIfToBooleanTrueConstant()
1940 __ Jump(relative_jump); in DoJumpIfToBooleanTrueConstant()
1941 __ Bind(&if_false); in DoJumpIfToBooleanTrueConstant()
1942 __ Dispatch(); in DoJumpIfToBooleanTrueConstant()
1950 Node* value = __ GetAccumulator(); in DoJumpIfToBooleanFalse()
1951 Node* relative_jump = __ BytecodeOperandImm(0); in DoJumpIfToBooleanFalse()
1953 __ BranchIfToBooleanIsTrue(value, &if_true, &if_false); in DoJumpIfToBooleanFalse()
1954 __ Bind(&if_true); in DoJumpIfToBooleanFalse()
1955 __ Dispatch(); in DoJumpIfToBooleanFalse()
1956 __ Bind(&if_false); in DoJumpIfToBooleanFalse()
1957 __ Jump(relative_jump); in DoJumpIfToBooleanFalse()
1967 Node* value = __ GetAccumulator(); in DoJumpIfToBooleanFalseConstant()
1968 Node* index = __ BytecodeOperandIdx(0); in DoJumpIfToBooleanFalseConstant()
1969 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpIfToBooleanFalseConstant()
1971 __ BranchIfToBooleanIsTrue(value, &if_true, &if_false); in DoJumpIfToBooleanFalseConstant()
1972 __ Bind(&if_true); in DoJumpIfToBooleanFalseConstant()
1973 __ Dispatch(); in DoJumpIfToBooleanFalseConstant()
1974 __ Bind(&if_false); in DoJumpIfToBooleanFalseConstant()
1975 __ Jump(relative_jump); in DoJumpIfToBooleanFalseConstant()
1983 Node* accumulator = __ GetAccumulator(); in DoJumpIfNull()
1984 Node* null_value = __ HeapConstant(isolate_->factory()->null_value()); in DoJumpIfNull()
1985 Node* relative_jump = __ BytecodeOperandImm(0); in DoJumpIfNull()
1986 __ JumpIfWordEqual(accumulator, null_value, relative_jump); in DoJumpIfNull()
1994 Node* accumulator = __ GetAccumulator(); in DoJumpIfNullConstant()
1995 Node* null_value = __ HeapConstant(isolate_->factory()->null_value()); in DoJumpIfNullConstant()
1996 Node* index = __ BytecodeOperandIdx(0); in DoJumpIfNullConstant()
1997 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpIfNullConstant()
1998 __ JumpIfWordEqual(accumulator, null_value, relative_jump); in DoJumpIfNullConstant()
2006 Node* accumulator = __ GetAccumulator(); in DoJumpIfUndefined()
2008 __ HeapConstant(isolate_->factory()->undefined_value()); in DoJumpIfUndefined()
2009 Node* relative_jump = __ BytecodeOperandImm(0); in DoJumpIfUndefined()
2010 __ JumpIfWordEqual(accumulator, undefined_value, relative_jump); in DoJumpIfUndefined()
2018 Node* accumulator = __ GetAccumulator(); in DoJumpIfUndefinedConstant()
2020 __ HeapConstant(isolate_->factory()->undefined_value()); in DoJumpIfUndefinedConstant()
2021 Node* index = __ BytecodeOperandIdx(0); in DoJumpIfUndefinedConstant()
2022 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpIfUndefinedConstant()
2023 __ JumpIfWordEqual(accumulator, undefined_value, relative_jump); in DoJumpIfUndefinedConstant()
2031 Node* accumulator = __ GetAccumulator(); in DoJumpIfNotHole()
2032 Node* the_hole_value = __ HeapConstant(isolate_->factory()->the_hole_value()); in DoJumpIfNotHole()
2033 Node* relative_jump = __ BytecodeOperandImm(0); in DoJumpIfNotHole()
2034 __ JumpIfWordNotEqual(accumulator, the_hole_value, relative_jump); in DoJumpIfNotHole()
2042 Node* accumulator = __ GetAccumulator(); in DoJumpIfNotHoleConstant()
2043 Node* the_hole_value = __ HeapConstant(isolate_->factory()->the_hole_value()); in DoJumpIfNotHoleConstant()
2044 Node* index = __ BytecodeOperandIdx(0); in DoJumpIfNotHoleConstant()
2045 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpIfNotHoleConstant()
2046 __ JumpIfWordNotEqual(accumulator, the_hole_value, relative_jump); in DoJumpIfNotHoleConstant()
2055 Node* relative_jump = __ BytecodeOperandImm(0); in DoJumpLoop()
2056 Node* loop_depth = __ BytecodeOperandImm(1); in DoJumpLoop()
2057 Node* osr_level = __ LoadOSRNestingLevel(); in DoJumpLoop()
2062 Node* condition = __ Int32GreaterThanOrEqual(loop_depth, osr_level); in DoJumpLoop()
2063 __ Branch(condition, &ok, &osr_armed); in DoJumpLoop()
2065 __ Bind(&ok); in DoJumpLoop()
2066 __ Jump(relative_jump); in DoJumpLoop()
2068 __ Bind(&osr_armed); in DoJumpLoop()
2071 Node* target = __ HeapConstant(callable.code()); in DoJumpLoop()
2072 Node* context = __ GetContext(); in DoJumpLoop()
2073 __ CallStub(callable.descriptor(), target, context); in DoJumpLoop()
2074 __ Jump(relative_jump); in DoJumpLoop()
2083 Node* index = __ BytecodeOperandIdx(0); in DoCreateRegExpLiteral()
2084 Node* pattern = __ LoadConstantPoolEntry(index); in DoCreateRegExpLiteral()
2085 Node* literal_index_raw = __ BytecodeOperandIdx(1); in DoCreateRegExpLiteral()
2086 Node* literal_index = __ SmiTag(literal_index_raw); in DoCreateRegExpLiteral()
2087 Node* flags_raw = __ BytecodeOperandFlag(2); in DoCreateRegExpLiteral()
2088 Node* flags = __ SmiTag(flags_raw); in DoCreateRegExpLiteral()
2089 Node* closure = __ LoadRegister(Register::function_closure()); in DoCreateRegExpLiteral()
2090 Node* context = __ GetContext(); in DoCreateRegExpLiteral()
2093 __ SetAccumulator(result); in DoCreateRegExpLiteral()
2094 __ Dispatch(); in DoCreateRegExpLiteral()
2102 Node* literal_index_raw = __ BytecodeOperandIdx(1); in DoCreateArrayLiteral()
2103 Node* literal_index = __ SmiTag(literal_index_raw); in DoCreateArrayLiteral()
2104 Node* closure = __ LoadRegister(Register::function_closure()); in DoCreateArrayLiteral()
2105 Node* context = __ GetContext(); in DoCreateArrayLiteral()
2106 Node* bytecode_flags = __ BytecodeOperandFlag(2); in DoCreateArrayLiteral()
2110 Node* use_fast_shallow_clone = __ Word32And( in DoCreateArrayLiteral()
2112 __ Int32Constant(CreateArrayLiteralFlags::FastShallowCloneBit::kMask)); in DoCreateArrayLiteral()
2113 __ Branch(use_fast_shallow_clone, &fast_shallow_clone, &call_runtime); in DoCreateArrayLiteral()
2115 __ Bind(&fast_shallow_clone); in DoCreateArrayLiteral()
2121 __ SetAccumulator(result); in DoCreateArrayLiteral()
2122 __ Dispatch(); in DoCreateArrayLiteral()
2125 __ Bind(&call_runtime); in DoCreateArrayLiteral()
2128 Node* flags_raw = __ Word32And( in DoCreateArrayLiteral()
2130 __ Int32Constant(CreateArrayLiteralFlags::FlagsBits::kMask)); in DoCreateArrayLiteral()
2131 Node* flags = __ SmiTag(flags_raw); in DoCreateArrayLiteral()
2132 Node* index = __ BytecodeOperandIdx(0); in DoCreateArrayLiteral()
2133 Node* constant_elements = __ LoadConstantPoolEntry(index); in DoCreateArrayLiteral()
2135 __ CallRuntime(Runtime::kCreateArrayLiteral, context, closure, in DoCreateArrayLiteral()
2137 __ SetAccumulator(result); in DoCreateArrayLiteral()
2138 __ Dispatch(); in DoCreateArrayLiteral()
2147 Node* literal_index_raw = __ BytecodeOperandIdx(1); in DoCreateObjectLiteral()
2148 Node* literal_index = __ SmiTag(literal_index_raw); in DoCreateObjectLiteral()
2149 Node* bytecode_flags = __ BytecodeOperandFlag(2); in DoCreateObjectLiteral()
2150 Node* closure = __ LoadRegister(Register::function_closure()); in DoCreateObjectLiteral()
2156 __ DecodeWord32<CreateObjectLiteralFlags::FastClonePropertiesCountBits>( in DoCreateObjectLiteral()
2158 __ Branch(fast_clone_properties_count, &if_fast_clone, &if_not_fast_clone); in DoCreateObjectLiteral()
2160 __ Bind(&if_fast_clone); in DoCreateObjectLiteral()
2166 __ StoreRegister(result, __ BytecodeOperandReg(3)); in DoCreateObjectLiteral()
2167 __ Dispatch(); in DoCreateObjectLiteral()
2170 __ Bind(&if_not_fast_clone); in DoCreateObjectLiteral()
2173 Node* index = __ BytecodeOperandIdx(0); in DoCreateObjectLiteral()
2174 Node* constant_elements = __ LoadConstantPoolEntry(index); in DoCreateObjectLiteral()
2175 Node* context = __ GetContext(); in DoCreateObjectLiteral()
2178 Node* flags_raw = __ Word32And( in DoCreateObjectLiteral()
2180 __ Int32Constant(CreateObjectLiteralFlags::FlagsBits::kMask)); in DoCreateObjectLiteral()
2181 Node* flags = __ SmiTag(flags_raw); in DoCreateObjectLiteral()
2184 __ CallRuntime(Runtime::kCreateObjectLiteral, context, closure, in DoCreateObjectLiteral()
2186 __ StoreRegister(result, __ BytecodeOperandReg(3)); in DoCreateObjectLiteral()
2188 __ Dispatch(); in DoCreateObjectLiteral()
2197 Node* index = __ BytecodeOperandIdx(0); in DoCreateClosure()
2198 Node* shared = __ LoadConstantPoolEntry(index); in DoCreateClosure()
2199 Node* flags = __ BytecodeOperandFlag(1); in DoCreateClosure()
2200 Node* context = __ GetContext(); in DoCreateClosure()
2203 Node* fast_new_closure = __ Word32And( in DoCreateClosure()
2204 flags, __ Int32Constant(CreateClosureFlags::FastNewClosureBit::kMask)); in DoCreateClosure()
2205 __ GotoUnless(fast_new_closure, &call_runtime); in DoCreateClosure()
2206 __ SetAccumulator(FastNewClosureStub::Generate(assembler, shared, context)); in DoCreateClosure()
2207 __ Dispatch(); in DoCreateClosure()
2209 __ Bind(&call_runtime); in DoCreateClosure()
2212 Node* tenured_raw = __ Word32And( in DoCreateClosure()
2213 flags, __ Int32Constant(CreateClosureFlags::PretenuredBit::kMask)); in DoCreateClosure()
2214 Node* tenured = __ SmiTag(tenured_raw); in DoCreateClosure()
2215 Node* result = __ CallRuntime(Runtime::kInterpreterNewClosure, context, in DoCreateClosure()
2217 __ SetAccumulator(result); in DoCreateClosure()
2218 __ Dispatch(); in DoCreateClosure()
2227 Node* index = __ BytecodeOperandIdx(0); in DoCreateBlockContext()
2228 Node* scope_info = __ LoadConstantPoolEntry(index); in DoCreateBlockContext()
2229 Node* closure = __ GetAccumulator(); in DoCreateBlockContext()
2230 Node* context = __ GetContext(); in DoCreateBlockContext()
2231 __ SetAccumulator( in DoCreateBlockContext()
2232 __ CallRuntime(Runtime::kPushBlockContext, context, scope_info, closure)); in DoCreateBlockContext()
2233 __ Dispatch(); in DoCreateBlockContext()
2242 Node* exception_reg = __ BytecodeOperandReg(0); in DoCreateCatchContext()
2243 Node* exception = __ LoadRegister(exception_reg); in DoCreateCatchContext()
2244 Node* name_idx = __ BytecodeOperandIdx(1); in DoCreateCatchContext()
2245 Node* name = __ LoadConstantPoolEntry(name_idx); in DoCreateCatchContext()
2246 Node* scope_info_idx = __ BytecodeOperandIdx(2); in DoCreateCatchContext()
2247 Node* scope_info = __ LoadConstantPoolEntry(scope_info_idx); in DoCreateCatchContext()
2248 Node* closure = __ GetAccumulator(); in DoCreateCatchContext()
2249 Node* context = __ GetContext(); in DoCreateCatchContext()
2250 __ SetAccumulator(__ CallRuntime(Runtime::kPushCatchContext, context, name, in DoCreateCatchContext()
2252 __ Dispatch(); in DoCreateCatchContext()
2259 Node* closure = __ LoadRegister(Register::function_closure()); in DoCreateFunctionContext()
2260 Node* slots = __ BytecodeOperandUImm(0); in DoCreateFunctionContext()
2261 Node* context = __ GetContext(); in DoCreateFunctionContext()
2262 __ SetAccumulator( in DoCreateFunctionContext()
2264 __ Dispatch(); in DoCreateFunctionContext()
2273 Node* reg_index = __ BytecodeOperandReg(0); in DoCreateWithContext()
2274 Node* object = __ LoadRegister(reg_index); in DoCreateWithContext()
2275 Node* scope_info_idx = __ BytecodeOperandIdx(1); in DoCreateWithContext()
2276 Node* scope_info = __ LoadConstantPoolEntry(scope_info_idx); in DoCreateWithContext()
2277 Node* closure = __ GetAccumulator(); in DoCreateWithContext()
2278 Node* context = __ GetContext(); in DoCreateWithContext()
2279 __ SetAccumulator(__ CallRuntime(Runtime::kPushWithContext, context, object, in DoCreateWithContext()
2281 __ Dispatch(); in DoCreateWithContext()
2288 Node* closure = __ LoadRegister(Register::function_closure()); in DoCreateMappedArguments()
2289 Node* context = __ GetContext(); in DoCreateMappedArguments()
2298 __ LoadObjectField(closure, JSFunction::kSharedFunctionInfoOffset); in DoCreateMappedArguments()
2299 Node* compiler_hints = __ LoadObjectField( in DoCreateMappedArguments()
2302 Node* duplicate_parameters_bit = __ Int32Constant( in DoCreateMappedArguments()
2304 Node* compare = __ Word32And(compiler_hints, duplicate_parameters_bit); in DoCreateMappedArguments()
2305 __ Branch(compare, &if_duplicate_parameters, &if_not_duplicate_parameters); in DoCreateMappedArguments()
2307 __ Bind(&if_not_duplicate_parameters); in DoCreateMappedArguments()
2311 Node* target = __ HeapConstant(callable.code()); in DoCreateMappedArguments()
2312 Node* result = __ CallStub(callable.descriptor(), target, context, closure); in DoCreateMappedArguments()
2313 __ SetAccumulator(result); in DoCreateMappedArguments()
2314 __ Dispatch(); in DoCreateMappedArguments()
2317 __ Bind(&if_duplicate_parameters); in DoCreateMappedArguments()
2320 __ CallRuntime(Runtime::kNewSloppyArguments_Generic, context, closure); in DoCreateMappedArguments()
2321 __ SetAccumulator(result); in DoCreateMappedArguments()
2322 __ Dispatch(); in DoCreateMappedArguments()
2332 Node* target = __ HeapConstant(callable.code()); in DoCreateUnmappedArguments()
2333 Node* context = __ GetContext(); in DoCreateUnmappedArguments()
2334 Node* closure = __ LoadRegister(Register::function_closure()); in DoCreateUnmappedArguments()
2335 Node* result = __ CallStub(callable.descriptor(), target, context, closure); in DoCreateUnmappedArguments()
2336 __ SetAccumulator(result); in DoCreateUnmappedArguments()
2337 __ Dispatch(); in DoCreateUnmappedArguments()
2346 Node* target = __ HeapConstant(callable.code()); in DoCreateRestParameter()
2347 Node* closure = __ LoadRegister(Register::function_closure()); in DoCreateRestParameter()
2348 Node* context = __ GetContext(); in DoCreateRestParameter()
2349 Node* result = __ CallStub(callable.descriptor(), target, context, closure); in DoCreateRestParameter()
2350 __ SetAccumulator(result); in DoCreateRestParameter()
2351 __ Dispatch(); in DoCreateRestParameter()
2360 Node* interrupt = __ StackCheckTriggeredInterrupt(); in DoStackCheck()
2361 __ Branch(interrupt, &stack_check_interrupt, &ok); in DoStackCheck()
2363 __ Bind(&ok); in DoStackCheck()
2364 __ Dispatch(); in DoStackCheck()
2366 __ Bind(&stack_check_interrupt); in DoStackCheck()
2368 Node* context = __ GetContext(); in DoStackCheck()
2369 __ CallRuntime(Runtime::kStackGuard, context); in DoStackCheck()
2370 __ Dispatch(); in DoStackCheck()
2378 Node* exception = __ GetAccumulator(); in DoThrow()
2379 Node* context = __ GetContext(); in DoThrow()
2380 __ CallRuntime(Runtime::kThrow, context, exception); in DoThrow()
2382 __ Abort(kUnexpectedReturnFromThrow); in DoThrow()
2389 Node* exception = __ GetAccumulator(); in DoReThrow()
2390 Node* context = __ GetContext(); in DoReThrow()
2391 __ CallRuntime(Runtime::kReThrow, context, exception); in DoReThrow()
2393 __ Abort(kUnexpectedReturnFromThrow); in DoReThrow()
2400 __ UpdateInterruptBudgetOnReturn(); in DoReturn()
2401 Node* accumulator = __ GetAccumulator(); in DoReturn()
2402 __ Return(accumulator); in DoReturn()
2409 Node* context = __ GetContext(); in DoDebugger()
2410 __ CallRuntime(Runtime::kHandleDebuggerStatement, context); in DoDebugger()
2411 __ Dispatch(); in DoDebugger()
2419 Node* context = __ GetContext(); \
2420 Node* accumulator = __ GetAccumulator(); \
2422 __ CallRuntime(Runtime::kDebugBreakOnBytecode, context, accumulator); \
2423 __ DispatchToBytecodeHandler(original_handler); \
2432 __ StoreRegister(cache_type, output_register); in BuildForInPrepareResult()
2433 output_register = __ NextRegister(output_register); in BuildForInPrepareResult()
2434 __ StoreRegister(cache_array, output_register); in BuildForInPrepareResult()
2435 output_register = __ NextRegister(output_register); in BuildForInPrepareResult()
2436 __ StoreRegister(cache_length, output_register); in BuildForInPrepareResult()
2448 Node* object_reg = __ BytecodeOperandReg(0); in DoForInPrepare()
2449 Node* receiver = __ LoadRegister(object_reg); in DoForInPrepare()
2450 Node* context = __ GetContext(); in DoForInPrepare()
2451 Node* const zero_smi = __ SmiConstant(Smi::kZero); in DoForInPrepare()
2458 Node* instance_type = __ LoadInstanceType(receiver); in DoForInPrepare()
2459 __ Branch(__ IsJSReceiverInstanceType(instance_type), &already_receiver, in DoForInPrepare()
2461 __ Bind(&abort); in DoForInPrepare()
2463 __ Abort(kExpectedJSReceiver); in DoForInPrepare()
2465 __ Goto(&already_receiver); in DoForInPrepare()
2467 __ Bind(&already_receiver); in DoForInPrepare()
2470 __ CheckEnumCache(receiver, &use_enum_cache, &use_runtime); in DoForInPrepare()
2472 __ Bind(&use_enum_cache); in DoForInPrepare()
2476 Node* cache_type = __ LoadMap(receiver); in DoForInPrepare()
2477 Node* cache_length = __ EnumLength(cache_type); in DoForInPrepare()
2478 __ GotoIf(assembler->WordEqual(cache_length, zero_smi), in DoForInPrepare()
2480 Node* descriptors = __ LoadMapDescriptors(cache_type); in DoForInPrepare()
2482 __ LoadObjectField(descriptors, DescriptorArray::kEnumCacheOffset); in DoForInPrepare()
2483 Node* cache_array = __ LoadObjectField( in DoForInPrepare()
2485 Node* output_register = __ BytecodeOperandReg(1); in DoForInPrepare()
2488 __ Dispatch(); in DoForInPrepare()
2491 __ Bind(&use_runtime); in DoForInPrepare()
2494 __ CallRuntime(Runtime::kForInPrepare, context, receiver); in DoForInPrepare()
2495 Node* cache_type = __ Projection(0, result_triple); in DoForInPrepare()
2496 Node* cache_array = __ Projection(1, result_triple); in DoForInPrepare()
2497 Node* cache_length = __ Projection(2, result_triple); in DoForInPrepare()
2498 Node* output_register = __ BytecodeOperandReg(1); in DoForInPrepare()
2501 __ Dispatch(); in DoForInPrepare()
2504 __ Bind(¬hing_to_iterate); in DoForInPrepare()
2507 Node* output_register = __ BytecodeOperandReg(1); in DoForInPrepare()
2510 __ Dispatch(); in DoForInPrepare()
2518 Node* receiver_reg = __ BytecodeOperandReg(0); in DoForInNext()
2519 Node* receiver = __ LoadRegister(receiver_reg); in DoForInNext()
2520 Node* index_reg = __ BytecodeOperandReg(1); in DoForInNext()
2521 Node* index = __ LoadRegister(index_reg); in DoForInNext()
2522 Node* cache_type_reg = __ BytecodeOperandReg(2); in DoForInNext()
2523 Node* cache_type = __ LoadRegister(cache_type_reg); in DoForInNext()
2524 Node* cache_array_reg = __ NextRegister(cache_type_reg); in DoForInNext()
2525 Node* cache_array = __ LoadRegister(cache_array_reg); in DoForInNext()
2528 Node* key = __ LoadFixedArrayElement(cache_array, index, 0, in DoForInNext()
2533 Node* receiver_map = __ LoadObjectField(receiver, HeapObject::kMapOffset); in DoForInNext()
2534 __ Branch(__ WordEqual(receiver_map, cache_type), &if_fast, &if_slow); in DoForInNext()
2535 __ Bind(&if_fast); in DoForInNext()
2538 __ SetAccumulator(key); in DoForInNext()
2539 __ Dispatch(); in DoForInNext()
2541 __ Bind(&if_slow); in DoForInNext()
2544 Node* vector_index = __ BytecodeOperandIdx(3); in DoForInNext()
2545 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); in DoForInNext()
2547 __ HeapConstant(TypeFeedbackVector::MegamorphicSentinel(isolate_)); in DoForInNext()
2548 __ StoreFixedArrayElement(type_feedback_vector, vector_index, in DoForInNext()
2552 Node* context = __ GetContext(); in DoForInNext()
2554 Node* result = __ CallStub(callable, context, key, receiver); in DoForInNext()
2555 __ SetAccumulator(result); in DoForInNext()
2556 __ Dispatch(); in DoForInNext()
2564 Node* index_reg = __ BytecodeOperandReg(0); in DoForInContinue()
2565 Node* index = __ LoadRegister(index_reg); in DoForInContinue()
2566 Node* cache_length_reg = __ BytecodeOperandReg(1); in DoForInContinue()
2567 Node* cache_length = __ LoadRegister(cache_length_reg); in DoForInContinue()
2571 __ Branch(__ WordEqual(index, cache_length), &if_true, &if_false); in DoForInContinue()
2572 __ Bind(&if_true); in DoForInContinue()
2574 __ SetAccumulator(__ BooleanConstant(false)); in DoForInContinue()
2575 __ Goto(&end); in DoForInContinue()
2577 __ Bind(&if_false); in DoForInContinue()
2579 __ SetAccumulator(__ BooleanConstant(true)); in DoForInContinue()
2580 __ Goto(&end); in DoForInContinue()
2582 __ Bind(&end); in DoForInContinue()
2583 __ Dispatch(); in DoForInContinue()
2591 Node* index_reg = __ BytecodeOperandReg(0); in DoForInStep()
2592 Node* index = __ LoadRegister(index_reg); in DoForInStep()
2593 Node* one = __ SmiConstant(Smi::FromInt(1)); in DoForInStep()
2594 Node* result = __ SmiAdd(index, one); in DoForInStep()
2595 __ SetAccumulator(result); in DoForInStep()
2596 __ Dispatch(); in DoForInStep()
2603 __ DispatchWide(OperandScale::kDouble); in DoWide()
2610 __ DispatchWide(OperandScale::kQuadruple); in DoExtraWide()
2617 __ Abort(kInvalidBytecode); in DoIllegal()
2623 void Interpreter::DoNop(InterpreterAssembler* assembler) { __ Dispatch(); } in DoNop()
2631 Node* generator_reg = __ BytecodeOperandReg(0); in DoSuspendGenerator()
2632 Node* generator = __ LoadRegister(generator_reg); in DoSuspendGenerator()
2635 Node* step_action_address = __ ExternalConstant( in DoSuspendGenerator()
2637 Node* step_action = __ Load(MachineType::Int8(), step_action_address); in DoSuspendGenerator()
2641 Node* step_next = __ Int32Constant(StepNext); in DoSuspendGenerator()
2642 __ Branch(__ Int32LessThanOrEqual(step_next, step_action), &if_stepping, &ok); in DoSuspendGenerator()
2643 __ Bind(&ok); in DoSuspendGenerator()
2646 __ LoadObjectField(generator, JSGeneratorObject::kOperandStackOffset); in DoSuspendGenerator()
2647 Node* context = __ GetContext(); in DoSuspendGenerator()
2648 Node* state = __ GetAccumulator(); in DoSuspendGenerator()
2650 __ ExportRegisterFile(array); in DoSuspendGenerator()
2651 __ StoreObjectField(generator, JSGeneratorObject::kContextOffset, context); in DoSuspendGenerator()
2652 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset, state); in DoSuspendGenerator()
2654 Node* offset = __ SmiTag(__ BytecodeOffset()); in DoSuspendGenerator()
2655 __ StoreObjectField(generator, JSGeneratorObject::kInputOrDebugPosOffset, in DoSuspendGenerator()
2658 __ Dispatch(); in DoSuspendGenerator()
2660 __ Bind(&if_stepping); in DoSuspendGenerator()
2662 Node* context = __ GetContext(); in DoSuspendGenerator()
2663 __ CallRuntime(Runtime::kDebugRecordAsyncFunction, context, generator); in DoSuspendGenerator()
2664 __ Goto(&ok); in DoSuspendGenerator()
2674 Node* generator_reg = __ BytecodeOperandReg(0); in DoResumeGenerator()
2675 Node* generator = __ LoadRegister(generator_reg); in DoResumeGenerator()
2677 __ ImportRegisterFile( in DoResumeGenerator()
2678 __ LoadObjectField(generator, JSGeneratorObject::kOperandStackOffset)); in DoResumeGenerator()
2681 __ LoadObjectField(generator, JSGeneratorObject::kContinuationOffset); in DoResumeGenerator()
2682 Node* new_state = __ Int32Constant(JSGeneratorObject::kGeneratorExecuting); in DoResumeGenerator()
2683 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset, in DoResumeGenerator()
2684 __ SmiTag(new_state)); in DoResumeGenerator()
2685 __ SetAccumulator(old_state); in DoResumeGenerator()
2687 __ Dispatch(); in DoResumeGenerator()