Lines Matching full:masm
39 #define __ ACCESS_MASM(masm)
41 void ToNumberStub::Generate(MacroAssembler* masm) {
62 void FastNewClosureStub::Generate(MacroAssembler* masm) {
117 void FastNewContextStub::Generate(MacroAssembler* masm) {
158 void FastNewBlockContextStub::Generate(MacroAssembler* masm) {
223 MacroAssembler* masm,
283 void FastCloneShallowArrayStub::Generate(MacroAssembler* masm) {
294 SmiIndex index = masm->SmiToIndex(rax, rax, kPointerSizeLog2);
303 Factory* factory = masm->isolate()->factory();
310 GenerateFastCloneShallowArrayCommon(masm, 0,
318 GenerateFastCloneShallowArrayCommon(masm, length_,
349 GenerateFastCloneShallowArrayCommon(masm, length_, mode, &slow_case);
357 void FastCloneShallowObjectStub::Generate(MacroAssembler* masm) {
370 SmiIndex index = masm->SmiToIndex(rax, rax, kPointerSizeLog2);
402 void ToBooleanStub::Generate(MacroAssembler* masm) {
414 CheckOddball(masm, UNDEFINED, Heap::kUndefinedValueRootIndex, false);
417 CheckOddball(masm, BOOLEAN, Heap::kFalseValueRootIndex, false);
418 CheckOddball(masm, BOOLEAN, Heap::kTrueValueRootIndex, true);
421 CheckOddball(masm, NULL_TYPE, Heap::kNullValueRootIndex, false);
496 GenerateTypeTransition(masm);
500 void StoreBufferOverflowStub::Generate(MacroAssembler* masm) {
510 AllowExternalCallThatCantCauseGC scope(masm);
512 ExternalReference::store_buffer_overflow_function(masm->isolate()),
519 void ToBooleanStub::CheckOddball(MacroAssembler* masm,
543 void ToBooleanStub::GenerateTypeTransition(MacroAssembler* masm) {
551 ExternalReference(IC_Utility(IC::kToBoolean_Patch), masm->isolate()),
563 static void LoadSSE2SmiOperands(MacroAssembler* masm);
564 static void LoadSSE2NumberOperands(MacroAssembler* masm);
565 static void LoadSSE2UnknownOperands(MacroAssembler* masm,
570 static void LoadAsIntegers(MacroAssembler* masm,
575 static void LoadNumbersAsIntegers(MacroAssembler* masm);
587 static void NumbersToSmis(MacroAssembler* masm,
600 void IntegerConvert(MacroAssembler* masm,
666 void UnaryOpStub::Generate(MacroAssembler* masm) {
669 GenerateTypeTransition(masm);
672 GenerateSmiStub(masm);
675 GenerateHeapNumberStub(masm);
678 GenerateGenericStub(masm);
684 void UnaryOpStub::GenerateTypeTransition(MacroAssembler* masm) {
697 ExternalReference(IC_Utility(IC::kUnaryOp_Patch), masm->isolate()), 4, 1);
702 void UnaryOpStub::GenerateSmiStub(MacroAssembler* masm) {
705 GenerateSmiStubSub(masm);
708 GenerateSmiStubBitNot(masm);
716 void UnaryOpStub::GenerateSmiStubSub(MacroAssembler* masm) {
718 GenerateSmiCodeSub(masm, &slow, &slow, Label::kNear, Label::kNear);
720 GenerateTypeTransition(masm);
724 void UnaryOpStub::GenerateSmiStubBitNot(MacroAssembler* masm) {
726 GenerateSmiCodeBitNot(masm, &non_smi, Label::kNear);
728 GenerateTypeTransition(masm);
732 void UnaryOpStub::GenerateSmiCodeSub(MacroAssembler* masm,
746 void UnaryOpStub::GenerateSmiCodeBitNot(MacroAssembler* masm,
756 void UnaryOpStub::GenerateHeapNumberStub(MacroAssembler* masm) {
759 GenerateHeapNumberStubSub(masm);
762 GenerateHeapNumberStubBitNot(masm);
770 void UnaryOpStub::GenerateHeapNumberStubSub(MacroAssembler* masm) {
772 GenerateSmiCodeSub(masm, &non_smi, &call_builtin, Label::kNear);
774 GenerateHeapNumberCodeSub(masm, &slow);
776 GenerateTypeTransition(masm);
778 GenerateGenericCodeFallback(masm);
783 MacroAssembler* masm) {
785 GenerateSmiCodeBitNot(masm, &non_smi, Label::kNear);
787 GenerateHeapNumberCodeBitNot(masm, &slow);
789 GenerateTypeTransition(masm);
793 void UnaryOpStub::GenerateHeapNumberCodeSub(MacroAssembler* masm,
814 FrameScope scope(masm, StackFrame::INTERNAL);
835 void UnaryOpStub::GenerateHeapNumberCodeBitNot(MacroAssembler* masm,
843 IntegerConvert(masm, rax, rax);
853 void UnaryOpStub::GenerateGenericStub(MacroAssembler* masm) {
856 GenerateGenericStubSub(masm);
859 GenerateGenericStubBitNot(masm);
867 void UnaryOpStub::GenerateGenericStubSub(MacroAssembler* masm) {
869 GenerateSmiCodeSub(masm, &non_smi, &slow, Label::kNear);
871 GenerateHeapNumberCodeSub(masm, &slow);
873 GenerateGenericCodeFallback(masm);
877 void UnaryOpStub::GenerateGenericStubBitNot(MacroAssembler* masm) {
879 GenerateSmiCodeBitNot(masm, &non_smi, Label::kNear);
881 GenerateHeapNumberCodeBitNot(masm, &slow);
883 GenerateGenericCodeFallback(masm);
887 void UnaryOpStub::GenerateGenericCodeFallback(MacroAssembler* masm) {
919 void BinaryOpStub::GenerateTypeTransition(MacroAssembler* masm) {
936 masm->isolate()),
942 void BinaryOpStub::Generate(MacroAssembler* masm) {
945 AllowStubCallsScope allow_stub_calls(masm, true);
949 GenerateTypeTransition(masm);
952 GenerateSmiStub(masm);
960 GenerateHeapNumberStub(masm);
963 GenerateOddballStub(masm);
966 GenerateBothStringStub(masm);
969 GenerateStringStub(masm);
972 GenerateGeneric(masm);
997 MacroAssembler* masm,
1019 Comment smi_check_comment(masm, "-- Smi check arguments");
1026 Comment perform_smi(masm, "-- Perform smi operation");
1111 Comment perform_float(masm, "-- Perform float operation on smis");
1116 FloatingPointHelper::LoadSSE2SmiOperands(masm);
1139 Comment done_comment(masm, "-- Enter non-smi code");
1140 FloatingPointHelper::NumbersToSmis(masm, left, right, rbx, rdi, rcx,
1147 void BinaryOpStub::GenerateFloatingPointCode(MacroAssembler* masm,
1155 FloatingPointHelper::LoadSSE2UnknownOperands(masm, non_numeric_failure);
1164 GenerateHeapResultAllocation(masm, allocation_failure);
1183 FloatingPointHelper::LoadAsIntegers(masm, non_numeric_failure,
1253 void BinaryOpStub::GenerateStringAddCode(MacroAssembler* masm) {
1266 GenerateRegisterArgsPush(masm);
1276 GenerateRegisterArgsPush(masm);
1284 void BinaryOpStub::GenerateCallRuntimeCode(MacroAssembler* masm) {
1285 GenerateRegisterArgsPush(masm);
1326 void BinaryOpStub::GenerateSmiStub(MacroAssembler* masm) {
1331 GenerateSmiCode(masm, NULL, NO_HEAPNUMBER_RESULTS);
1335 GenerateSmiCode(masm, &call_runtime, ALLOW_HEAPNUMBER_RESULTS);
1340 GenerateTypeTransition(masm);
1344 GenerateCallRuntimeCode(masm);
1349 void BinaryOpStub::GenerateStringStub(MacroAssembler* masm) {
1352 GenerateStringAddCode(masm);
1355 GenerateTypeTransition(masm);
1359 void BinaryOpStub::GenerateBothStringStub(MacroAssembler* masm) {
1381 GenerateRegisterArgsPush(masm);
1385 GenerateTypeTransition(masm);
1389 void BinaryOpStub::GenerateOddballStub(MacroAssembler* masm) {
1395 GenerateStringAddCode(masm);
1418 GenerateHeapNumberStub(masm);
1422 void BinaryOpStub::GenerateHeapNumberStub(MacroAssembler* masm) {
1424 GenerateFloatingPointCode(masm, &gc_required, ¬_number);
1427 GenerateTypeTransition(masm);
1430 GenerateCallRuntimeCode(masm);
1434 void BinaryOpStub::GenerateGeneric(MacroAssembler* masm) {
1437 GenerateSmiCode(masm, &call_runtime, ALLOW_HEAPNUMBER_RESULTS);
1439 GenerateFloatingPointCode(masm, &call_runtime, &call_string_add_or_runtime);
1443 GenerateStringAddCode(masm);
1447 GenerateCallRuntimeCode(masm);
1451 void BinaryOpStub::GenerateHeapResultAllocation(MacroAssembler* masm,
1490 void BinaryOpStub::GenerateRegisterArgsPush(MacroAssembler* masm) {
1498 void TranscendentalCacheStub::Generate(MacroAssembler* masm) {
1577 ExternalReference::transcendental_cache_array_address(masm->isolate());
1610 Counters* counters = masm->isolate()->counters();
1631 GenerateOperation(masm, type_);
1646 GenerateOperation(masm, type_);
1653 FrameScope scope(masm, StackFrame::INTERNAL);
1667 ExternalReference(RuntimeFunction(), masm->isolate()), 1, 1);
1674 FrameScope scope(masm, StackFrame::INTERNAL);
1699 MacroAssembler* masm, TranscendentalCache::Type type) {
1803 void FloatingPointHelper::LoadNumbersAsIntegers(MacroAssembler* masm) {
1815 IntegerConvert(masm, rcx, rax); // Uses rdi, rcx and rbx.
1819 IntegerConvert(masm, rdx, rdx); // Uses rdi, rcx and rbx.
1832 void FloatingPointHelper::LoadAsIntegers(MacroAssembler* masm,
1855 IntegerConvert(masm, r8, rdx);
1875 IntegerConvert(masm, rcx, rax);
1881 void FloatingPointHelper::LoadSSE2SmiOperands(MacroAssembler* masm) {
1889 void FloatingPointHelper::LoadSSE2NumberOperands(MacroAssembler* masm) {
1913 void FloatingPointHelper::LoadSSE2UnknownOperands(MacroAssembler* masm,
1943 void FloatingPointHelper::NumbersToSmis(MacroAssembler* masm,
1998 void MathPowStub::Generate(MacroAssembler* masm) {
2219 Counters* counters = masm->isolate()->counters();
2238 AllowExternalCallThatCantCauseGC scope(masm);
2241 ExternalReference::power_double_double_function(masm->isolate()), 2);
2255 void ArgumentsAccessStub::GenerateReadElement(MacroAssembler* masm) {
2284 SmiIndex index = masm->SmiToIndex(rax, rax, kPointerSizeLog2);
2286 index = masm->SmiToNegativeIndex(rdx, rdx, kPointerSizeLog2);
2299 index = masm->SmiToIndex(rax, rcx, kPointerSizeLog2);
2301 index = masm->SmiToNegativeIndex(rdx, rdx, kPointerSizeLog2);
2315 void ArgumentsAccessStub::GenerateNewNonStrictFast(MacroAssembler* masm) {
2325 Factory* factory = masm->isolate()->factory();
2532 void ArgumentsAccessStub::GenerateNewNonStrictSlow(MacroAssembler* masm) {
2558 void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) {
2658 void RegExpExecStub::Generate(MacroAssembler* masm) {
2680 Isolate* isolate = masm->isolate();
2697 Condition is_smi = masm->CheckSmi(rax);
2725 Condition is_string = masm->IsObjectStringType(rdi, rbx, rbx);
2863 Counters* counters = masm->isolate()->counters();
2869 masm->ArgumentStackSlotsForCFunctionCall(kRegExpExecuteArguments);
3049 masm->ExternalOperand(pending_exception_address, rbx);
3092 void RegExpConstructResultStub::Generate(MacroAssembler* masm) {
3176 void NumberToStringStub::GenerateLookupNumberStringCache(MacroAssembler* masm,
3204 Factory* factory = masm->isolate()->factory();
3215 GenerateConvertHashCodeToIndex(masm, scratch, mask);
3235 GenerateConvertHashCodeToIndex(masm, scratch, mask);
3253 Counters* counters = masm->isolate()->counters();
3258 void NumberToStringStub::GenerateConvertHashCodeToIndex(MacroAssembler* masm,
3270 void NumberToStringStub::Generate(MacroAssembler* masm) {
3276 GenerateLookupNumberStringCache(masm, rbx, rax, r8, r9, false, &runtime);
3293 void CompareStub::Generate(MacroAssembler* masm) {
3297 Factory* factory = masm->isolate()->factory();
3443 FloatingPointHelper::LoadSSE2UnknownOperands(masm, &non_number_comparison);
3474 BranchIfNonSymbol(masm, &check_for_strings, rax, kScratchRegister);
3475 BranchIfNonSymbol(masm, &check_for_strings, rdx, kScratchRegister);
3490 StringCompareStub::GenerateFlatAsciiStringEquals(masm,
3496 StringCompareStub::GenerateCompareFlatAsciiStrings(masm,
3566 void CompareStub::BranchIfNonSymbol(MacroAssembler* masm,
3582 void StackCheckStub::Generate(MacroAssembler* masm) {
3587 void InterruptStub::Generate(MacroAssembler* masm) {
3592 static void GenerateRecordCallTarget(MacroAssembler* masm) {
3598 Isolate* isolate = masm->isolate();
3630 void CallFunctionStub::Generate(MacroAssembler* masm) {
3693 masm->isolate()->builtins()->ArgumentsAdaptorTrampoline();
3711 void CallConstructStub::Generate(MacroAssembler* masm) {
3724 GenerateRecordCallTarget(masm);
3749 __ Jump(masm->isolate()->builtins()->ArgumentsAdaptorTrampoline(),
3788 void CEntryStub::GenerateCore(MacroAssembler* masm,
3829 ExternalReference::heap_always_allocate_scope_depth(masm->isolate());
3831 Operand scope_depth_operand = masm->ExternalOperand(scope_depth);
3865 Operand scope_depth_operand = masm->ExternalOperand(scope_depth);
3908 Isolate::kPendingExceptionAddress, masm->isolate());
3910 masm->ExternalOperand(pending_exception_address);
3928 void CEntryStub::Generate(MacroAssembler* masm) {
3965 GenerateCore(masm,
3973 GenerateCore(masm,
3983 GenerateCore(masm,
3992 Isolate* isolate = masm->isolate();
4013 void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
4017 MacroAssembler::NoRootArrayScope uninitialized_root_register(masm);
4051 Isolate* isolate = masm->isolate();
4056 Operand c_entry_fp_operand = masm->ExternalOperand(c_entry_fp);
4128 { Operand c_entry_fp_operand = masm->ExternalOperand(c_entry_fp);
4151 void InstanceofStub::Generate(MacroAssembler* masm) {
4365 void StringCharCodeAtGenerator::GenerateFast(MacroAssembler* masm) {
4392 masm, object_, index_, result_, &call_runtime_);
4400 MacroAssembler* masm,
4404 Factory* factory = masm->isolate()->factory();
4412 call_helper.BeforeCall(masm);
4431 call_helper.AfterCall(masm);
4441 call_helper.BeforeCall(masm);
4449 call_helper.AfterCall(masm);
4459 void StringCharFromCodeGenerator::GenerateFast(MacroAssembler* masm) {
4466 SmiIndex index = masm->SmiToIndex(kScratchRegister, code_, kPointerSizeLog2);
4476 MacroAssembler* masm,
4481 call_helper.BeforeCall(masm);
4487 call_helper.AfterCall(masm);
4497 void StringCharAtGenerator::GenerateFast(MacroAssembler* masm) {
4498 char_code_at_generator_.GenerateFast(masm);
4499 char_from_code_generator_.GenerateFast(masm);
4504 MacroAssembler* masm,
4506 char_code_at_generator_.GenerateSlow(masm, call_helper);
4507 char_from_code_generator_.GenerateSlow(masm, call_helper);
4511 void StringAddStub::Generate(MacroAssembler* masm) {
4534 GenerateConvertArgument(masm, 2 * kPointerSize, rax, rbx, rcx, rdi,
4539 GenerateConvertArgument(masm, 1 * kPointerSize, rdx, rbx, rcx, rdi,
4554 Counters* counters = masm->isolate()->counters();
4606 masm, rbx, rcx, r14, r11, rdi, r15, &make_two_character_string);
4744 StringHelper::GenerateCopyCharacters(masm, rbx, rcx, r14, true);
4748 StringHelper::GenerateCopyCharacters(masm, rbx, rdx, r15, true);
4761 StringHelper::GenerateCopyCharacters(masm, rbx, rcx, r14, false);
4765 StringHelper::GenerateCopyCharacters(masm, rbx, rdx, r15, false);
4780 void StringAddStub::GenerateConvertArgument(MacroAssembler* masm,
4797 NumberToStringStub::GenerateLookupNumberStringCache(masm,
4823 void StringHelper::GenerateCopyCharacters(MacroAssembler* masm,
4848 void StringHelper::GenerateCopyCharactersREP(MacroAssembler* masm,
4904 void StringHelper::GenerateTwoCharacterSymbolTableProbe(MacroAssembler* masm,
4928 GenerateHashInit(masm, hash, c1, scratch);
4929 GenerateHashAddCharacter(masm, hash, c2, scratch);
4930 GenerateHashGetHash(masm, hash, scratch);
5032 void StringHelper::GenerateHashInit(MacroAssembler* masm,
5050 void StringHelper::GenerateHashAddCharacter(MacroAssembler* masm,
5067 void StringHelper::GenerateHashGetHash(MacroAssembler* masm,
5090 void SubStringStub::Generate(MacroAssembler* masm) {
5109 Condition is_string = masm->IsObjectStringType(rax, rbx, rbx);
5124 Counters* counters = masm->isolate()->counters();
5152 masm, rbx, rdi, r9, r11, r14, r15, &make_two_character_string);
5278 SmiIndex smi_as_index = masm->SmiToIndex(rdx, rdx, times_1);
5290 StringHelper::GenerateCopyCharactersREP(masm, rdi, rsi, rcx, true);
5303 SmiIndex smi_as_index = masm->SmiToIndex(rdx, rdx, times_2);
5315 StringHelper::GenerateCopyCharactersREP(masm, rdi, rsi, rcx, false);
5326 void StringCompareStub::GenerateFlatAsciiStringEquals(MacroAssembler* masm,
5353 GenerateAsciiCharsCompareLoop(masm, left, right, length, scratch2,
5367 void StringCompareStub::GenerateCompareFlatAsciiStrings(MacroAssembler* masm,
5403 GenerateAsciiCharsCompareLoop(masm, left, right, min_length, scratch2,
5433 MacroAssembler* masm,
5462 void StringCompareStub::Generate(MacroAssembler* masm) {
5478 Counters* counters = masm->isolate()->counters();
5493 GenerateCompareFlatAsciiStrings(masm, rdx, rax, rcx, rbx, rdi, r8);
5502 void ICCompareStub::GenerateSmis(MacroAssembler* masm) {
5522 GenerateMiss(masm);
5526 void ICCompareStub::GenerateHeapNumbers(MacroAssembler* masm) {
5532 Condition either_smi = masm->CheckEitherSmi(rax, rdx);
5565 __ Cmp(rax, masm->isolate()->factory()->undefined_value());
5574 __ Cmp(rdx, masm->isolate()->factory()->undefined_value());
5579 GenerateMiss(masm);
5583 void ICCompareStub::GenerateSymbols(MacroAssembler* masm) {
5595 Condition cond = masm->CheckEitherSmi(left, right, tmp1);
5622 GenerateMiss(masm);
5626 void ICCompareStub::GenerateStrings(MacroAssembler* masm) {
5640 Condition cond = masm->CheckEitherSmi(left, right, tmp1);
5689 masm, left, right, tmp1, tmp2);
5692 masm, left, right, tmp1, tmp2, tmp3, kScratchRegister);
5708 GenerateMiss(masm);
5712 void ICCompareStub::GenerateObjects(MacroAssembler* masm) {
5715 Condition either_smi = masm->CheckEitherSmi(rdx, rax);
5728 GenerateMiss(masm);
5732 void ICCompareStub::GenerateKnownObjects(MacroAssembler* masm) {
5734 Condition either_smi = masm->CheckEitherSmi(rdx, rax);
5748 GenerateMiss(masm);
5752 void ICCompareStub::GenerateMiss(MacroAssembler* masm) {
5756 ExternalReference(IC_Utility(IC::kCompareIC_Miss), masm->isolate());
5758 FrameScope scope(masm, StackFrame::INTERNAL);
5777 void StringDictionaryLookupStub::GenerateNegativeLookup(MacroAssembler* masm,
5809 __ Cmp(entity_name, masm->isolate()->factory()->undefined_value());
5847 void StringDictionaryLookupStub::GeneratePositiveLookup(MacroAssembler* masm,
5900 void StringDictionaryLookupStub::Generate(MacroAssembler* masm) {
5946 __ Cmp(scratch, masm->isolate()->factory()->undefined_value());
6076 void RecordWriteStub::Generate(MacroAssembler* masm) {
6099 GenerateIncremental(masm, INCREMENTAL);
6102 GenerateIncremental(masm, INCREMENTAL_COMPACTION);
6106 masm->set_byte_at(0, kTwoByteNopInstruction);
6107 masm->set_byte_at(2, kFiveByteNopInstruction);
6111 void RecordWriteStub::GenerateIncremental(MacroAssembler* masm, Mode mode) {
6112 regs_.Save(masm);
6131 masm, kUpdateRememberedSetOnNoNeedToInformIncrementalMarker, mode);
6132 InformIncrementalMarker(masm, mode);
6133 regs_.Restore(masm);
6144 masm, kReturnOnNoNeedToInformIncrementalMarker, mode);
6145 InformIncrementalMarker(masm, mode);
6146 regs_.Restore(masm);
6151 void RecordWriteStub::InformIncrementalMarker(MacroAssembler* masm, Mode mode) {
6152 regs_.SaveCallerSaveRegisters(masm, save_fp_regs_mode_);
6178 AllowExternalCallThatCantCauseGC scope(masm);
6183 masm->isolate()),
6189 masm->isolate()),
6192 regs_.RestoreCallerSaveRegisters(masm, save_fp_regs_mode_);
6197 MacroAssembler* masm,
6212 regs_.Restore(masm);
6257 regs_.Restore(masm);
6277 void StoreArrayLiteralElementStub::Generate(MacroAssembler* masm) {