Home | History | Annotate | Download | only in ia32

Lines Matching full:masm

356 #define __ ACCESS_MASM(masm)
359 void HydrogenCodeStub::GenerateLightweightMiss(MacroAssembler* masm) {
361 Isolate* isolate = masm->isolate();
368 FrameScope scope(masm, StackFrame::INTERNAL);
383 void FastNewContextStub::Generate(MacroAssembler* masm) {
394 Factory* factory = masm->isolate()->factory();
426 void FastNewBlockContextStub::Generate(MacroAssembler* masm) {
444 Factory* factory = masm->isolate()->factory();
495 void StoreBufferOverflowStub::Generate(MacroAssembler* masm) {
501 CpuFeatureScope scope(masm, SSE2);
510 AllowExternalCallThatCantCauseGC scope(masm);
513 Immediate(ExternalReference::isolate_address(masm->isolate())));
515 ExternalReference::store_buffer_overflow_function(masm->isolate()),
518 CpuFeatureScope scope(masm, SSE2);
541 static void LoadFloatOperand(MacroAssembler* masm, Register number);
546 static void CheckFloatOperands(MacroAssembler* masm,
554 static void LoadSSE2Operands(MacroAssembler* masm, Label* not_numbers);
558 void DoubleToIStub::Generate(MacroAssembler* masm) {
595 CpuFeatureScope scope(masm, SSE3);
622 CpuFeatureScope scope(masm, SSE3);
653 CpuFeatureScope use_cmov(masm, CMOV);
673 CpuFeatureScope use_cmov(masm, CMOV);
698 void TranscendentalCacheStub::Generate(MacroAssembler* masm) {
736 Factory* factory = masm->isolate()->factory();
747 CpuFeatureScope scope(masm, SSE2);
749 CpuFeatureScope sse4_scope(masm, SSE4_1);
780 ExternalReference::transcendental_cache_array_address(masm->isolate());
783 type_ * sizeof(masm->isolate()->transcendental_cache()->caches_[0]);
813 Counters* counters = masm->isolate()->counters();
820 CpuFeatureScope scope(masm, SSE2);
833 CpuFeatureScope scope(masm, SSE2);
840 GenerateOperation(masm, type_);
848 CpuFeatureScope scope(masm, SSE2);
857 GenerateOperation(masm, type_);
864 FrameScope scope(masm, StackFrame::INTERNAL);
878 ExternalReference(RuntimeFunction(), masm->isolate());
881 CpuFeatureScope scope(masm, SSE2);
887 FrameScope scope(masm, StackFrame::INTERNAL);
911 MacroAssembler* masm, TranscendentalCache::Type type) {
1008 void FloatingPointHelper::LoadFloatOperand(MacroAssembler* masm,
1026 void FloatingPointHelper::LoadSSE2Operands(MacroAssembler* masm,
1031 Factory* factory = masm->isolate()->factory();
1057 void FloatingPointHelper::CheckFloatOperands(MacroAssembler* masm,
1065 Factory* factory = masm->isolate()->factory();
1080 void MathPowStub::Generate(MacroAssembler* masm) {
1081 CpuFeatureScope use_sse2(masm, SSE2);
1082 Factory* factory = masm->isolate()->factory();
1311 Counters* counters = masm->isolate()->counters();
1327 AllowExternalCallThatCantCauseGC scope(masm);
1332 ExternalReference::power_double_double_function(masm->isolate()), 4);
1348 void FunctionPrototypeStub::Generate(MacroAssembler* masm) {
1357 __ cmp(ecx, Immediate(masm->isolate()->factory()->prototype_string()));
1361 StubCompiler::GenerateLoadFunctionPrototype(masm, edx, eax, ebx, &miss);
1364 masm, BaseLoadStoreStubCompiler::MissBuiltin(kind()));
1368 masm) {
1377 __ cmp(ecx, Immediate(masm->isolate()->factory()->length_string()));
1381 StubCompiler::GenerateLoadStringLength(masm, edx, eax, ebx, &miss);
1384 masm, BaseLoadStoreStubCompiler::MissBuiltin(kind()));
1388 void StoreArrayLengthStub::Generate(MacroAssembler* masm) {
1408 __ cmp(ecx, Immediate(masm->isolate()->factory()->length_string()));
1443 ExternalReference(IC_Utility(IC::kStoreIC_ArrayLength), masm->isolate());
1449 masm, BaseLoadStoreStubCompiler::MissBuiltin(kind()));
1453 void ArgumentsAccessStub::GenerateReadElement(MacroAssembler* masm) {
1512 void ArgumentsAccessStub::GenerateNewNonStrictSlow(MacroAssembler* masm) {
1537 void ArgumentsAccessStub::GenerateNewNonStrictFast(MacroAssembler* masm) {
1538 Isolate* isolate = masm->isolate();
1762 void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) {
1763 Isolate* isolate = masm->isolate();
1861 void RegExpExecStub::Generate(MacroAssembler* masm) {
1882 Factory* factory = masm->isolate()->factory();
1887 masm->isolate());
1889 ExternalReference::address_of_regexp_stack_memory_size(masm->isolate());
2038 Counters* counters = masm->isolate()->counters();
2047 Immediate(ExternalReference::isolate_address(masm->isolate())));
2064 masm->isolate())));
2138 masm->isolate());
2139 __ mov(edx, Immediate(masm->isolate()->factory()->the_hole_value()));
2220 ExternalReference::address_of_static_offsets_vector(masm->isolate());
2310 void RegExpConstructResultStub::Generate(MacroAssembler* masm) {
2340 Factory* factory = masm->isolate()->factory();
2400 static void CheckInputType(MacroAssembler* masm,
2410 Immediate(masm->isolate()->factory()->heap_number_map()));
2419 static void BranchIfNotInternalizedString(MacroAssembler* masm,
2432 void ICCompareStub::GenerateGeneric(MacroAssembler* masm) {
2437 CheckInputType(masm, edx, left_, &miss);
2438 CheckInputType(masm, eax, right_, &miss);
2468 __ cmp(edx, masm->isolate()->factory()->undefined_value());
2478 Immediate(masm->isolate()->factory()->heap_number_map()));
2523 Immediate(masm->isolate()->factory()->heap_number_map()));
2569 CpuFeatureScope use_sse2(masm, SSE2);
2570 CpuFeatureScope use_cmov(masm, CMOV);
2572 FloatingPointHelper::LoadSSE2Operands(masm, &non_number_comparison);
2586 masm, &non_number_comparison, ebx);
2587 FloatingPointHelper::LoadFloatOperand(masm, eax);
2588 FloatingPointHelper::LoadFloatOperand(masm, edx);
2628 BranchIfNotInternalizedString(masm, &check_for_strings, eax, ecx);
2629 BranchIfNotInternalizedString(masm, &check_for_strings, edx, ecx);
2644 StringCompareStub::GenerateFlatAsciiStringEquals(masm,
2650 StringCompareStub::GenerateCompareFlatAsciiStrings(masm,
2721 GenerateMiss(masm);
2725 static void GenerateRecordCallTarget(MacroAssembler* masm) {
2732 Isolate* isolate = masm->isolate();
2750 masm->isolate()->factory()->allocation_site_map();
2787 FrameScope scope(masm, StackFrame::INTERNAL);
2813 void CallFunctionStub::Generate(MacroAssembler* masm) {
2816 Isolate* isolate = masm->isolate();
2844 GenerateRecordCallTarget(masm);
2904 void CallConstructStub::Generate(MacroAssembler* masm) {
2917 GenerateRecordCallTarget(masm);
2944 masm->isolate()->builtins()->ArgumentsAdaptorTrampoline();
2991 static void JumpIfOOM(MacroAssembler* masm,
3004 void CEntryStub::GenerateCore(MacroAssembler* masm,
3031 Immediate(ExternalReference::isolate_address(masm->isolate())));
3037 ExternalReference::heap_always_allocate_scope_depth(masm->isolate());
3046 Immediate(ExternalReference::isolate_address(masm->isolate())));
3058 __ cmp(eax, masm->isolate()->factory()->the_hole_value());
3073 Isolate::kPendingExceptionAddress, masm->isolate());
3079 __ mov(edx, Immediate(masm->isolate()->factory()->the_hole_value()));
3103 JumpIfOOM(masm, eax, ecx, throw_out_of_memory_exception);
3109 JumpIfOOM(masm, eax, ecx, throw_out_of_memory_exception);
3112 __ mov(edx, Immediate(masm->isolate()->factory()->the_hole_value()));
3117 __ cmp(eax, masm->isolate()->factory()->termination_exception());
3128 void CEntryStub::Generate(MacroAssembler* masm) {
3136 ProfileEntryHookStub::MaybeCallEntryHook(masm);
3157 GenerateCore(masm,
3165 GenerateCore(masm,
3175 GenerateCore(masm,
3184 Isolate* isolate = masm->isolate();
3193 JumpIfOOM(masm, eax, ecx, &already_have_failure);
3207 void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
3211 ProfileEntryHookStub::MaybeCallEntryHook(masm);
3227 ExternalReference c_entry_fp(Isolate::kCEntryFPAddress, masm->isolate());
3232 masm->isolate());
3249 masm->isolate());
3260 __ mov(edx, Immediate(masm->isolate()->factory()->the_hole_value()));
3272 masm->isolate());
3276 masm->isolate());
3297 masm->isolate())));
3327 void InstanceofStub::Generate(MacroAssembler* masm) {
3410 Factory* factory = masm->isolate()->factory();
3479 Condition is_string = masm->IsObjectStringType(object, scratch, scratch);
3499 FrameScope scope(masm, StackFrame::INTERNAL);
3526 void StringCharCodeAtGenerator::GenerateFast(MacroAssembler* masm) {
3549 Factory* factory = masm->isolate()->factory();
3551 masm, factory, object_, index_, result_, &call_runtime_);
3559 MacroAssembler* masm,
3567 masm->isolate()->factory()->heap_number_map(),
3570 call_helper.BeforeCall(masm);
3589 call_helper.AfterCall(masm);
3600 call_helper.BeforeCall(masm);
3608 call_helper.AfterCall(masm);
3618 void StringCharFromCodeGenerator::GenerateFast(MacroAssembler* masm) {
3628 Factory* factory = masm->isolate()->factory();
3644 MacroAssembler* masm,
3649 call_helper.BeforeCall(masm);
3655 call_helper.AfterCall(masm);
3662 void StringAddStub::Generate(MacroAssembler* masm) {
3686 GenerateConvertArgument(masm, 2 * kPointerSize, eax, ebx, ecx, edi,
3691 GenerateConvertArgument(masm, 1 * kPointerSize, edx, ebx, ecx, edi,
3706 Counters* counters = masm->isolate()->counters();
3747 masm, ebx, ecx, eax, edx, edi,
3800 new_space_high_promotion_mode_active_address(masm->isolate());
3922 StringHelper::GenerateCopyCharacters(masm, ecx, edx, edi, ebx, true);
3933 StringHelper::GenerateCopyCharacters(masm, ecx, edx, edi, ebx, true);
3959 StringHelper::GenerateCopyCharacters(masm, ecx, edx, edi, ebx, false);
3970 StringHelper::GenerateCopyCharacters(masm, ecx, edx, edi, ebx, false);
3988 void StringAddStub::GenerateRegisterArgsPush(MacroAssembler* masm) {
3994 void StringAddStub::GenerateRegisterArgsPop(MacroAssembler* masm,
4003 void StringAddStub::GenerateConvertArgument(MacroAssembler* masm,
4026 void StringHelper::GenerateCopyCharacters(MacroAssembler* masm,
4052 void StringHelper::GenerateCopyCharactersREP(MacroAssembler* masm,
4112 void StringHelper::GenerateTwoCharacterStringTableProbe(MacroAssembler* masm,
4138 GenerateHashInit(masm, hash, c1, scratch);
4139 GenerateHashAddCharacter(masm, hash, c2, scratch);
4140 GenerateHashGetHash(masm, hash, scratch);
4189 Factory* factory = masm->isolate()->factory();
4234 void StringHelper::GenerateHashInit(MacroAssembler* masm,
4247 int32_t seed = masm->isolate()->heap()->HashSeed();
4259 void StringHelper::GenerateHashAddCharacter(MacroAssembler* masm,
4276 void StringHelper::GenerateHashGetHash(MacroAssembler* masm,
4302 void SubStringStub::Generate(MacroAssembler* masm) {
4315 Condition is_string = masm->IsObjectStringType(eax, ebx, ebx);
4334 Counters* counters = masm->isolate()->counters();
4356 Factory* factory = masm->isolate()->factory();
4471 StringHelper::GenerateCopyCharactersREP(masm, edi, esi, ecx, ebx, true);
4501 StringHelper::GenerateCopyCharactersREP(masm, edi, esi, ecx, ebx, false);
4521 generator.GenerateFast(masm);
4523 generator.SkipSlow(masm, &runtime);
4527 void StringCompareStub::GenerateFlatAsciiStringEquals(MacroAssembler* masm,
4554 GenerateAsciiCharsCompareLoop(masm, left, right, length, scratch2,
4563 void StringCompareStub::GenerateCompareFlatAsciiStrings(MacroAssembler* masm,
4569 Counters* counters = masm->isolate()->counters();
4594 GenerateAsciiCharsCompareLoop(masm, left, right, min_length, scratch2,
4630 MacroAssembler* masm,
4659 void StringCompareStub::Generate(MacroAssembler* masm) {
4676 __ IncrementCounter(masm->isolate()->counters()->string_compare_native(), 1);
4689 GenerateCompareFlatAsciiStrings(masm, edx, eax, ecx, ebx, edi);
4698 void ICCompareStub::GenerateSmis(MacroAssembler* masm) {
4720 GenerateMiss(masm);
4724 void ICCompareStub::GenerateNumbers(MacroAssembler* masm) {
4741 CpuFeatureScope scope1(masm, SSE2);
4742 CpuFeatureScope scope2(masm, CMOV);
4748 masm->isolate()->factory()->heap_number_map());
4760 masm->isolate()->factory()->heap_number_map());
4790 masm->isolate()->factory()->heap_number_map());
4793 masm->isolate()->factory()->heap_number_map());
4801 __ jmp(stub.GetCode(masm->isolate()), RelocInfo::CODE_TARGET);
4805 __ cmp(eax, Immediate(masm->isolate()->factory()->undefined_value()));
4815 __ cmp(edx, Immediate(masm->isolate()->factory()->undefined_value()));
4820 GenerateMiss(masm);
4824 void ICCompareStub::GenerateInternalizedStrings(MacroAssembler* masm) {
4865 GenerateMiss(masm);
4869 void ICCompareStub::GenerateUniqueNames(MacroAssembler* masm) {
4910 GenerateMiss(masm);
4914 void ICCompareStub::GenerateStrings(MacroAssembler* masm) {
4981 masm, left, right, tmp1, tmp2);
4984 masm, left, right, tmp1, tmp2, tmp3);
5000 GenerateMiss(masm);
5004 void ICCompareStub::GenerateObjects(MacroAssembler* masm) {
5021 GenerateMiss(masm);
5025 void ICCompareStub::GenerateKnownObjects(MacroAssembler* masm) {
5042 GenerateMiss(masm);
5046 void ICCompareStub::GenerateMiss(MacroAssembler* masm) {
5050 masm->isolate());
5051 FrameScope scope(masm, StackFrame::INTERNAL);
5074 void NameDictionaryLookupStub::GenerateNegativeLookup(MacroAssembler* masm,
5105 __ cmp(entity_name, masm->isolate()->factory()->undefined_value());
5114 __ cmp(entity_name, masm->isolate()->factory()->the_hole_value());
5138 void NameDictionaryLookupStub::GeneratePositiveLookup(MacroAssembler* masm,
5193 void NameDictionaryLookupStub::Generate(MacroAssembler* masm) {
5240 __ cmp(scratch, masm->isolate()->factory()->undefined_value());
5301 void RecordWriteStub::Generate(MacroAssembler* masm) {
5323 GenerateIncremental(masm, INCREMENTAL);
5326 GenerateIncremental(masm, INCREMENTAL_COMPACTION);
5330 masm->set_byte_at(0, kTwoByteNopInstruction);
5331 masm->set_byte_at(2, kFiveByteNopInstruction);
5335 void RecordWriteStub::GenerateIncremental(MacroAssembler* masm, Mode mode) {
5336 regs_.Save(masm);
5355 masm,
5358 InformIncrementalMarker(masm, mode);
5359 regs_.Restore(masm);
5370 masm,
5373 InformIncrementalMarker(masm, mode);
5374 regs_.Restore(masm);
5379 void RecordWriteStub::InformIncrementalMarker(MacroAssembler* masm, Mode mode) {
5380 regs_.SaveCallerSaveRegisters(masm, save_fp_regs_mode_);
5386 Immediate(ExternalReference::isolate_address(masm->isolate())));
5388 AllowExternalCallThatCantCauseGC scope(masm);
5392 masm->isolate()),
5398 masm->isolate()),
5401 regs_.RestoreCallerSaveRegisters(masm, save_fp_regs_mode_);
5406 MacroAssembler* masm,
5430 regs_.Restore(masm);
5478 regs_.Restore(masm);
5498 void StoreArrayLiteralElementStub::Generate(MacroAssembler* masm) {
5584 void StubFailureTrampolineStub::Generate(MacroAssembler* masm) {
5586 __ call(ces.GetCode(masm->isolate()), RelocInfo::CODE_TARGET);
5590 masm->LeaveFrame(StackFrame::STUB_FAILURE_TRAMPOLINE);
5600 void StubFailureTailCallTrampolineStub::Generate(MacroAssembler* masm) {
5602 __ call(ces.GetCode(masm->isolate()), RelocInfo::CODE_TARGET);
5611 masm->LeaveFrame(StackFrame::STUB_FAILURE_TRAMPOLINE);
5618 void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) {
5619 if (masm->isolate()->function_entry_hook() != NULL) {
5621 masm->CallStub(&stub);
5626 void ProfileEntryHookStub::Generate(MacroAssembler* masm) {
5644 ASSERT(masm->isolate()->function_entry_hook() != NULL);
5645 __ call(FUNCTION_ADDR(masm->isolate()->function_entry_hook()),
5659 static void CreateArrayDispatch(MacroAssembler* masm,
5687 static void CreateArrayDispatchOneArgument(MacroAssembler* masm,
5735 masm->isolate()->factory()->allocation_site_map();
5815 MacroAssembler* masm,
5821 CreateArrayDispatch<ArrayNoArgumentConstructorStub>(masm, mode);
5826 CreateArrayDispatchOneArgument(masm, mode);
5829 CreateArrayDispatch<ArrayNArgumentsConstructorStub>(masm, mode);
5831 CreateArrayDispatch<ArrayNoArgumentConstructorStub>(masm, mode);
5833 CreateArrayDispatchOneArgument(masm, mode);
5835 CreateArrayDispatch<ArrayNArgumentsConstructorStub>(masm, mode);
5842 void ArrayConstructorStub::Generate(MacroAssembler* masm) {
5851 masm->isolate()->heap()->undefined_value(),
5852 masm->isolate());
5868 Handle<Map> cell_map = masm->isolate()->factory()->cell_map();
5883 masm->isolate()->factory()->allocation_site_map()));
5891 GenerateDispatchToArrayStub(masm, DONT_OVERRIDE);
5894 GenerateDispatchToArrayStub(masm, DISABLE_ALLOCATION_SITES);
5899 MacroAssembler* masm, ElementsKind kind) {
5934 void InternalArrayConstructorStub::Generate(MacroAssembler* masm) {
5979 GenerateCase(masm, FAST_HOLEY_ELEMENTS);
5982 GenerateCase(masm, FAST_ELEMENTS);