• Home
  • Raw
  • Download

Lines Matching full:__

38 #define __ assembler->  macro
387 Node* zero_value = __ NumberConstant(0.0); in DoLdaZero()
388 __ SetAccumulator(zero_value); in DoLdaZero()
389 __ Dispatch(); in DoLdaZero()
396 Node* smi_int = __ BytecodeOperandImmSmi(0); in DoLdaSmi()
397 __ SetAccumulator(smi_int); in DoLdaSmi()
398 __ Dispatch(); in DoLdaSmi()
405 Node* index = __ BytecodeOperandIdx(0); in DoLdaConstant()
406 Node* constant = __ LoadConstantPoolEntry(index); in DoLdaConstant()
407 __ SetAccumulator(constant); in DoLdaConstant()
408 __ Dispatch(); in DoLdaConstant()
416 __ HeapConstant(isolate_->factory()->undefined_value()); in DoLdaUndefined()
417 __ SetAccumulator(undefined_value); in DoLdaUndefined()
418 __ Dispatch(); in DoLdaUndefined()
425 Node* null_value = __ HeapConstant(isolate_->factory()->null_value()); in DoLdaNull()
426 __ SetAccumulator(null_value); in DoLdaNull()
427 __ Dispatch(); in DoLdaNull()
434 Node* the_hole_value = __ HeapConstant(isolate_->factory()->the_hole_value()); in DoLdaTheHole()
435 __ SetAccumulator(the_hole_value); in DoLdaTheHole()
436 __ Dispatch(); in DoLdaTheHole()
443 Node* true_value = __ HeapConstant(isolate_->factory()->true_value()); in DoLdaTrue()
444 __ SetAccumulator(true_value); in DoLdaTrue()
445 __ Dispatch(); in DoLdaTrue()
452 Node* false_value = __ HeapConstant(isolate_->factory()->false_value()); in DoLdaFalse()
453 __ SetAccumulator(false_value); in DoLdaFalse()
454 __ Dispatch(); in DoLdaFalse()
461 Node* reg_index = __ BytecodeOperandReg(0); in DoLdar()
462 Node* value = __ LoadRegister(reg_index); in DoLdar()
463 __ SetAccumulator(value); in DoLdar()
464 __ Dispatch(); in DoLdar()
471 Node* reg_index = __ BytecodeOperandReg(0); in DoStar()
472 Node* accumulator = __ GetAccumulator(); in DoStar()
473 __ StoreRegister(accumulator, reg_index); in DoStar()
474 __ Dispatch(); in DoStar()
481 Node* src_index = __ BytecodeOperandReg(0); in DoMov()
482 Node* src_value = __ LoadRegister(src_index); in DoMov()
483 Node* dst_index = __ BytecodeOperandReg(1); in DoMov()
484 __ StoreRegister(src_value, dst_index); in DoMov()
485 __ Dispatch(); in DoMov()
493 Node* feedback_vector = __ LoadFeedbackVector(); in BuildLoadGlobal()
494 Node* feedback_slot = __ BytecodeOperandIdx(slot_operand_index); in BuildLoadGlobal()
511 __ Bind(&done); in BuildLoadGlobal()
512 __ SetAccumulator(var_result.value()); in BuildLoadGlobal()
513 __ Dispatch(); in BuildLoadGlobal()
522 __ Bind(&try_handler); in BuildLoadGlobal()
524 Node* context = __ GetContext(); in BuildLoadGlobal()
525 Node* smi_slot = __ SmiTag(feedback_slot); in BuildLoadGlobal()
526 Node* name_index = __ BytecodeOperandIdx(name_operand_index); in BuildLoadGlobal()
527 Node* name = __ LoadConstantPoolEntry(name_index); in BuildLoadGlobal()
535 __ Bind(&miss); in BuildLoadGlobal()
537 Node* context = __ GetContext(); in BuildLoadGlobal()
538 Node* smi_slot = __ SmiTag(feedback_slot); in BuildLoadGlobal()
539 Node* name_index = __ BytecodeOperandIdx(name_operand_index); in BuildLoadGlobal()
540 Node* name = __ LoadConstantPoolEntry(name_index); in BuildLoadGlobal()
547 __ Bind(&done); in BuildLoadGlobal()
549 __ SetAccumulator(var_result.value()); in BuildLoadGlobal()
550 __ Dispatch(); in BuildLoadGlobal()
581 Node* context = __ GetContext(); in DoStaGlobal()
582 Node* native_context = __ LoadNativeContext(context); in DoStaGlobal()
584 __ LoadContextElement(native_context, Context::EXTENSION_INDEX); in DoStaGlobal()
587 Node* code_target = __ HeapConstant(ic.code()); in DoStaGlobal()
588 Node* constant_index = __ BytecodeOperandIdx(0); in DoStaGlobal()
589 Node* name = __ LoadConstantPoolEntry(constant_index); in DoStaGlobal()
590 Node* value = __ GetAccumulator(); in DoStaGlobal()
591 Node* raw_slot = __ BytecodeOperandIdx(1); in DoStaGlobal()
592 Node* smi_slot = __ SmiTag(raw_slot); in DoStaGlobal()
593 Node* feedback_vector = __ LoadFeedbackVector(); in DoStaGlobal()
594 __ CallStub(ic.descriptor(), code_target, context, global, name, value, in DoStaGlobal()
596 __ Dispatch(); in DoStaGlobal()
622 Node* reg_index = __ BytecodeOperandReg(0); in DoLdaContextSlot()
623 Node* context = __ LoadRegister(reg_index); in DoLdaContextSlot()
624 Node* slot_index = __ BytecodeOperandIdx(1); in DoLdaContextSlot()
625 Node* depth = __ BytecodeOperandUImm(2); in DoLdaContextSlot()
626 Node* slot_context = __ GetContextAtDepth(context, depth); in DoLdaContextSlot()
627 Node* result = __ LoadContextElement(slot_context, slot_index); in DoLdaContextSlot()
628 __ SetAccumulator(result); in DoLdaContextSlot()
629 __ Dispatch(); in DoLdaContextSlot()
645 Node* slot_index = __ BytecodeOperandIdx(0); in DoLdaCurrentContextSlot()
646 Node* slot_context = __ GetContext(); in DoLdaCurrentContextSlot()
647 Node* result = __ LoadContextElement(slot_context, slot_index); in DoLdaCurrentContextSlot()
648 __ SetAccumulator(result); in DoLdaCurrentContextSlot()
649 __ Dispatch(); in DoLdaCurrentContextSlot()
666 Node* value = __ GetAccumulator(); in DoStaContextSlot()
667 Node* reg_index = __ BytecodeOperandReg(0); in DoStaContextSlot()
668 Node* context = __ LoadRegister(reg_index); in DoStaContextSlot()
669 Node* slot_index = __ BytecodeOperandIdx(1); in DoStaContextSlot()
670 Node* depth = __ BytecodeOperandUImm(2); in DoStaContextSlot()
671 Node* slot_context = __ GetContextAtDepth(context, depth); in DoStaContextSlot()
672 __ StoreContextElement(slot_context, slot_index, value); in DoStaContextSlot()
673 __ Dispatch(); in DoStaContextSlot()
681 Node* value = __ GetAccumulator(); in DoStaCurrentContextSlot()
682 Node* slot_index = __ BytecodeOperandIdx(0); in DoStaCurrentContextSlot()
683 Node* slot_context = __ GetContext(); in DoStaCurrentContextSlot()
684 __ StoreContextElement(slot_context, slot_index, value); in DoStaCurrentContextSlot()
685 __ Dispatch(); in DoStaCurrentContextSlot()
690 Node* name_index = __ BytecodeOperandIdx(0); in DoLdaLookupSlot()
691 Node* name = __ LoadConstantPoolEntry(name_index); in DoLdaLookupSlot()
692 Node* context = __ GetContext(); in DoLdaLookupSlot()
693 Node* result = __ CallRuntime(function_id, context, name); in DoLdaLookupSlot()
694 __ SetAccumulator(result); in DoLdaLookupSlot()
695 __ Dispatch(); in DoLdaLookupSlot()
716 Node* context = __ GetContext(); in DoLdaLookupContextSlot()
717 Node* name_index = __ BytecodeOperandIdx(0); in DoLdaLookupContextSlot()
718 Node* slot_index = __ BytecodeOperandIdx(1); in DoLdaLookupContextSlot()
719 Node* depth = __ BytecodeOperandUImm(2); in DoLdaLookupContextSlot()
724 __ GotoIfHasContextExtensionUpToDepth(context, depth, &slowpath); in DoLdaLookupContextSlot()
728 Node* slot_context = __ GetContextAtDepth(context, depth); in DoLdaLookupContextSlot()
729 Node* result = __ LoadContextElement(slot_context, slot_index); in DoLdaLookupContextSlot()
730 __ SetAccumulator(result); in DoLdaLookupContextSlot()
731 __ Dispatch(); in DoLdaLookupContextSlot()
735 __ Bind(&slowpath); in DoLdaLookupContextSlot()
737 Node* name = __ LoadConstantPoolEntry(name_index); in DoLdaLookupContextSlot()
738 Node* result = __ CallRuntime(function_id, context, name); in DoLdaLookupContextSlot()
739 __ SetAccumulator(result); in DoLdaLookupContextSlot()
740 __ Dispatch(); in DoLdaLookupContextSlot()
763 Node* context = __ GetContext(); in DoLdaLookupGlobalSlot()
764 Node* depth = __ BytecodeOperandUImm(2); in DoLdaLookupGlobalSlot()
769 __ GotoIfHasContextExtensionUpToDepth(context, depth, &slowpath); in DoLdaLookupGlobalSlot()
785 __ Bind(&slowpath); in DoLdaLookupGlobalSlot()
787 Node* name_index = __ BytecodeOperandIdx(0); in DoLdaLookupGlobalSlot()
788 Node* name = __ LoadConstantPoolEntry(name_index); in DoLdaLookupGlobalSlot()
789 Node* result = __ CallRuntime(function_id, context, name); in DoLdaLookupGlobalSlot()
790 __ SetAccumulator(result); in DoLdaLookupGlobalSlot()
791 __ Dispatch(); in DoLdaLookupGlobalSlot()
814 Node* value = __ GetAccumulator(); in DoStaLookupSlot()
815 Node* index = __ BytecodeOperandIdx(0); in DoStaLookupSlot()
816 Node* name = __ LoadConstantPoolEntry(index); in DoStaLookupSlot()
817 Node* context = __ GetContext(); in DoStaLookupSlot()
818 Node* result = __ CallRuntime(is_strict(language_mode) in DoStaLookupSlot()
822 __ SetAccumulator(result); in DoStaLookupSlot()
823 __ Dispatch(); in DoStaLookupSlot()
848 Node* code_target = __ HeapConstant(ic.code()); in DoLdaNamedProperty()
849 Node* register_index = __ BytecodeOperandReg(0); in DoLdaNamedProperty()
850 Node* object = __ LoadRegister(register_index); in DoLdaNamedProperty()
851 Node* constant_index = __ BytecodeOperandIdx(1); in DoLdaNamedProperty()
852 Node* name = __ LoadConstantPoolEntry(constant_index); in DoLdaNamedProperty()
853 Node* raw_slot = __ BytecodeOperandIdx(2); in DoLdaNamedProperty()
854 Node* smi_slot = __ SmiTag(raw_slot); in DoLdaNamedProperty()
855 Node* feedback_vector = __ LoadFeedbackVector(); in DoLdaNamedProperty()
856 Node* context = __ GetContext(); in DoLdaNamedProperty()
857 Node* result = __ CallStub(ic.descriptor(), code_target, context, object, in DoLdaNamedProperty()
859 __ SetAccumulator(result); in DoLdaNamedProperty()
860 __ Dispatch(); in DoLdaNamedProperty()
869 Node* code_target = __ HeapConstant(ic.code()); in DoLdaKeyedProperty()
870 Node* reg_index = __ BytecodeOperandReg(0); in DoLdaKeyedProperty()
871 Node* object = __ LoadRegister(reg_index); in DoLdaKeyedProperty()
872 Node* name = __ GetAccumulator(); in DoLdaKeyedProperty()
873 Node* raw_slot = __ BytecodeOperandIdx(1); in DoLdaKeyedProperty()
874 Node* smi_slot = __ SmiTag(raw_slot); in DoLdaKeyedProperty()
875 Node* feedback_vector = __ LoadFeedbackVector(); in DoLdaKeyedProperty()
876 Node* context = __ GetContext(); in DoLdaKeyedProperty()
877 Node* result = __ CallStub(ic.descriptor(), code_target, context, object, in DoLdaKeyedProperty()
879 __ SetAccumulator(result); in DoLdaKeyedProperty()
880 __ Dispatch(); in DoLdaKeyedProperty()
884 Node* code_target = __ HeapConstant(ic.code()); in DoStoreIC()
885 Node* object_reg_index = __ BytecodeOperandReg(0); in DoStoreIC()
886 Node* object = __ LoadRegister(object_reg_index); in DoStoreIC()
887 Node* constant_index = __ BytecodeOperandIdx(1); in DoStoreIC()
888 Node* name = __ LoadConstantPoolEntry(constant_index); in DoStoreIC()
889 Node* value = __ GetAccumulator(); in DoStoreIC()
890 Node* raw_slot = __ BytecodeOperandIdx(2); in DoStoreIC()
891 Node* smi_slot = __ SmiTag(raw_slot); in DoStoreIC()
892 Node* feedback_vector = __ LoadFeedbackVector(); in DoStoreIC()
893 Node* context = __ GetContext(); in DoStoreIC()
894 __ CallStub(ic.descriptor(), code_target, context, object, name, value, in DoStoreIC()
896 __ Dispatch(); in DoStoreIC()
930 Node* code_target = __ HeapConstant(ic.code()); in DoKeyedStoreIC()
931 Node* object_reg_index = __ BytecodeOperandReg(0); in DoKeyedStoreIC()
932 Node* object = __ LoadRegister(object_reg_index); in DoKeyedStoreIC()
933 Node* name_reg_index = __ BytecodeOperandReg(1); in DoKeyedStoreIC()
934 Node* name = __ LoadRegister(name_reg_index); in DoKeyedStoreIC()
935 Node* value = __ GetAccumulator(); in DoKeyedStoreIC()
936 Node* raw_slot = __ BytecodeOperandIdx(2); in DoKeyedStoreIC()
937 Node* smi_slot = __ SmiTag(raw_slot); in DoKeyedStoreIC()
938 Node* feedback_vector = __ LoadFeedbackVector(); in DoKeyedStoreIC()
939 Node* context = __ GetContext(); in DoKeyedStoreIC()
940 __ CallStub(ic.descriptor(), code_target, context, object, name, value, in DoKeyedStoreIC()
942 __ Dispatch(); in DoKeyedStoreIC()
972 Node* object = __ LoadRegister(__ BytecodeOperandReg(0)); in DoStaDataPropertyInLiteral()
973 Node* name = __ LoadRegister(__ BytecodeOperandReg(1)); in DoStaDataPropertyInLiteral()
974 Node* value = __ GetAccumulator(); in DoStaDataPropertyInLiteral()
975 Node* flags = __ SmiFromWord32(__ BytecodeOperandFlag(2)); in DoStaDataPropertyInLiteral()
976 Node* vector_index = __ SmiTag(__ BytecodeOperandIdx(3)); in DoStaDataPropertyInLiteral()
978 Node* feedback_vector = __ LoadFeedbackVector(); in DoStaDataPropertyInLiteral()
979 Node* context = __ GetContext(); in DoStaDataPropertyInLiteral()
981 __ CallRuntime(Runtime::kDefineDataPropertyInLiteral, context, object, name, in DoStaDataPropertyInLiteral()
983 __ Dispatch(); in DoStaDataPropertyInLiteral()
992 Node* cell_index = __ BytecodeOperandImmIntPtr(0); in DoLdaModuleVariable()
993 Node* depth = __ BytecodeOperandUImm(1); in DoLdaModuleVariable()
995 Node* module_context = __ GetContextAtDepth(__ GetContext(), depth); in DoLdaModuleVariable()
997 __ LoadContextElement(module_context, Context::EXTENSION_INDEX); in DoLdaModuleVariable()
1000 __ Branch(__ IntPtrGreaterThan(cell_index, __ IntPtrConstant(0)), &if_export, in DoLdaModuleVariable()
1003 __ Bind(&if_export); in DoLdaModuleVariable()
1006 __ LoadObjectField(module, Module::kRegularExportsOffset); in DoLdaModuleVariable()
1008 Node* export_index = __ IntPtrSub(cell_index, __ IntPtrConstant(1)); in DoLdaModuleVariable()
1009 Node* cell = __ LoadFixedArrayElement(regular_exports, export_index); in DoLdaModuleVariable()
1010 __ SetAccumulator(__ LoadObjectField(cell, Cell::kValueOffset)); in DoLdaModuleVariable()
1011 __ Goto(&end); in DoLdaModuleVariable()
1014 __ Bind(&if_import); in DoLdaModuleVariable()
1017 __ LoadObjectField(module, Module::kRegularImportsOffset); in DoLdaModuleVariable()
1019 Node* import_index = __ IntPtrSub(__ IntPtrConstant(-1), cell_index); in DoLdaModuleVariable()
1020 Node* cell = __ LoadFixedArrayElement(regular_imports, import_index); in DoLdaModuleVariable()
1021 __ SetAccumulator(__ LoadObjectField(cell, Cell::kValueOffset)); in DoLdaModuleVariable()
1022 __ Goto(&end); in DoLdaModuleVariable()
1025 __ Bind(&end); in DoLdaModuleVariable()
1026 __ Dispatch(); in DoLdaModuleVariable()
1034 Node* value = __ GetAccumulator(); in DoStaModuleVariable()
1035 Node* cell_index = __ BytecodeOperandImmIntPtr(0); in DoStaModuleVariable()
1036 Node* depth = __ BytecodeOperandUImm(1); in DoStaModuleVariable()
1038 Node* module_context = __ GetContextAtDepth(__ GetContext(), depth); in DoStaModuleVariable()
1040 __ LoadContextElement(module_context, Context::EXTENSION_INDEX); in DoStaModuleVariable()
1043 __ Branch(__ IntPtrGreaterThan(cell_index, __ IntPtrConstant(0)), &if_export, in DoStaModuleVariable()
1046 __ Bind(&if_export); in DoStaModuleVariable()
1049 __ LoadObjectField(module, Module::kRegularExportsOffset); in DoStaModuleVariable()
1051 Node* export_index = __ IntPtrSub(cell_index, __ IntPtrConstant(1)); in DoStaModuleVariable()
1052 Node* cell = __ LoadFixedArrayElement(regular_exports, export_index); in DoStaModuleVariable()
1053 __ StoreObjectField(cell, Cell::kValueOffset, value); in DoStaModuleVariable()
1054 __ Goto(&end); in DoStaModuleVariable()
1057 __ Bind(&if_import); in DoStaModuleVariable()
1060 __ Abort(kUnsupportedModuleOperation); in DoStaModuleVariable()
1061 __ Goto(&end); in DoStaModuleVariable()
1064 __ Bind(&end); in DoStaModuleVariable()
1065 __ Dispatch(); in DoStaModuleVariable()
1073 Node* reg_index = __ BytecodeOperandReg(0); in DoPushContext()
1074 Node* new_context = __ GetAccumulator(); in DoPushContext()
1075 Node* old_context = __ GetContext(); in DoPushContext()
1076 __ StoreRegister(old_context, reg_index); in DoPushContext()
1077 __ SetContext(new_context); in DoPushContext()
1078 __ Dispatch(); in DoPushContext()
1085 Node* reg_index = __ BytecodeOperandReg(0); in DoPopContext()
1086 Node* context = __ LoadRegister(reg_index); in DoPopContext()
1087 __ SetContext(context); in DoPopContext()
1088 __ Dispatch(); in DoPopContext()
1094 Node* reg_index = __ BytecodeOperandReg(0); in DoCompareOp()
1095 Node* lhs = __ LoadRegister(reg_index); in DoCompareOp()
1096 Node* rhs = __ GetAccumulator(); in DoCompareOp()
1097 Node* context = __ GetContext(); in DoCompareOp()
1109 __ SetAccumulator(result); in DoCompareOp()
1110 __ Dispatch(); in DoCompareOp()
1115 Node* reg_index = __ BytecodeOperandReg(0); in DoBinaryOpWithFeedback()
1116 Node* lhs = __ LoadRegister(reg_index); in DoBinaryOpWithFeedback()
1117 Node* rhs = __ GetAccumulator(); in DoBinaryOpWithFeedback()
1118 Node* context = __ GetContext(); in DoBinaryOpWithFeedback()
1119 Node* slot_index = __ BytecodeOperandIdx(1); in DoBinaryOpWithFeedback()
1120 Node* feedback_vector = __ LoadFeedbackVector(); in DoBinaryOpWithFeedback()
1123 __ SetAccumulator(result); in DoBinaryOpWithFeedback()
1124 __ Dispatch(); in DoBinaryOpWithFeedback()
1129 Node* reg_index = __ BytecodeOperandReg(0); in DoCompareOpWithFeedback()
1130 Node* lhs = __ LoadRegister(reg_index); in DoCompareOpWithFeedback()
1131 Node* rhs = __ GetAccumulator(); in DoCompareOpWithFeedback()
1132 Node* context = __ GetContext(); in DoCompareOpWithFeedback()
1133 Node* slot_index = __ BytecodeOperandIdx(1); in DoCompareOpWithFeedback()
1134 Node* feedback_vector = __ LoadFeedbackVector(); in DoCompareOpWithFeedback()
1141 __ Branch(__ WordEqual(slot_index, __ IntPtrConstant(0)), &do_compare, in DoCompareOpWithFeedback()
1144 __ Bind(&gather_type_feedback); in DoCompareOpWithFeedback()
1151 __ GotoIfNot(__ TaggedIsSmi(lhs), &lhs_is_not_smi); in DoCompareOpWithFeedback()
1154 __ SmiConstant(CompareOperationFeedback::kSignedSmall)); in DoCompareOpWithFeedback()
1155 __ Goto(&gather_rhs_type); in DoCompareOpWithFeedback()
1157 __ Bind(&lhs_is_not_smi); in DoCompareOpWithFeedback()
1159 Node* lhs_map = __ LoadMap(lhs); in DoCompareOpWithFeedback()
1160 __ GotoIfNot(__ IsHeapNumberMap(lhs_map), &lhs_is_not_number); in DoCompareOpWithFeedback()
1162 var_type_feedback.Bind(__ SmiConstant(CompareOperationFeedback::kNumber)); in DoCompareOpWithFeedback()
1163 __ Goto(&gather_rhs_type); in DoCompareOpWithFeedback()
1165 __ Bind(&lhs_is_not_number); in DoCompareOpWithFeedback()
1167 Node* lhs_instance_type = __ LoadInstanceType(lhs); in DoCompareOpWithFeedback()
1170 __ GotoIfNot( in DoCompareOpWithFeedback()
1171 __ Word32Equal(lhs_instance_type, __ Int32Constant(ODDBALL_TYPE)), in DoCompareOpWithFeedback()
1175 __ SmiConstant(CompareOperationFeedback::kNumberOrOddball)); in DoCompareOpWithFeedback()
1176 __ Goto(&gather_rhs_type); in DoCompareOpWithFeedback()
1178 __ Bind(&lhs_is_not_oddball); in DoCompareOpWithFeedback()
1182 __ GotoIfNot(__ IsStringInstanceType(lhs_instance_type), in DoCompareOpWithFeedback()
1187 __ SmiConstant(CompareOperationFeedback::kString)); in DoCompareOpWithFeedback()
1189 var_type_feedback.Bind(__ SelectSmiConstant( in DoCompareOpWithFeedback()
1190 __ Word32Equal( in DoCompareOpWithFeedback()
1191 __ Word32And(lhs_instance_type, in DoCompareOpWithFeedback()
1192 __ Int32Constant(kIsNotInternalizedMask)), in DoCompareOpWithFeedback()
1193 __ Int32Constant(kInternalizedTag)), in DoCompareOpWithFeedback()
1197 __ Goto(&gather_rhs_type); in DoCompareOpWithFeedback()
1199 __ Bind(&lhs_is_not_string); in DoCompareOpWithFeedback()
1201 var_type_feedback.Bind(__ SelectSmiConstant( in DoCompareOpWithFeedback()
1202 __ IsJSReceiverInstanceType(lhs_instance_type), in DoCompareOpWithFeedback()
1207 __ SmiConstant(CompareOperationFeedback::kAny)); in DoCompareOpWithFeedback()
1209 __ Goto(&gather_rhs_type); in DoCompareOpWithFeedback()
1213 __ Bind(&gather_rhs_type); in DoCompareOpWithFeedback()
1217 __ GotoIfNot(__ TaggedIsSmi(rhs), &rhs_is_not_smi); in DoCompareOpWithFeedback()
1220 __ SmiOr(var_type_feedback.value(), in DoCompareOpWithFeedback()
1221 __ SmiConstant(CompareOperationFeedback::kSignedSmall))); in DoCompareOpWithFeedback()
1222 __ Goto(&update_feedback); in DoCompareOpWithFeedback()
1224 __ Bind(&rhs_is_not_smi); in DoCompareOpWithFeedback()
1226 Node* rhs_map = __ LoadMap(rhs); in DoCompareOpWithFeedback()
1227 __ GotoIfNot(__ IsHeapNumberMap(rhs_map), &rhs_is_not_number); in DoCompareOpWithFeedback()
1230 __ SmiOr(var_type_feedback.value(), in DoCompareOpWithFeedback()
1231 __ SmiConstant(CompareOperationFeedback::kNumber))); in DoCompareOpWithFeedback()
1232 __ Goto(&update_feedback); in DoCompareOpWithFeedback()
1234 __ Bind(&rhs_is_not_number); in DoCompareOpWithFeedback()
1236 Node* rhs_instance_type = __ LoadInstanceType(rhs); in DoCompareOpWithFeedback()
1239 __ GotoIfNot(__ Word32Equal(rhs_instance_type, in DoCompareOpWithFeedback()
1240 __ Int32Constant(ODDBALL_TYPE)), in DoCompareOpWithFeedback()
1243 var_type_feedback.Bind(__ SmiOr( in DoCompareOpWithFeedback()
1245 __ SmiConstant(CompareOperationFeedback::kNumberOrOddball))); in DoCompareOpWithFeedback()
1246 __ Goto(&update_feedback); in DoCompareOpWithFeedback()
1248 __ Bind(&rhs_is_not_oddball); in DoCompareOpWithFeedback()
1252 __ GotoIfNot(__ IsStringInstanceType(rhs_instance_type), in DoCompareOpWithFeedback()
1257 __ SmiOr(var_type_feedback.value(), in DoCompareOpWithFeedback()
1258 __ SmiConstant(CompareOperationFeedback::kString))); in DoCompareOpWithFeedback()
1260 var_type_feedback.Bind(__ SmiOr( in DoCompareOpWithFeedback()
1262 __ SelectSmiConstant( in DoCompareOpWithFeedback()
1263 __ Word32Equal( in DoCompareOpWithFeedback()
1264 __ Word32And(rhs_instance_type, in DoCompareOpWithFeedback()
1265 __ Int32Constant(kIsNotInternalizedMask)), in DoCompareOpWithFeedback()
1266 __ Int32Constant(kInternalizedTag)), in DoCompareOpWithFeedback()
1270 __ Goto(&update_feedback); in DoCompareOpWithFeedback()
1272 __ Bind(&rhs_is_not_string); in DoCompareOpWithFeedback()
1275 __ SmiOr(var_type_feedback.value(), in DoCompareOpWithFeedback()
1276 __ SelectSmiConstant( in DoCompareOpWithFeedback()
1277 __ IsJSReceiverInstanceType(rhs_instance_type), in DoCompareOpWithFeedback()
1282 __ SmiConstant(CompareOperationFeedback::kAny)); in DoCompareOpWithFeedback()
1284 __ Goto(&update_feedback); in DoCompareOpWithFeedback()
1289 __ Bind(&update_feedback); in DoCompareOpWithFeedback()
1291 __ UpdateFeedback(var_type_feedback.value(), feedback_vector, slot_index); in DoCompareOpWithFeedback()
1292 __ Goto(&do_compare); in DoCompareOpWithFeedback()
1296 __ Bind(&do_compare); in DoCompareOpWithFeedback()
1330 __ SetAccumulator(result); in DoCompareOpWithFeedback()
1331 __ Dispatch(); in DoCompareOpWithFeedback()
1371 Node* reg_index = __ BytecodeOperandReg(0); in DoBitwiseBinaryOp()
1372 Node* lhs = __ LoadRegister(reg_index); in DoBitwiseBinaryOp()
1373 Node* rhs = __ GetAccumulator(); in DoBitwiseBinaryOp()
1374 Node* context = __ GetContext(); in DoBitwiseBinaryOp()
1375 Node* slot_index = __ BytecodeOperandIdx(1); in DoBitwiseBinaryOp()
1376 Node* feedback_vector = __ LoadFeedbackVector(); in DoBitwiseBinaryOp()
1381 Node* lhs_value = __ TruncateTaggedToWord32WithFeedback( in DoBitwiseBinaryOp()
1383 Node* rhs_value = __ TruncateTaggedToWord32WithFeedback( in DoBitwiseBinaryOp()
1389 Node* value = __ Word32Or(lhs_value, rhs_value); in DoBitwiseBinaryOp()
1390 result = __ ChangeInt32ToTagged(value); in DoBitwiseBinaryOp()
1393 Node* value = __ Word32And(lhs_value, rhs_value); in DoBitwiseBinaryOp()
1394 result = __ ChangeInt32ToTagged(value); in DoBitwiseBinaryOp()
1397 Node* value = __ Word32Xor(lhs_value, rhs_value); in DoBitwiseBinaryOp()
1398 result = __ ChangeInt32ToTagged(value); in DoBitwiseBinaryOp()
1401 Node* value = __ Word32Shl( in DoBitwiseBinaryOp()
1402 lhs_value, __ Word32And(rhs_value, __ Int32Constant(0x1f))); in DoBitwiseBinaryOp()
1403 result = __ ChangeInt32ToTagged(value); in DoBitwiseBinaryOp()
1406 Node* value = __ Word32Shr( in DoBitwiseBinaryOp()
1407 lhs_value, __ Word32And(rhs_value, __ Int32Constant(0x1f))); in DoBitwiseBinaryOp()
1408 result = __ ChangeUint32ToTagged(value); in DoBitwiseBinaryOp()
1411 Node* value = __ Word32Sar( in DoBitwiseBinaryOp()
1412 lhs_value, __ Word32And(rhs_value, __ Int32Constant(0x1f))); in DoBitwiseBinaryOp()
1413 result = __ ChangeInt32ToTagged(value); in DoBitwiseBinaryOp()
1419 Node* result_type = __ SelectSmiConstant( in DoBitwiseBinaryOp()
1420 __ TaggedIsSmi(result), BinaryOperationFeedback::kSignedSmall, in DoBitwiseBinaryOp()
1425 __ GotoIf(__ TaggedIsSmi(result), &ok); in DoBitwiseBinaryOp()
1426 Node* result_map = __ LoadMap(result); in DoBitwiseBinaryOp()
1427 __ AbortIfWordNotEqual(result_map, __ HeapNumberMapConstant(), in DoBitwiseBinaryOp()
1429 __ Goto(&ok); in DoBitwiseBinaryOp()
1430 __ Bind(&ok); in DoBitwiseBinaryOp()
1434 __ SmiOr(var_lhs_type_feedback.value(), var_rhs_type_feedback.value()); in DoBitwiseBinaryOp()
1435 __ UpdateFeedback(__ SmiOr(result_type, input_feedback), feedback_vector, in DoBitwiseBinaryOp()
1437 __ SetAccumulator(result); in DoBitwiseBinaryOp()
1438 __ Dispatch(); in DoBitwiseBinaryOp()
1501 Node* reg_index = __ BytecodeOperandReg(1); in DoAddSmi()
1502 Node* left = __ LoadRegister(reg_index); in DoAddSmi()
1503 Node* right = __ BytecodeOperandImmSmi(0); in DoAddSmi()
1504 Node* slot_index = __ BytecodeOperandIdx(2); in DoAddSmi()
1505 Node* feedback_vector = __ LoadFeedbackVector(); in DoAddSmi()
1509 __ Branch(__ TaggedIsSmi(left), &fastpath, &slowpath); in DoAddSmi()
1510 __ Bind(&fastpath); in DoAddSmi()
1513 Node* pair = __ IntPtrAddWithOverflow(__ BitcastTaggedToWord(left), in DoAddSmi()
1514 __ BitcastTaggedToWord(right)); in DoAddSmi()
1515 Node* overflow = __ Projection(1, pair); in DoAddSmi()
1519 __ Branch(overflow, &slowpath, &if_notoverflow); in DoAddSmi()
1520 __ Bind(&if_notoverflow); in DoAddSmi()
1522 __ UpdateFeedback(__ SmiConstant(BinaryOperationFeedback::kSignedSmall), in DoAddSmi()
1524 var_result.Bind(__ BitcastWordToTaggedSigned(__ Projection(0, pair))); in DoAddSmi()
1525 __ Goto(&end); in DoAddSmi()
1528 __ Bind(&slowpath); in DoAddSmi()
1530 Node* context = __ GetContext(); in DoAddSmi()
1531 AddWithFeedbackStub stub(__ isolate()); in DoAddSmi()
1533 Callable(stub.GetCode(), AddWithFeedbackStub::Descriptor(__ isolate())); in DoAddSmi()
1534 var_result.Bind(__ CallStub(callable, context, left, right, in DoAddSmi()
1535 __ TruncateWordToWord32(slot_index), in DoAddSmi()
1537 __ Goto(&end); in DoAddSmi()
1539 __ Bind(&end); in DoAddSmi()
1541 __ SetAccumulator(var_result.value()); in DoAddSmi()
1542 __ Dispatch(); in DoAddSmi()
1555 Node* reg_index = __ BytecodeOperandReg(1); in DoSubSmi()
1556 Node* left = __ LoadRegister(reg_index); in DoSubSmi()
1557 Node* right = __ BytecodeOperandImmSmi(0); in DoSubSmi()
1558 Node* slot_index = __ BytecodeOperandIdx(2); in DoSubSmi()
1559 Node* feedback_vector = __ LoadFeedbackVector(); in DoSubSmi()
1563 __ Branch(__ TaggedIsSmi(left), &fastpath, &slowpath); in DoSubSmi()
1564 __ Bind(&fastpath); in DoSubSmi()
1567 Node* pair = __ IntPtrSubWithOverflow(__ BitcastTaggedToWord(left), in DoSubSmi()
1568 __ BitcastTaggedToWord(right)); in DoSubSmi()
1569 Node* overflow = __ Projection(1, pair); in DoSubSmi()
1573 __ Branch(overflow, &slowpath, &if_notoverflow); in DoSubSmi()
1574 __ Bind(&if_notoverflow); in DoSubSmi()
1576 __ UpdateFeedback(__ SmiConstant(BinaryOperationFeedback::kSignedSmall), in DoSubSmi()
1578 var_result.Bind(__ BitcastWordToTaggedSigned(__ Projection(0, pair))); in DoSubSmi()
1579 __ Goto(&end); in DoSubSmi()
1582 __ Bind(&slowpath); in DoSubSmi()
1584 Node* context = __ GetContext(); in DoSubSmi()
1585 SubtractWithFeedbackStub stub(__ isolate()); in DoSubSmi()
1587 stub.GetCode(), SubtractWithFeedbackStub::Descriptor(__ isolate())); in DoSubSmi()
1588 var_result.Bind(__ CallStub(callable, context, left, right, in DoSubSmi()
1589 __ TruncateWordToWord32(slot_index), in DoSubSmi()
1591 __ Goto(&end); in DoSubSmi()
1593 __ Bind(&end); in DoSubSmi()
1595 __ SetAccumulator(var_result.value()); in DoSubSmi()
1596 __ Dispatch(); in DoSubSmi()
1605 Node* reg_index = __ BytecodeOperandReg(1); in DoBitwiseOrSmi()
1606 Node* left = __ LoadRegister(reg_index); in DoBitwiseOrSmi()
1607 Node* right = __ BytecodeOperandImmSmi(0); in DoBitwiseOrSmi()
1608 Node* context = __ GetContext(); in DoBitwiseOrSmi()
1609 Node* slot_index = __ BytecodeOperandIdx(2); in DoBitwiseOrSmi()
1610 Node* feedback_vector = __ LoadFeedbackVector(); in DoBitwiseOrSmi()
1613 Node* lhs_value = __ TruncateTaggedToWord32WithFeedback( in DoBitwiseOrSmi()
1615 Node* rhs_value = __ SmiToWord32(right); in DoBitwiseOrSmi()
1616 Node* value = __ Word32Or(lhs_value, rhs_value); in DoBitwiseOrSmi()
1617 Node* result = __ ChangeInt32ToTagged(value); in DoBitwiseOrSmi()
1618 Node* result_type = __ SelectSmiConstant( in DoBitwiseOrSmi()
1619 __ TaggedIsSmi(result), BinaryOperationFeedback::kSignedSmall, in DoBitwiseOrSmi()
1621 __ UpdateFeedback(__ SmiOr(result_type, var_lhs_type_feedback.value()), in DoBitwiseOrSmi()
1623 __ SetAccumulator(result); in DoBitwiseOrSmi()
1624 __ Dispatch(); in DoBitwiseOrSmi()
1632 Node* reg_index = __ BytecodeOperandReg(1); in DoBitwiseAndSmi()
1633 Node* left = __ LoadRegister(reg_index); in DoBitwiseAndSmi()
1634 Node* right = __ BytecodeOperandImmSmi(0); in DoBitwiseAndSmi()
1635 Node* context = __ GetContext(); in DoBitwiseAndSmi()
1636 Node* slot_index = __ BytecodeOperandIdx(2); in DoBitwiseAndSmi()
1637 Node* feedback_vector = __ LoadFeedbackVector(); in DoBitwiseAndSmi()
1640 Node* lhs_value = __ TruncateTaggedToWord32WithFeedback( in DoBitwiseAndSmi()
1642 Node* rhs_value = __ SmiToWord32(right); in DoBitwiseAndSmi()
1643 Node* value = __ Word32And(lhs_value, rhs_value); in DoBitwiseAndSmi()
1644 Node* result = __ ChangeInt32ToTagged(value); in DoBitwiseAndSmi()
1645 Node* result_type = __ SelectSmiConstant( in DoBitwiseAndSmi()
1646 __ TaggedIsSmi(result), BinaryOperationFeedback::kSignedSmall, in DoBitwiseAndSmi()
1648 __ UpdateFeedback(__ SmiOr(result_type, var_lhs_type_feedback.value()), in DoBitwiseAndSmi()
1650 __ SetAccumulator(result); in DoBitwiseAndSmi()
1651 __ Dispatch(); in DoBitwiseAndSmi()
1660 Node* reg_index = __ BytecodeOperandReg(1); in DoShiftLeftSmi()
1661 Node* left = __ LoadRegister(reg_index); in DoShiftLeftSmi()
1662 Node* right = __ BytecodeOperandImmSmi(0); in DoShiftLeftSmi()
1663 Node* context = __ GetContext(); in DoShiftLeftSmi()
1664 Node* slot_index = __ BytecodeOperandIdx(2); in DoShiftLeftSmi()
1665 Node* feedback_vector = __ LoadFeedbackVector(); in DoShiftLeftSmi()
1668 Node* lhs_value = __ TruncateTaggedToWord32WithFeedback( in DoShiftLeftSmi()
1670 Node* rhs_value = __ SmiToWord32(right); in DoShiftLeftSmi()
1671 Node* shift_count = __ Word32And(rhs_value, __ Int32Constant(0x1f)); in DoShiftLeftSmi()
1672 Node* value = __ Word32Shl(lhs_value, shift_count); in DoShiftLeftSmi()
1673 Node* result = __ ChangeInt32ToTagged(value); in DoShiftLeftSmi()
1674 Node* result_type = __ SelectSmiConstant( in DoShiftLeftSmi()
1675 __ TaggedIsSmi(result), BinaryOperationFeedback::kSignedSmall, in DoShiftLeftSmi()
1677 __ UpdateFeedback(__ SmiOr(result_type, var_lhs_type_feedback.value()), in DoShiftLeftSmi()
1679 __ SetAccumulator(result); in DoShiftLeftSmi()
1680 __ Dispatch(); in DoShiftLeftSmi()
1689 Node* reg_index = __ BytecodeOperandReg(1); in DoShiftRightSmi()
1690 Node* left = __ LoadRegister(reg_index); in DoShiftRightSmi()
1691 Node* right = __ BytecodeOperandImmSmi(0); in DoShiftRightSmi()
1692 Node* context = __ GetContext(); in DoShiftRightSmi()
1693 Node* slot_index = __ BytecodeOperandIdx(2); in DoShiftRightSmi()
1694 Node* feedback_vector = __ LoadFeedbackVector(); in DoShiftRightSmi()
1697 Node* lhs_value = __ TruncateTaggedToWord32WithFeedback( in DoShiftRightSmi()
1699 Node* rhs_value = __ SmiToWord32(right); in DoShiftRightSmi()
1700 Node* shift_count = __ Word32And(rhs_value, __ Int32Constant(0x1f)); in DoShiftRightSmi()
1701 Node* value = __ Word32Sar(lhs_value, shift_count); in DoShiftRightSmi()
1702 Node* result = __ ChangeInt32ToTagged(value); in DoShiftRightSmi()
1703 Node* result_type = __ SelectSmiConstant( in DoShiftRightSmi()
1704 __ TaggedIsSmi(result), BinaryOperationFeedback::kSignedSmall, in DoShiftRightSmi()
1706 __ UpdateFeedback(__ SmiOr(result_type, var_lhs_type_feedback.value()), in DoShiftRightSmi()
1708 __ SetAccumulator(result); in DoShiftRightSmi()
1709 __ Dispatch(); in DoShiftRightSmi()
1714 Node* target = __ HeapConstant(callable.code()); in BuildUnaryOp()
1715 Node* accumulator = __ GetAccumulator(); in BuildUnaryOp()
1716 Node* context = __ GetContext(); in BuildUnaryOp()
1717 return __ CallStub(callable.descriptor(), target, context, accumulator); in BuildUnaryOp()
1722 Node* value = __ GetAccumulator(); in DoUnaryOpWithFeedback()
1723 Node* context = __ GetContext(); in DoUnaryOpWithFeedback()
1724 Node* slot_index = __ BytecodeOperandIdx(0); in DoUnaryOpWithFeedback()
1725 Node* feedback_vector = __ LoadFeedbackVector(); in DoUnaryOpWithFeedback()
1728 __ SetAccumulator(result); in DoUnaryOpWithFeedback()
1729 __ Dispatch(); in DoUnaryOpWithFeedback()
1736 Node* object = __ GetAccumulator(); in DoToName()
1737 Node* context = __ GetContext(); in DoToName()
1738 Node* result = __ ToName(context, object); in DoToName()
1739 __ StoreRegister(result, __ BytecodeOperandReg(0)); in DoToName()
1740 __ Dispatch(); in DoToName()
1747 Node* object = __ GetAccumulator(); in DoToNumber()
1748 Node* context = __ GetContext(); in DoToNumber()
1749 Node* result = __ ToNumber(context, object); in DoToNumber()
1750 __ StoreRegister(result, __ BytecodeOperandReg(0)); in DoToNumber()
1751 __ Dispatch(); in DoToNumber()
1759 __ StoreRegister(result, __ BytecodeOperandReg(0)); in DoToObject()
1760 __ Dispatch(); in DoToObject()
1771 Node* value = __ GetAccumulator(); in DoInc()
1772 Node* context = __ GetContext(); in DoInc()
1773 Node* slot_index = __ BytecodeOperandIdx(0); in DoInc()
1774 Node* feedback_vector = __ LoadFeedbackVector(); in DoInc()
1897 __ SetAccumulator(result_var.value()); in DoInc()
1898 __ Dispatch(); in DoInc()
1909 Node* value = __ GetAccumulator(); in DoDec()
1910 Node* context = __ GetContext(); in DoDec()
1911 Node* slot_index = __ BytecodeOperandIdx(0); in DoDec()
1912 Node* feedback_vector = __ LoadFeedbackVector(); in DoDec()
2035 __ SetAccumulator(result_var.value()); in DoDec()
2036 __ Dispatch(); in DoDec()
2045 Node* value = __ GetAccumulator(); in DoToBooleanLogicalNot()
2048 Node* true_value = __ BooleanConstant(true); in DoToBooleanLogicalNot()
2049 Node* false_value = __ BooleanConstant(false); in DoToBooleanLogicalNot()
2050 __ BranchIfToBooleanIsTrue(value, &if_true, &if_false); in DoToBooleanLogicalNot()
2051 __ Bind(&if_true); in DoToBooleanLogicalNot()
2054 __ Goto(&end); in DoToBooleanLogicalNot()
2056 __ Bind(&if_false); in DoToBooleanLogicalNot()
2059 __ Goto(&end); in DoToBooleanLogicalNot()
2061 __ Bind(&end); in DoToBooleanLogicalNot()
2062 __ SetAccumulator(result.value()); in DoToBooleanLogicalNot()
2063 __ Dispatch(); in DoToBooleanLogicalNot()
2071 Node* value = __ GetAccumulator(); in DoLogicalNot()
2074 Node* true_value = __ BooleanConstant(true); in DoLogicalNot()
2075 Node* false_value = __ BooleanConstant(false); in DoLogicalNot()
2076 __ Branch(__ WordEqual(value, true_value), &if_true, &if_false); in DoLogicalNot()
2077 __ Bind(&if_true); in DoLogicalNot()
2080 __ Goto(&end); in DoLogicalNot()
2082 __ Bind(&if_false); in DoLogicalNot()
2085 __ AbortIfWordNotEqual(value, false_value, in DoLogicalNot()
2089 __ Goto(&end); in DoLogicalNot()
2091 __ Bind(&end); in DoLogicalNot()
2092 __ SetAccumulator(result.value()); in DoLogicalNot()
2093 __ Dispatch(); in DoLogicalNot()
2101 Node* value = __ GetAccumulator(); in DoTypeOf()
2102 Node* context = __ GetContext(); in DoTypeOf()
2104 __ SetAccumulator(result); in DoTypeOf()
2105 __ Dispatch(); in DoTypeOf()
2110 Node* reg_index = __ BytecodeOperandReg(0); in DoDelete()
2111 Node* object = __ LoadRegister(reg_index); in DoDelete()
2112 Node* key = __ GetAccumulator(); in DoDelete()
2113 Node* context = __ GetContext(); in DoDelete()
2114 Node* result = __ CallRuntime(function_id, context, object, key); in DoDelete()
2115 __ SetAccumulator(result); in DoDelete()
2116 __ Dispatch(); in DoDelete()
2140 Node* active_function = __ GetAccumulator(); in DoGetSuperConstructor()
2141 Node* context = __ GetContext(); in DoGetSuperConstructor()
2142 Node* result = __ GetSuperConstructor(active_function, context); in DoGetSuperConstructor()
2143 Node* reg = __ BytecodeOperandReg(0); in DoGetSuperConstructor()
2144 __ StoreRegister(result, reg); in DoGetSuperConstructor()
2145 __ Dispatch(); in DoGetSuperConstructor()
2150 Node* function_reg = __ BytecodeOperandReg(0); in DoJSCall()
2151 Node* function = __ LoadRegister(function_reg); in DoJSCall()
2152 Node* receiver_reg = __ BytecodeOperandReg(1); in DoJSCall()
2153 Node* receiver_arg = __ RegisterLocation(receiver_reg); in DoJSCall()
2154 Node* receiver_args_count = __ BytecodeOperandCount(2); in DoJSCall()
2155 Node* receiver_count = __ Int32Constant(1); in DoJSCall()
2156 Node* args_count = __ Int32Sub(receiver_args_count, receiver_count); in DoJSCall()
2157 Node* slot_id = __ BytecodeOperandIdx(3); in DoJSCall()
2158 Node* feedback_vector = __ LoadFeedbackVector(); in DoJSCall()
2159 Node* context = __ GetContext(); in DoJSCall()
2161 __ CallJSWithFeedback(function, context, receiver_arg, args_count, in DoJSCall()
2163 __ SetAccumulator(result); in DoJSCall()
2164 __ Dispatch(); in DoJSCall()
2202 Node* function_id = __ BytecodeOperandRuntimeId(0); in DoCallRuntime()
2203 Node* first_arg_reg = __ BytecodeOperandReg(1); in DoCallRuntime()
2204 Node* first_arg = __ RegisterLocation(first_arg_reg); in DoCallRuntime()
2205 Node* args_count = __ BytecodeOperandCount(2); in DoCallRuntime()
2206 Node* context = __ GetContext(); in DoCallRuntime()
2207 Node* result = __ CallRuntimeN(function_id, context, first_arg, args_count); in DoCallRuntime()
2208 __ SetAccumulator(result); in DoCallRuntime()
2209 __ Dispatch(); in DoCallRuntime()
2218 Node* function_id = __ BytecodeOperandIntrinsicId(0); in DoInvokeIntrinsic()
2219 Node* first_arg_reg = __ BytecodeOperandReg(1); in DoInvokeIntrinsic()
2220 Node* arg_count = __ BytecodeOperandCount(2); in DoInvokeIntrinsic()
2221 Node* context = __ GetContext(); in DoInvokeIntrinsic()
2225 __ SetAccumulator(result); in DoInvokeIntrinsic()
2226 __ Dispatch(); in DoInvokeIntrinsic()
2237 Node* function_id = __ BytecodeOperandRuntimeId(0); in DoCallRuntimeForPair()
2238 Node* first_arg_reg = __ BytecodeOperandReg(1); in DoCallRuntimeForPair()
2239 Node* first_arg = __ RegisterLocation(first_arg_reg); in DoCallRuntimeForPair()
2240 Node* args_count = __ BytecodeOperandCount(2); in DoCallRuntimeForPair()
2241 Node* context = __ GetContext(); in DoCallRuntimeForPair()
2243 __ CallRuntimeN(function_id, context, first_arg, args_count, 2); in DoCallRuntimeForPair()
2246 Node* first_return_reg = __ BytecodeOperandReg(3); in DoCallRuntimeForPair()
2247 Node* second_return_reg = __ NextRegister(first_return_reg); in DoCallRuntimeForPair()
2248 Node* result0 = __ Projection(0, result_pair); in DoCallRuntimeForPair()
2249 Node* result1 = __ Projection(1, result_pair); in DoCallRuntimeForPair()
2250 __ StoreRegister(result0, first_return_reg); in DoCallRuntimeForPair()
2251 __ StoreRegister(result1, second_return_reg); in DoCallRuntimeForPair()
2252 __ Dispatch(); in DoCallRuntimeForPair()
2260 Node* context_index = __ BytecodeOperandIdx(0); in DoCallJSRuntime()
2261 Node* receiver_reg = __ BytecodeOperandReg(1); in DoCallJSRuntime()
2262 Node* first_arg = __ RegisterLocation(receiver_reg); in DoCallJSRuntime()
2263 Node* receiver_args_count = __ BytecodeOperandCount(2); in DoCallJSRuntime()
2264 Node* receiver_count = __ Int32Constant(1); in DoCallJSRuntime()
2265 Node* args_count = __ Int32Sub(receiver_args_count, receiver_count); in DoCallJSRuntime()
2268 Node* context = __ GetContext(); in DoCallJSRuntime()
2269 Node* native_context = __ LoadNativeContext(context); in DoCallJSRuntime()
2270 Node* function = __ LoadContextElement(native_context, context_index); in DoCallJSRuntime()
2273 Node* result = __ CallJS(function, context, first_arg, args_count, in DoCallJSRuntime()
2275 __ SetAccumulator(result); in DoCallJSRuntime()
2276 __ Dispatch(); in DoCallJSRuntime()
2286 Node* callable_reg = __ BytecodeOperandReg(0); in DoCallWithSpread()
2287 Node* callable = __ LoadRegister(callable_reg); in DoCallWithSpread()
2288 Node* receiver_reg = __ BytecodeOperandReg(1); in DoCallWithSpread()
2289 Node* receiver_arg = __ RegisterLocation(receiver_reg); in DoCallWithSpread()
2290 Node* receiver_args_count = __ BytecodeOperandCount(2); in DoCallWithSpread()
2291 Node* receiver_count = __ Int32Constant(1); in DoCallWithSpread()
2292 Node* args_count = __ Int32Sub(receiver_args_count, receiver_count); in DoCallWithSpread()
2293 Node* context = __ GetContext(); in DoCallWithSpread()
2297 __ CallJSWithSpread(callable, context, receiver_arg, args_count); in DoCallWithSpread()
2298 __ SetAccumulator(result); in DoCallWithSpread()
2299 __ Dispatch(); in DoCallWithSpread()
2309 Node* new_target = __ GetAccumulator(); in DoConstructWithSpread()
2310 Node* constructor_reg = __ BytecodeOperandReg(0); in DoConstructWithSpread()
2311 Node* constructor = __ LoadRegister(constructor_reg); in DoConstructWithSpread()
2312 Node* first_arg_reg = __ BytecodeOperandReg(1); in DoConstructWithSpread()
2313 Node* first_arg = __ RegisterLocation(first_arg_reg); in DoConstructWithSpread()
2314 Node* args_count = __ BytecodeOperandCount(2); in DoConstructWithSpread()
2315 Node* context = __ GetContext(); in DoConstructWithSpread()
2316 Node* result = __ ConstructWithSpread(constructor, context, new_target, in DoConstructWithSpread()
2318 __ SetAccumulator(result); in DoConstructWithSpread()
2319 __ Dispatch(); in DoConstructWithSpread()
2329 Node* new_target = __ GetAccumulator(); in DoConstruct()
2330 Node* constructor_reg = __ BytecodeOperandReg(0); in DoConstruct()
2331 Node* constructor = __ LoadRegister(constructor_reg); in DoConstruct()
2332 Node* first_arg_reg = __ BytecodeOperandReg(1); in DoConstruct()
2333 Node* first_arg = __ RegisterLocation(first_arg_reg); in DoConstruct()
2334 Node* args_count = __ BytecodeOperandCount(2); in DoConstruct()
2335 Node* slot_id = __ BytecodeOperandIdx(3); in DoConstruct()
2336 Node* feedback_vector = __ LoadFeedbackVector(); in DoConstruct()
2337 Node* context = __ GetContext(); in DoConstruct()
2338 Node* result = __ Construct(constructor, context, new_target, first_arg, in DoConstruct()
2340 __ SetAccumulator(result); in DoConstruct()
2341 __ Dispatch(); in DoConstruct()
2416 Node* reg_index = __ BytecodeOperandReg(0); in DoTestUndetectable()
2417 Node* object = __ LoadRegister(reg_index); in DoTestUndetectable()
2421 __ GotoIf(__ TaggedIsSmi(object), &not_equal); in DoTestUndetectable()
2424 Node* map = __ LoadMap(object); in DoTestUndetectable()
2425 Node* map_bitfield = __ LoadMapBitField(map); in DoTestUndetectable()
2427 __ Word32And(map_bitfield, __ Int32Constant(1 << Map::kIsUndetectable)); in DoTestUndetectable()
2428 __ GotoIf(__ Word32Equal(map_undetectable, __ Int32Constant(0)), &not_equal); in DoTestUndetectable()
2430 __ SetAccumulator(__ BooleanConstant(true)); in DoTestUndetectable()
2431 __ Goto(&end); in DoTestUndetectable()
2433 __ Bind(&not_equal); in DoTestUndetectable()
2435 __ SetAccumulator(__ BooleanConstant(false)); in DoTestUndetectable()
2436 __ Goto(&end); in DoTestUndetectable()
2439 __ Bind(&end); in DoTestUndetectable()
2440 __ Dispatch(); in DoTestUndetectable()
2447 Node* reg_index = __ BytecodeOperandReg(0); in DoTestNull()
2448 Node* object = __ LoadRegister(reg_index); in DoTestNull()
2449 Node* null_value = __ HeapConstant(isolate_->factory()->null_value()); in DoTestNull()
2452 __ GotoIf(__ WordEqual(object, null_value), &equal); in DoTestNull()
2453 __ SetAccumulator(__ BooleanConstant(false)); in DoTestNull()
2454 __ Goto(&end); in DoTestNull()
2456 __ Bind(&equal); in DoTestNull()
2458 __ SetAccumulator(__ BooleanConstant(true)); in DoTestNull()
2459 __ Goto(&end); in DoTestNull()
2462 __ Bind(&end); in DoTestNull()
2463 __ Dispatch(); in DoTestNull()
2470 Node* reg_index = __ BytecodeOperandReg(0); in DoTestUndefined()
2471 Node* object = __ LoadRegister(reg_index); in DoTestUndefined()
2473 __ HeapConstant(isolate_->factory()->undefined_value()); in DoTestUndefined()
2476 __ GotoIf(__ WordEqual(object, undefined_value), &equal); in DoTestUndefined()
2477 __ SetAccumulator(__ BooleanConstant(false)); in DoTestUndefined()
2478 __ Goto(&end); in DoTestUndefined()
2480 __ Bind(&equal); in DoTestUndefined()
2482 __ SetAccumulator(__ BooleanConstant(true)); in DoTestUndefined()
2483 __ Goto(&end); in DoTestUndefined()
2486 __ Bind(&end); in DoTestUndefined()
2487 __ Dispatch(); in DoTestUndefined()
2494 Node* relative_jump = __ BytecodeOperandUImmWord(0); in DoJump()
2495 __ Jump(relative_jump); in DoJump()
2502 Node* index = __ BytecodeOperandIdx(0); in DoJumpConstant()
2503 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpConstant()
2504 __ Jump(relative_jump); in DoJumpConstant()
2513 Node* accumulator = __ GetAccumulator(); in DoJumpIfTrue()
2514 Node* relative_jump = __ BytecodeOperandUImmWord(0); in DoJumpIfTrue()
2515 Node* true_value = __ BooleanConstant(true); in DoJumpIfTrue()
2518 __ JumpIfWordEqual(accumulator, true_value, relative_jump); in DoJumpIfTrue()
2527 Node* accumulator = __ GetAccumulator(); in DoJumpIfTrueConstant()
2528 Node* index = __ BytecodeOperandIdx(0); in DoJumpIfTrueConstant()
2529 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpIfTrueConstant()
2530 Node* true_value = __ BooleanConstant(true); in DoJumpIfTrueConstant()
2533 __ JumpIfWordEqual(accumulator, true_value, relative_jump); in DoJumpIfTrueConstant()
2542 Node* accumulator = __ GetAccumulator(); in DoJumpIfFalse()
2543 Node* relative_jump = __ BytecodeOperandUImmWord(0); in DoJumpIfFalse()
2544 Node* false_value = __ BooleanConstant(false); in DoJumpIfFalse()
2547 __ JumpIfWordEqual(accumulator, false_value, relative_jump); in DoJumpIfFalse()
2556 Node* accumulator = __ GetAccumulator(); in DoJumpIfFalseConstant()
2557 Node* index = __ BytecodeOperandIdx(0); in DoJumpIfFalseConstant()
2558 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpIfFalseConstant()
2559 Node* false_value = __ BooleanConstant(false); in DoJumpIfFalseConstant()
2562 __ JumpIfWordEqual(accumulator, false_value, relative_jump); in DoJumpIfFalseConstant()
2570 Node* value = __ GetAccumulator(); in DoJumpIfToBooleanTrue()
2571 Node* relative_jump = __ BytecodeOperandUImmWord(0); in DoJumpIfToBooleanTrue()
2573 __ BranchIfToBooleanIsTrue(value, &if_true, &if_false); in DoJumpIfToBooleanTrue()
2574 __ Bind(&if_true); in DoJumpIfToBooleanTrue()
2575 __ Jump(relative_jump); in DoJumpIfToBooleanTrue()
2576 __ Bind(&if_false); in DoJumpIfToBooleanTrue()
2577 __ Dispatch(); in DoJumpIfToBooleanTrue()
2587 Node* value = __ GetAccumulator(); in DoJumpIfToBooleanTrueConstant()
2588 Node* index = __ BytecodeOperandIdx(0); in DoJumpIfToBooleanTrueConstant()
2589 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpIfToBooleanTrueConstant()
2591 __ BranchIfToBooleanIsTrue(value, &if_true, &if_false); in DoJumpIfToBooleanTrueConstant()
2592 __ Bind(&if_true); in DoJumpIfToBooleanTrueConstant()
2593 __ Jump(relative_jump); in DoJumpIfToBooleanTrueConstant()
2594 __ Bind(&if_false); in DoJumpIfToBooleanTrueConstant()
2595 __ Dispatch(); in DoJumpIfToBooleanTrueConstant()
2603 Node* value = __ GetAccumulator(); in DoJumpIfToBooleanFalse()
2604 Node* relative_jump = __ BytecodeOperandUImmWord(0); in DoJumpIfToBooleanFalse()
2606 __ BranchIfToBooleanIsTrue(value, &if_true, &if_false); in DoJumpIfToBooleanFalse()
2607 __ Bind(&if_true); in DoJumpIfToBooleanFalse()
2608 __ Dispatch(); in DoJumpIfToBooleanFalse()
2609 __ Bind(&if_false); in DoJumpIfToBooleanFalse()
2610 __ Jump(relative_jump); in DoJumpIfToBooleanFalse()
2620 Node* value = __ GetAccumulator(); in DoJumpIfToBooleanFalseConstant()
2621 Node* index = __ BytecodeOperandIdx(0); in DoJumpIfToBooleanFalseConstant()
2622 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpIfToBooleanFalseConstant()
2624 __ BranchIfToBooleanIsTrue(value, &if_true, &if_false); in DoJumpIfToBooleanFalseConstant()
2625 __ Bind(&if_true); in DoJumpIfToBooleanFalseConstant()
2626 __ Dispatch(); in DoJumpIfToBooleanFalseConstant()
2627 __ Bind(&if_false); in DoJumpIfToBooleanFalseConstant()
2628 __ Jump(relative_jump); in DoJumpIfToBooleanFalseConstant()
2636 Node* accumulator = __ GetAccumulator(); in DoJumpIfNull()
2637 Node* null_value = __ HeapConstant(isolate_->factory()->null_value()); in DoJumpIfNull()
2638 Node* relative_jump = __ BytecodeOperandUImmWord(0); in DoJumpIfNull()
2639 __ JumpIfWordEqual(accumulator, null_value, relative_jump); in DoJumpIfNull()
2647 Node* accumulator = __ GetAccumulator(); in DoJumpIfNullConstant()
2648 Node* null_value = __ HeapConstant(isolate_->factory()->null_value()); in DoJumpIfNullConstant()
2649 Node* index = __ BytecodeOperandIdx(0); in DoJumpIfNullConstant()
2650 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpIfNullConstant()
2651 __ JumpIfWordEqual(accumulator, null_value, relative_jump); in DoJumpIfNullConstant()
2659 Node* accumulator = __ GetAccumulator(); in DoJumpIfUndefined()
2661 __ HeapConstant(isolate_->factory()->undefined_value()); in DoJumpIfUndefined()
2662 Node* relative_jump = __ BytecodeOperandUImmWord(0); in DoJumpIfUndefined()
2663 __ JumpIfWordEqual(accumulator, undefined_value, relative_jump); in DoJumpIfUndefined()
2671 Node* accumulator = __ GetAccumulator(); in DoJumpIfUndefinedConstant()
2673 __ HeapConstant(isolate_->factory()->undefined_value()); in DoJumpIfUndefinedConstant()
2674 Node* index = __ BytecodeOperandIdx(0); in DoJumpIfUndefinedConstant()
2675 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpIfUndefinedConstant()
2676 __ JumpIfWordEqual(accumulator, undefined_value, relative_jump); in DoJumpIfUndefinedConstant()
2684 Node* accumulator = __ GetAccumulator(); in DoJumpIfJSReceiver()
2685 Node* relative_jump = __ BytecodeOperandUImmWord(0); in DoJumpIfJSReceiver()
2689 __ Branch(__ TaggedIsSmi(accumulator), &if_notobject, &if_notsmi); in DoJumpIfJSReceiver()
2691 __ Bind(&if_notsmi); in DoJumpIfJSReceiver()
2692 __ Branch(__ IsJSReceiver(accumulator), &if_object, &if_notobject); in DoJumpIfJSReceiver()
2693 __ Bind(&if_object); in DoJumpIfJSReceiver()
2694 __ Jump(relative_jump); in DoJumpIfJSReceiver()
2696 __ Bind(&if_notobject); in DoJumpIfJSReceiver()
2697 __ Dispatch(); in DoJumpIfJSReceiver()
2705 Node* accumulator = __ GetAccumulator(); in DoJumpIfJSReceiverConstant()
2706 Node* index = __ BytecodeOperandIdx(0); in DoJumpIfJSReceiverConstant()
2707 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpIfJSReceiverConstant()
2710 __ Branch(__ TaggedIsSmi(accumulator), &if_notobject, &if_notsmi); in DoJumpIfJSReceiverConstant()
2712 __ Bind(&if_notsmi); in DoJumpIfJSReceiverConstant()
2713 __ Branch(__ IsJSReceiver(accumulator), &if_object, &if_notobject); in DoJumpIfJSReceiverConstant()
2715 __ Bind(&if_object); in DoJumpIfJSReceiverConstant()
2716 __ Jump(relative_jump); in DoJumpIfJSReceiverConstant()
2718 __ Bind(&if_notobject); in DoJumpIfJSReceiverConstant()
2719 __ Dispatch(); in DoJumpIfJSReceiverConstant()
2727 Node* accumulator = __ GetAccumulator(); in DoJumpIfNotHole()
2728 Node* the_hole_value = __ HeapConstant(isolate_->factory()->the_hole_value()); in DoJumpIfNotHole()
2729 Node* relative_jump = __ BytecodeOperandUImmWord(0); in DoJumpIfNotHole()
2730 __ JumpIfWordNotEqual(accumulator, the_hole_value, relative_jump); in DoJumpIfNotHole()
2738 Node* accumulator = __ GetAccumulator(); in DoJumpIfNotHoleConstant()
2739 Node* the_hole_value = __ HeapConstant(isolate_->factory()->the_hole_value()); in DoJumpIfNotHoleConstant()
2740 Node* index = __ BytecodeOperandIdx(0); in DoJumpIfNotHoleConstant()
2741 Node* relative_jump = __ LoadAndUntagConstantPoolEntry(index); in DoJumpIfNotHoleConstant()
2742 __ JumpIfWordNotEqual(accumulator, the_hole_value, relative_jump); in DoJumpIfNotHoleConstant()
2751 Node* relative_jump = __ BytecodeOperandUImmWord(0); in DoJumpLoop()
2752 Node* loop_depth = __ BytecodeOperandImm(1); in DoJumpLoop()
2753 Node* osr_level = __ LoadOSRNestingLevel(); in DoJumpLoop()
2758 Node* condition = __ Int32GreaterThanOrEqual(loop_depth, osr_level); in DoJumpLoop()
2759 __ Branch(condition, &ok, &osr_armed); in DoJumpLoop()
2761 __ Bind(&ok); in DoJumpLoop()
2762 __ JumpBackward(relative_jump); in DoJumpLoop()
2764 __ Bind(&osr_armed); in DoJumpLoop()
2767 Node* target = __ HeapConstant(callable.code()); in DoJumpLoop()
2768 Node* context = __ GetContext(); in DoJumpLoop()
2769 __ CallStub(callable.descriptor(), target, context); in DoJumpLoop()
2770 __ JumpBackward(relative_jump); in DoJumpLoop()
2779 Node* index = __ BytecodeOperandIdx(0); in DoCreateRegExpLiteral()
2780 Node* pattern = __ LoadConstantPoolEntry(index); in DoCreateRegExpLiteral()
2781 Node* literal_index = __ BytecodeOperandIdxSmi(1); in DoCreateRegExpLiteral()
2782 Node* flags = __ SmiFromWord32(__ BytecodeOperandFlag(2)); in DoCreateRegExpLiteral()
2783 Node* closure = __ LoadRegister(Register::function_closure()); in DoCreateRegExpLiteral()
2784 Node* context = __ GetContext(); in DoCreateRegExpLiteral()
2788 __ SetAccumulator(result); in DoCreateRegExpLiteral()
2789 __ Dispatch(); in DoCreateRegExpLiteral()
2797 Node* literal_index = __ BytecodeOperandIdxSmi(1); in DoCreateArrayLiteral()
2798 Node* closure = __ LoadRegister(Register::function_closure()); in DoCreateArrayLiteral()
2799 Node* context = __ GetContext(); in DoCreateArrayLiteral()
2800 Node* bytecode_flags = __ BytecodeOperandFlag(2); in DoCreateArrayLiteral()
2804 __ Branch(__ IsSetWord32<CreateArrayLiteralFlags::FastShallowCloneBit>( in DoCreateArrayLiteral()
2808 __ Bind(&fast_shallow_clone); in DoCreateArrayLiteral()
2813 __ SetAccumulator(result); in DoCreateArrayLiteral()
2814 __ Dispatch(); in DoCreateArrayLiteral()
2817 __ Bind(&call_runtime); in DoCreateArrayLiteral()
2820 __ DecodeWordFromWord32<CreateArrayLiteralFlags::FlagsBits>( in DoCreateArrayLiteral()
2822 Node* flags = __ SmiTag(flags_raw); in DoCreateArrayLiteral()
2823 Node* index = __ BytecodeOperandIdx(0); in DoCreateArrayLiteral()
2824 Node* constant_elements = __ LoadConstantPoolEntry(index); in DoCreateArrayLiteral()
2826 __ CallRuntime(Runtime::kCreateArrayLiteral, context, closure, in DoCreateArrayLiteral()
2828 __ SetAccumulator(result); in DoCreateArrayLiteral()
2829 __ Dispatch(); in DoCreateArrayLiteral()
2838 Node* literal_index = __ BytecodeOperandIdxSmi(1); in DoCreateObjectLiteral()
2839 Node* bytecode_flags = __ BytecodeOperandFlag(2); in DoCreateObjectLiteral()
2840 Node* closure = __ LoadRegister(Register::function_closure()); in DoCreateObjectLiteral()
2845 Node* fast_clone_properties_count = __ DecodeWordFromWord32< in DoCreateObjectLiteral()
2847 __ Branch(__ WordNotEqual(fast_clone_properties_count, __ IntPtrConstant(0)), in DoCreateObjectLiteral()
2850 __ Bind(&if_fast_clone); in DoCreateObjectLiteral()
2857 __ StoreRegister(result, __ BytecodeOperandReg(3)); in DoCreateObjectLiteral()
2858 __ Dispatch(); in DoCreateObjectLiteral()
2861 __ Bind(&if_not_fast_clone); in DoCreateObjectLiteral()
2864 Node* index = __ BytecodeOperandIdx(0); in DoCreateObjectLiteral()
2865 Node* constant_elements = __ LoadConstantPoolEntry(index); in DoCreateObjectLiteral()
2866 Node* context = __ GetContext(); in DoCreateObjectLiteral()
2869 __ DecodeWordFromWord32<CreateObjectLiteralFlags::FlagsBits>( in DoCreateObjectLiteral()
2871 Node* flags = __ SmiTag(flags_raw); in DoCreateObjectLiteral()
2874 __ CallRuntime(Runtime::kCreateObjectLiteral, context, closure, in DoCreateObjectLiteral()
2876 __ StoreRegister(result, __ BytecodeOperandReg(3)); in DoCreateObjectLiteral()
2878 __ Dispatch(); in DoCreateObjectLiteral()
2887 Node* index = __ BytecodeOperandIdx(0); in DoCreateClosure()
2888 Node* shared = __ LoadConstantPoolEntry(index); in DoCreateClosure()
2889 Node* flags = __ BytecodeOperandFlag(2); in DoCreateClosure()
2890 Node* context = __ GetContext(); in DoCreateClosure()
2893 __ GotoIfNot(__ IsSetWord32<CreateClosureFlags::FastNewClosureBit>(flags), in DoCreateClosure()
2896 Node* vector_index = __ BytecodeOperandIdx(1); in DoCreateClosure()
2897 vector_index = __ SmiTag(vector_index); in DoCreateClosure()
2898 Node* feedback_vector = __ LoadFeedbackVector(); in DoCreateClosure()
2899 __ SetAccumulator(constructor_assembler.EmitFastNewClosure( in DoCreateClosure()
2901 __ Dispatch(); in DoCreateClosure()
2903 __ Bind(&call_runtime); in DoCreateClosure()
2906 __ DecodeWordFromWord32<CreateClosureFlags::PretenuredBit>(flags); in DoCreateClosure()
2907 Node* tenured = __ SmiTag(tenured_raw); in DoCreateClosure()
2908 feedback_vector = __ LoadFeedbackVector(); in DoCreateClosure()
2909 vector_index = __ BytecodeOperandIdx(1); in DoCreateClosure()
2910 vector_index = __ SmiTag(vector_index); in DoCreateClosure()
2912 __ CallRuntime(Runtime::kInterpreterNewClosure, context, shared, in DoCreateClosure()
2914 __ SetAccumulator(result); in DoCreateClosure()
2915 __ Dispatch(); in DoCreateClosure()
2924 Node* index = __ BytecodeOperandIdx(0); in DoCreateBlockContext()
2925 Node* scope_info = __ LoadConstantPoolEntry(index); in DoCreateBlockContext()
2926 Node* closure = __ GetAccumulator(); in DoCreateBlockContext()
2927 Node* context = __ GetContext(); in DoCreateBlockContext()
2928 __ SetAccumulator( in DoCreateBlockContext()
2929 __ CallRuntime(Runtime::kPushBlockContext, context, scope_info, closure)); in DoCreateBlockContext()
2930 __ Dispatch(); in DoCreateBlockContext()
2939 Node* exception_reg = __ BytecodeOperandReg(0); in DoCreateCatchContext()
2940 Node* exception = __ LoadRegister(exception_reg); in DoCreateCatchContext()
2941 Node* name_idx = __ BytecodeOperandIdx(1); in DoCreateCatchContext()
2942 Node* name = __ LoadConstantPoolEntry(name_idx); in DoCreateCatchContext()
2943 Node* scope_info_idx = __ BytecodeOperandIdx(2); in DoCreateCatchContext()
2944 Node* scope_info = __ LoadConstantPoolEntry(scope_info_idx); in DoCreateCatchContext()
2945 Node* closure = __ GetAccumulator(); in DoCreateCatchContext()
2946 Node* context = __ GetContext(); in DoCreateCatchContext()
2947 __ SetAccumulator(__ CallRuntime(Runtime::kPushCatchContext, context, name, in DoCreateCatchContext()
2949 __ Dispatch(); in DoCreateCatchContext()
2956 Node* closure = __ LoadRegister(Register::function_closure()); in DoCreateFunctionContext()
2957 Node* slots = __ BytecodeOperandUImm(0); in DoCreateFunctionContext()
2958 Node* context = __ GetContext(); in DoCreateFunctionContext()
2960 __ SetAccumulator(constructor_assembler.EmitFastNewFunctionContext( in DoCreateFunctionContext()
2962 __ Dispatch(); in DoCreateFunctionContext()
2969 Node* closure = __ LoadRegister(Register::function_closure()); in DoCreateEvalContext()
2970 Node* slots = __ BytecodeOperandUImm(0); in DoCreateEvalContext()
2971 Node* context = __ GetContext(); in DoCreateEvalContext()
2973 __ SetAccumulator(constructor_assembler.EmitFastNewFunctionContext( in DoCreateEvalContext()
2975 __ Dispatch(); in DoCreateEvalContext()
2984 Node* reg_index = __ BytecodeOperandReg(0); in DoCreateWithContext()
2985 Node* object = __ LoadRegister(reg_index); in DoCreateWithContext()
2986 Node* scope_info_idx = __ BytecodeOperandIdx(1); in DoCreateWithContext()
2987 Node* scope_info = __ LoadConstantPoolEntry(scope_info_idx); in DoCreateWithContext()
2988 Node* closure = __ GetAccumulator(); in DoCreateWithContext()
2989 Node* context = __ GetContext(); in DoCreateWithContext()
2990 __ SetAccumulator(__ CallRuntime(Runtime::kPushWithContext, context, object, in DoCreateWithContext()
2992 __ Dispatch(); in DoCreateWithContext()
2999 Node* closure = __ LoadRegister(Register::function_closure()); in DoCreateMappedArguments()
3000 Node* context = __ GetContext(); in DoCreateMappedArguments()
3009 __ LoadObjectField(closure, JSFunction::kSharedFunctionInfoOffset); in DoCreateMappedArguments()
3010 Node* compiler_hints = __ LoadObjectField( in DoCreateMappedArguments()
3013 Node* duplicate_parameters_bit = __ Int32Constant( in DoCreateMappedArguments()
3015 Node* compare = __ Word32And(compiler_hints, duplicate_parameters_bit); in DoCreateMappedArguments()
3016 __ Branch(compare, &if_duplicate_parameters, &if_not_duplicate_parameters); in DoCreateMappedArguments()
3018 __ Bind(&if_not_duplicate_parameters); in DoCreateMappedArguments()
3023 __ SetAccumulator(result); in DoCreateMappedArguments()
3024 __ Dispatch(); in DoCreateMappedArguments()
3027 __ Bind(&if_duplicate_parameters); in DoCreateMappedArguments()
3030 __ CallRuntime(Runtime::kNewSloppyArguments_Generic, context, closure); in DoCreateMappedArguments()
3031 __ SetAccumulator(result); in DoCreateMappedArguments()
3032 __ Dispatch(); in DoCreateMappedArguments()
3040 Node* context = __ GetContext(); in DoCreateUnmappedArguments()
3041 Node* closure = __ LoadRegister(Register::function_closure()); in DoCreateUnmappedArguments()
3045 __ SetAccumulator(result); in DoCreateUnmappedArguments()
3046 __ Dispatch(); in DoCreateUnmappedArguments()
3053 Node* closure = __ LoadRegister(Register::function_closure()); in DoCreateRestParameter()
3054 Node* context = __ GetContext(); in DoCreateRestParameter()
3057 __ SetAccumulator(result); in DoCreateRestParameter()
3058 __ Dispatch(); in DoCreateRestParameter()
3067 Node* interrupt = __ StackCheckTriggeredInterrupt(); in DoStackCheck()
3068 __ Branch(interrupt, &stack_check_interrupt, &ok); in DoStackCheck()
3070 __ Bind(&ok); in DoStackCheck()
3071 __ Dispatch(); in DoStackCheck()
3073 __ Bind(&stack_check_interrupt); in DoStackCheck()
3075 Node* context = __ GetContext(); in DoStackCheck()
3076 __ CallRuntime(Runtime::kStackGuard, context); in DoStackCheck()
3077 __ Dispatch(); in DoStackCheck()
3086 Node* pending_message = __ ExternalConstant( in DoSetPendingMessage()
3089 __ Load(MachineType::TaggedPointer(), pending_message); in DoSetPendingMessage()
3090 Node* new_message = __ GetAccumulator(); in DoSetPendingMessage()
3091 __ StoreNoWriteBarrier(MachineRepresentation::kTaggedPointer, pending_message, in DoSetPendingMessage()
3093 __ SetAccumulator(previous_message); in DoSetPendingMessage()
3094 __ Dispatch(); in DoSetPendingMessage()
3101 Node* exception = __ GetAccumulator(); in DoThrow()
3102 Node* context = __ GetContext(); in DoThrow()
3103 __ CallRuntime(Runtime::kThrow, context, exception); in DoThrow()
3105 __ Abort(kUnexpectedReturnFromThrow); in DoThrow()
3112 Node* exception = __ GetAccumulator(); in DoReThrow()
3113 Node* context = __ GetContext(); in DoReThrow()
3114 __ CallRuntime(Runtime::kReThrow, context, exception); in DoReThrow()
3116 __ Abort(kUnexpectedReturnFromThrow); in DoReThrow()
3123 __ UpdateInterruptBudgetOnReturn(); in DoReturn()
3124 Node* accumulator = __ GetAccumulator(); in DoReturn()
3125 __ Return(accumulator); in DoReturn()
3132 Node* context = __ GetContext(); in DoDebugger()
3133 __ CallStub(CodeFactory::HandleDebuggerStatement(isolate_), context); in DoDebugger()
3134 __ Dispatch(); in DoDebugger()
3142 Node* context = __ GetContext(); \
3143 Node* accumulator = __ GetAccumulator(); \
3145 __ CallRuntime(Runtime::kDebugBreakOnBytecode, context, accumulator); \
3146 __ MaybeDropFrames(context); \
3147 __ DispatchToBytecodeHandler(original_handler); \
3156 __ StoreRegister(cache_type, output_register); in BuildForInPrepareResult()
3157 output_register = __ NextRegister(output_register); in BuildForInPrepareResult()
3158 __ StoreRegister(cache_array, output_register); in BuildForInPrepareResult()
3159 output_register = __ NextRegister(output_register); in BuildForInPrepareResult()
3160 __ StoreRegister(cache_length, output_register); in BuildForInPrepareResult()
3172 Node* object_register = __ BytecodeOperandReg(0); in DoForInPrepare()
3173 Node* output_register = __ BytecodeOperandReg(1); in DoForInPrepare()
3174 Node* receiver = __ LoadRegister(object_register); in DoForInPrepare()
3175 Node* context = __ GetContext(); in DoForInPrepare()
3190 __ Dispatch(); in DoForInPrepare()
3192 __ Bind(&call_runtime); in DoForInPrepare()
3195 __ CallRuntime(Runtime::kForInPrepare, context, receiver); in DoForInPrepare()
3196 Node* cache_type = __ Projection(0, result_triple); in DoForInPrepare()
3197 Node* cache_array = __ Projection(1, result_triple); in DoForInPrepare()
3198 Node* cache_length = __ Projection(2, result_triple); in DoForInPrepare()
3201 __ Dispatch(); in DoForInPrepare()
3203 __ Bind(&nothing_to_iterate); in DoForInPrepare()
3206 Node* zero = __ SmiConstant(0); in DoForInPrepare()
3208 __ Dispatch(); in DoForInPrepare()
3216 Node* receiver_reg = __ BytecodeOperandReg(0); in DoForInNext()
3217 Node* receiver = __ LoadRegister(receiver_reg); in DoForInNext()
3218 Node* index_reg = __ BytecodeOperandReg(1); in DoForInNext()
3219 Node* index = __ LoadRegister(index_reg); in DoForInNext()
3220 Node* cache_type_reg = __ BytecodeOperandReg(2); in DoForInNext()
3221 Node* cache_type = __ LoadRegister(cache_type_reg); in DoForInNext()
3222 Node* cache_array_reg = __ NextRegister(cache_type_reg); in DoForInNext()
3223 Node* cache_array = __ LoadRegister(cache_array_reg); in DoForInNext()
3226 Node* key = __ LoadFixedArrayElement(cache_array, index, 0, in DoForInNext()
3231 Node* receiver_map = __ LoadMap(receiver); in DoForInNext()
3232 __ Branch(__ WordEqual(receiver_map, cache_type), &if_fast, &if_slow); in DoForInNext()
3233 __ Bind(&if_fast); in DoForInNext()
3236 __ SetAccumulator(key); in DoForInNext()
3237 __ Dispatch(); in DoForInNext()
3239 __ Bind(&if_slow); in DoForInNext()
3242 Node* vector_index = __ BytecodeOperandIdx(3); in DoForInNext()
3243 Node* feedback_vector = __ LoadFeedbackVector(); in DoForInNext()
3245 __ HeapConstant(FeedbackVector::MegamorphicSentinel(isolate_)); in DoForInNext()
3246 __ StoreFixedArrayElement(feedback_vector, vector_index, in DoForInNext()
3250 Node* context = __ GetContext(); in DoForInNext()
3252 Node* result = __ CallStub(callable, context, key, receiver); in DoForInNext()
3253 __ SetAccumulator(result); in DoForInNext()
3254 __ Dispatch(); in DoForInNext()
3262 Node* index_reg = __ BytecodeOperandReg(0); in DoForInContinue()
3263 Node* index = __ LoadRegister(index_reg); in DoForInContinue()
3264 Node* cache_length_reg = __ BytecodeOperandReg(1); in DoForInContinue()
3265 Node* cache_length = __ LoadRegister(cache_length_reg); in DoForInContinue()
3269 __ Branch(__ WordEqual(index, cache_length), &if_true, &if_false); in DoForInContinue()
3270 __ Bind(&if_true); in DoForInContinue()
3272 __ SetAccumulator(__ BooleanConstant(false)); in DoForInContinue()
3273 __ Goto(&end); in DoForInContinue()
3275 __ Bind(&if_false); in DoForInContinue()
3277 __ SetAccumulator(__ BooleanConstant(true)); in DoForInContinue()
3278 __ Goto(&end); in DoForInContinue()
3280 __ Bind(&end); in DoForInContinue()
3281 __ Dispatch(); in DoForInContinue()
3289 Node* index_reg = __ BytecodeOperandReg(0); in DoForInStep()
3290 Node* index = __ LoadRegister(index_reg); in DoForInStep()
3291 Node* one = __ SmiConstant(Smi::FromInt(1)); in DoForInStep()
3292 Node* result = __ SmiAdd(index, one); in DoForInStep()
3293 __ SetAccumulator(result); in DoForInStep()
3294 __ Dispatch(); in DoForInStep()
3301 __ DispatchWide(OperandScale::kDouble); in DoWide()
3308 __ DispatchWide(OperandScale::kQuadruple); in DoExtraWide()
3315 __ Abort(kInvalidBytecode); in DoIllegal()
3321 void Interpreter::DoNop(InterpreterAssembler* assembler) { __ Dispatch(); } in DoNop()
3329 Node* generator_reg = __ BytecodeOperandReg(0); in DoSuspendGenerator()
3330 Node* generator = __ LoadRegister(generator_reg); in DoSuspendGenerator()
3333 Node* step_action_address = __ ExternalConstant( in DoSuspendGenerator()
3335 Node* step_action = __ Load(MachineType::Int8(), step_action_address); in DoSuspendGenerator()
3338 Node* step_next = __ Int32Constant(StepNext); in DoSuspendGenerator()
3339 __ Branch(__ Int32LessThanOrEqual(step_next, step_action), &if_stepping, &ok); in DoSuspendGenerator()
3340 __ Bind(&ok); in DoSuspendGenerator()
3343 __ LoadObjectField(generator, JSGeneratorObject::kRegisterFileOffset); in DoSuspendGenerator()
3344 Node* context = __ GetContext(); in DoSuspendGenerator()
3345 Node* state = __ GetAccumulator(); in DoSuspendGenerator()
3347 __ ExportRegisterFile(array); in DoSuspendGenerator()
3348 __ StoreObjectField(generator, JSGeneratorObject::kContextOffset, context); in DoSuspendGenerator()
3349 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset, state); in DoSuspendGenerator()
3351 Node* offset = __ SmiTag(__ BytecodeOffset()); in DoSuspendGenerator()
3352 __ StoreObjectField(generator, JSGeneratorObject::kInputOrDebugPosOffset, in DoSuspendGenerator()
3355 __ Dispatch(); in DoSuspendGenerator()
3357 __ Bind(&if_stepping); in DoSuspendGenerator()
3359 Node* context = __ GetContext(); in DoSuspendGenerator()
3360 __ CallRuntime(Runtime::kDebugRecordGenerator, context, generator); in DoSuspendGenerator()
3361 __ Goto(&ok); in DoSuspendGenerator()
3371 Node* generator_reg = __ BytecodeOperandReg(0); in DoResumeGenerator()
3372 Node* generator = __ LoadRegister(generator_reg); in DoResumeGenerator()
3374 __ ImportRegisterFile( in DoResumeGenerator()
3375 __ LoadObjectField(generator, JSGeneratorObject::kRegisterFileOffset)); in DoResumeGenerator()
3378 __ LoadObjectField(generator, JSGeneratorObject::kContinuationOffset); in DoResumeGenerator()
3379 Node* new_state = __ Int32Constant(JSGeneratorObject::kGeneratorExecuting); in DoResumeGenerator()
3380 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset, in DoResumeGenerator()
3381 __ SmiTag(new_state)); in DoResumeGenerator()
3382 __ SetAccumulator(old_state); in DoResumeGenerator()
3384 __ Dispatch(); in DoResumeGenerator()