Lines Matching defs:rcx
55 static Register registers[] = { rax, rbx, rcx };
66 static Register registers[] = { rax, rbx, rcx, rdx };
118 static Register registers[] = { rdx, rcx, rax };
252 static Register registers[] = { rdx, rcx, rax };
263 static Register registers[] = { rax, rbx, rcx, rdx };
304 __ Allocate(JSFunction::kSize, rax, rbx, rcx, &gc, TAG_OBJECT);
315 __ movq(rcx, Operand(rsi, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX)));
316 __ movq(rcx, FieldOperand(rcx, GlobalObject::kNativeContextOffset));
317 __ movq(rbx, Operand(rcx, Context::SlotOffset(map_index)));
357 // rcx holds native context, rbx points to fixed array of 3-element entries
363 __ cmpq(rcx, FieldOperand(rbx, SharedFunctionInfo::kFirstContextSlot));
376 __ cmpq(rcx, FieldOperand(rbx,
397 __ movq(rdx, ContextOperand(rcx, Context::OPTIMIZED_FUNCTIONS_LIST));
402 __ movq(ContextOperand(rcx, Context::OPTIMIZED_FUNCTIONS_LIST), rax);
407 rcx,
422 __ PopReturnAddressTo(rcx);
427 __ PushReturnAddressFrom(rcx);
437 rax, rbx, rcx, &gc, TAG_OBJECT);
440 __ movq(rcx, Operand(rsp, 1 * kPointerSize));
449 rcx);
483 rax, rbx, rcx, &gc, TAG_OBJECT);
486 __ movq(rcx, Operand(rsp, 1 * kPointerSize));
501 __ JumpIfNotSmi(rcx, &after_sentinel, Label::kNear);
503 __ cmpq(rcx, Immediate(0));
506 __ movq(rcx, GlobalObjectOperand());
507 __ movq(rcx, FieldOperand(rcx, GlobalObject::kNativeContextOffset));
508 __ movq(rcx, ContextOperand(rcx, Context::CLOSURE_INDEX));
512 __ movq(ContextOperand(rax, Context::CLOSURE_INDEX), rcx);
568 // and rcx.
621 // Since we must use rcx for shifts below, use some other register (rax)
623 Register result_reg = final_result_reg.is(rcx) ? rax : final_result_reg;
627 Register save_reg = final_result_reg.is(rcx) ? rax : rcx;
634 __ movl(rcx, exponent_operand);
635 if (stash_exponent_copy) __ push(rcx);
637 __ andl(rcx, Immediate(HeapNumber::kExponentMask));
638 __ shrl(rcx, Immediate(HeapNumber::kExponentShift));
639 __ leal(result_reg, MemOperand(rcx, -HeapNumber::kExponentBias));
645 __ subl(rcx, Immediate(delta));
647 __ cmpl(rcx, Immediate(31));
673 ASSERT(final_result_reg.is(rcx));
686 __ PopReturnAddressTo(rcx);
692 __ PushReturnAddressFrom(rcx);
755 __ movq(rcx, rdx);
756 __ SmiDiv(rax, rcx, rbx, &use_fp_on_smis);
762 __ movq(rcx, rdx);
763 __ SmiMod(rax, rcx, rbx, &use_fp_on_smis);
810 __ movq(rdx, rcx);
815 __ AllocateHeapNumber(rcx, rbx, slow);
830 __ movsd(FieldOperand(rcx, HeapNumber::kValueOffset), xmm0);
831 __ movq(rax, rcx);
856 FloatingPointHelper::NumbersToSmis(masm, left, right, rbx, rdi, rcx,
910 case Token::BIT_OR: __ orl(rax, rcx); break;
911 case Token::BIT_AND: __ andl(rax, rcx); break;
912 case Token::BIT_XOR: __ xorl(rax, rcx); break;
954 // not int32 in rax and rcx.
955 __ Integer32ToSmi(rax, rcx);
974 __ PopReturnAddressTo(rcx);
977 __ PushReturnAddressFrom(rcx);
991 __ CmpObjectType(left, FIRST_NONSTRING_TYPE, rcx);
1001 __ CmpObjectType(right, FIRST_NONSTRING_TYPE, rcx);
1072 __ CmpObjectType(left, FIRST_NONSTRING_TYPE, rcx);
1077 __ CmpObjectType(right, FIRST_NONSTRING_TYPE, rcx);
1211 __ AllocateHeapNumber(rbx, rcx, alloc_failure);
1228 __ AllocateHeapNumber(rbx, rcx, alloc_failure);
1308 __ movl(rcx, rdx);
1312 __ sarl(rcx, Immediate(16));
1314 __ xorl(rcx, rdx);
1316 __ xorl(rcx, rax);
1318 __ andl(rcx, Immediate(TranscendentalCache::SubCache::kCacheSize - 1));
1322 // rcx = TranscendentalCache::hash(double value).
1350 // Find the address of the rcx'th entry in the cache, i.e., &rax[rcx*16].
1351 __ addl(rcx, rcx);
1352 __ lea(rcx, Operand(rax, rcx, times_8, 0));
1355 __ cmpq(rbx, Operand(rcx, 0));
1360 __ movq(rax, Operand(rcx, 2 * kIntSize));
1380 __ movq(Operand(rcx, 0), rbx);
1381 __ movq(Operand(rcx, 2 * kIntSize), rax);
1451 // rcx: Pointer to cache entry. Must be preserved.
1550 // Output: rax, rcx are left and right integers for a bit op.
1563 DoubleToIStub stub1(rax, rcx, HeapNumber::kValueOffset - kHeapObjectTag,
1576 __ SmiToInteger32(rcx, rax);
1584 // Output: rax, rcx are left and right integers for a bit op.
1608 // Get the untagged integer version of the rdx heap number in rcx.
1617 __ SmiToInteger32(rcx, rax);
1624 __ Set(rcx, 0);
1630 // Get the untagged integer version of the rax heap number in rcx.
1631 DoubleToIStub stub2(rax, rcx, HeapNumber::kValueOffset - kHeapObjectTag,
1676 __ LoadRoot(rcx, Heap::kHeapNumberMapRootIndex);
1678 __ cmpq(FieldOperand(rdx, HeapObject::kMapOffset), rcx);
1685 __ cmpq(FieldOperand(rax, HeapObject::kMapOffset), rcx);
1782 const Register scratch = rcx;
2011 __ AllocateHeapNumber(rax, rcx, &call_runtime);
2054 // -- rcx : name
2083 // -- rcx : name
2100 // -- rcx : key
2116 __ Cmp(rcx, masm->isolate()->factory()->length_string());
2200 __ movq(rcx, Operand(rbx, ArgumentsAdaptorFrameConstants::kLengthOffset));
2201 __ cmpq(rdx, rcx);
2205 index = masm->SmiToIndex(rax, rcx, kPointerSizeLog2);
2240 __ movq(rcx, Operand(rdx, StandardFrameConstants::kContextOffset));
2241 __ Cmp(rcx, Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR));
2245 __ movq(rcx, rbx);
2250 __ SmiToInteger64(rcx,
2253 __ lea(rdx, Operand(rdx, rcx, times_pointer_size,
2258 // rcx = argument count (untagged)
2259 // Compute the mapped parameter count = min(rbx, rcx) in rbx.
2260 __ cmpq(rbx, rcx);
2262 __ movq(rbx, rcx);
2278 __ lea(r8, Operand(r8, rcx, times_pointer_size, FixedArray::kHeaderSize));
2287 // rcx = argument count (untagged)
2306 // rcx = argument count (untagged)
2322 // Note: rcx is tagged from here on.
2324 __ Integer32ToSmi(rcx, rcx);
2327 rcx);
2337 // rcx = argument count (tagged)
2397 // rcx = argument count (tagged)
2402 __ movq(FieldOperand(rdi, FixedArray::kLengthOffset), rcx);
2407 // Untag rcx for the loop below.
2408 __ SmiToInteger64(rcx, rcx);
2423 __ cmpq(r8, rcx);
2430 // rcx = argument count (untagged)
2432 __ Integer32ToSmi(rcx, rcx);
2433 __ movq(Operand(rsp, 1 * kPointerSize), rcx); // Patch argument count.
2447 __ movq(rcx, Operand(rdx, StandardFrameConstants::kContextOffset));
2448 __ Cmp(rcx, Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR));
2452 __ movq(rcx, Operand(rdx, ArgumentsAdaptorFrameConstants::kLengthOffset));
2453 __ movq(Operand(rsp, 1 * kPointerSize), rcx);
2454 __ SmiToInteger64(rcx, rcx);
2455 __ lea(rdx, Operand(rdx, rcx, times_pointer_size,
2473 __ movq(rcx, Operand(rdx, StandardFrameConstants::kContextOffset));
2474 __ Cmp(rcx, Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR));
2478 __ movq(rcx, Operand(rsp, 1 * kPointerSize));
2479 __ SmiToInteger64(rcx, rcx);
2484 __ movq(rcx, Operand(rdx, ArgumentsAdaptorFrameConstants::kLengthOffset));
2485 __ movq(Operand(rsp, 1 * kPointerSize), rcx);
2486 __ SmiToInteger64(rcx, rcx);
2487 __ lea(rdx, Operand(rdx, rcx, times_pointer_size,
2495 __ testq(rcx, rcx);
2497 __ lea(rcx, Operand(rcx, times_pointer_size, FixedArray::kHeaderSize));
2499 __ addq(rcx, Immediate(Heap::kArgumentsObjectSizeStrict));
2502 __ Allocate(rcx, rax, rdx, rbx, &runtime, TAG_OBJECT);
2519 __ movq(rcx, Operand(rsp, 1 * kPointerSize));
2522 rcx);
2526 __ testq(rcx, rcx);
2540 __ movq(FieldOperand(rdi, FixedArray::kLengthOffset), rcx);
2542 __ SmiToInteger64(rcx, rcx);
2551 __ decq(rcx);
2712 __ Set(rcx, 1); // Type is one byte.
2724 // rcx: encoding of subject string (1 if ASCII, 0 if two_byte);
2739 // rcx: encoding of subject string (1 if ASCII 0 if two_byte);
2788 // rcx: encoding of subject string (1 if ASCII 0 if two_byte);
2808 __ testb(rcx, rcx); // Last use of rcx as encoding of subject string.
2856 __ movq(rcx, FieldOperand(rax, JSRegExp::kDataOffset));
2858 FieldOperand(rcx, JSRegExp::kIrregexpCaptureCountOffset));
2890 __ movq(rcx, rax);
2896 __ movq(rax, rcx);
2905 __ LoadAddress(rcx,
2909 // rcx: offsets vector
2918 __ movl(rdi, Operand(rcx, rdx, times_int_size, 0));
2990 __ Set(rcx, 0); // Type is two byte.
3028 rcx, // Out: End of allocation.
3047 __ lea(rcx, Operand(rax, JSRegExpResult::kSize));
3048 __ movq(FieldOperand(rax, JSObject::kElementsOffset), rcx);
3060 // rcx: FixedArray.
3065 __ movq(FieldOperand(rcx, HeapObject::kMapOffset), kScratchRegister);
3068 __ movq(FieldOperand(rcx, FixedArray::kLengthOffset), rdx);
3071 __ lea(rcx, FieldOperand(rcx, FixedArray::kHeaderSize));
3075 // rcx: Start of elements in FixedArray.
3080 __ j(less_equal, &done); // Jump if rcx is negative or zero.
3082 __ movq(Operand(rcx, rbx, times_pointer_size, 0), rdx);
3289 __ CmpObjectType(rax, FIRST_SPEC_OBJECT_TYPE, rcx);
3346 __ CmpObjectType(rax, FIRST_SPEC_OBJECT_TYPE, rcx);
3356 __ CmpInstanceType(rcx, ODDBALL_TYPE);
3359 __ CmpObjectType(rdx, FIRST_SPEC_OBJECT_TYPE, rcx);
3363 __ CmpInstanceType(rcx, ODDBALL_TYPE);
3376 __ xorl(rcx, rcx);
3383 __ setcc(below, rcx);
3384 __ subq(rax, rcx);
3418 rdx, rax, rcx, rbx, &check_unequal_objects);
3425 rcx,
3431 rcx,
3452 __ lea(rcx, Operand(rax, rdx, times_1, 0));
3453 __ testb(rcx, Immediate(kSmiTagMask));
3457 __ CmpObjectType(rdx, FIRST_SPEC_OBJECT_TYPE, rcx);
3462 __ testb(FieldOperand(rcx, Map::kBitFieldOffset),
3476 __ PopReturnAddressTo(rcx);
3489 __ PushReturnAddressFrom(rcx);
3519 // Load the cache state into rcx.
3520 __ movq(rcx, FieldOperand(rbx, Cell::kValueOffset));
3524 __ cmpq(rcx, rdi);
3526 __ Cmp(rcx, TypeFeedbackCells::MegamorphicSentinel(isolate));
3532 // AllocationSite. Do a map check on the object in rcx.
3536 __ Cmp(FieldOperand(rcx, 0), allocation_site_map);
3540 __ LoadArrayFunction(rcx);
3541 __ cmpq(rdi, rcx);
3549 __ Cmp(rcx, TypeFeedbackCells::UninitializedSentinel(isolate));
3562 __ LoadArrayFunction(rcx);
3563 __ cmpq(rdi, rcx);
3612 __ movq(rcx, GlobalObjectOperand());
3613 __ movq(rcx, FieldOperand(rcx, GlobalObject::kGlobalReceiverOffset));
3614 __ movq(Operand(rsp, (argc_ + 1) * kPointerSize), rcx);
3621 __ CmpObjectType(rdi, JS_FUNCTION_TYPE, rcx);
3658 __ CmpInstanceType(rcx, JS_FUNCTION_PROXY_TYPE);
3660 __ PopReturnAddressTo(rcx);
3662 __ PushReturnAddressFrom(rcx);
3665 __ SetCallKind(rcx, CALL_AS_METHOD);
3679 __ SetCallKind(rcx, CALL_AS_METHOD);
3696 __ CmpObjectType(rdi, JS_FUNCTION_TYPE, rcx);
3704 Register jmp_reg = rcx;
3713 // rcx: object map
3716 __ CmpInstanceType(rcx, JS_FUNCTION_PROXY_TYPE);
3726 __ SetCallKind(rcx, CALL_AS_METHOD);
3826 // Windows 64-bit ABI passes arguments in rcx, rdx, r8, r9.
3832 __ movq(rcx, r14); // argc.
3838 __ lea(rcx, StackSpaceOperand(2));
3846 // GCC passes arguments in rdi, rsi, rdx, rcx, r8, r9.
3873 __ lea(rcx, Operand(rax, 1));
3874 // Lower 2 bits of rcx are 0 iff rax has failure tag.
3875 __ testl(rcx, Immediate(kFailureTagMask));
4273 __ movq(rcx, FieldOperand(rax, Map::kPrototypeOffset));
4279 __ cmpq(rcx, rbx);
4281 __ cmpq(rcx, kScratchRegister);
4285 __ movq(rcx, FieldOperand(rcx, HeapObject::kMapOffset));
4286 __ movq(rcx, FieldOperand(rcx, Map::kPrototypeOffset));
4340 __ PopReturnAddressTo(rcx);
4342 __ PushReturnAddressFrom(rcx);
4511 GenerateConvertArgument(masm, 2 * kPointerSize, rax, rbx, rcx, rdi,
4516 GenerateConvertArgument(masm, 1 * kPointerSize, rdx, rbx, rcx, rdi,
4526 __ movq(rcx, FieldOperand(rdx, String::kLengthOffset));
4527 __ SmiTest(rcx);
4545 // rcx: length of second string
4564 __ SmiAdd(rbx, rbx, rcx);
4571 __ JumpIfBothInstanceTypesAreNotSequentialAscii(r8, r9, rbx, rcx,
4576 __ movzxbq(rcx, FieldOperand(rdx, SeqOneByteString::kHeaderSize));
4582 masm, rbx, rcx, r14, r11, rdi, r15, &make_two_character_string);
4592 __ movzxbq(rcx, FieldOperand(rdx, SeqOneByteString::kHeaderSize));
4593 __ shll(rcx, Immediate(kBitsPerByte));
4594 __ orl(rbx, rcx);
4617 __ movl(rcx, r8);
4618 __ and_(rcx, r9);
4621 __ testl(rcx, Immediate(kStringEncodingMask));
4625 __ AllocateAsciiConsString(rcx, rdi, no_reg, &call_runtime);
4628 __ movq(FieldOperand(rcx, ConsString::kLengthOffset), rbx);
4629 __ movq(FieldOperand(rcx, ConsString::kHashFieldOffset),
4639 __ movq(FieldOperand(rcx, ConsString::kFirstOffset), rax);
4640 __ RecordWriteField(rcx,
4645 __ movq(FieldOperand(rcx, ConsString::kSecondOffset), rdx);
4646 __ RecordWriteField(rcx,
4654 __ movq(FieldOperand(rcx, ConsString::kFirstOffset), rax);
4655 __ movq(FieldOperand(rcx, ConsString::kSecondOffset), rdx);
4659 __ movq(rax, rcx);
4665 // rcx: first instance type AND second instance type.
4668 __ testb(rcx, Immediate(kOneByteDataHintMask));
4676 __ AllocateTwoByteConsString(rcx, rdi, no_reg, &call_runtime);
4701 __ movq(rcx, FieldOperand(rax, ExternalString::kResourceDataOffset));
4705 __ lea(rcx, FieldOperand(rax, SeqOneByteString::kHeaderSize));
4743 // rcx: first char of first string
4746 StringHelper::GenerateCopyCharacters(masm, rbx, rcx, r14, true);
4760 // rcx: first char of first string
4763 StringHelper::GenerateCopyCharacters(masm, rbx, rcx, r14, false);
4775 GenerateRegisterArgsPop(masm, rcx);
4790 GenerateRegisterArgsPop(masm, rcx);
4898 ASSERT(count.is(rcx)); // rep movs count
5155 __ movq(rcx, Operand(rsp, kToOffset));
5157 __ JumpUnlessBothNonNegativeSmi(rcx, rdx, &runtime);
5159 __ SmiSub(rcx, rcx, rdx); // Overflow doesn't happen.
5160 __ cmpq(rcx, FieldOperand(rax, String::kLengthOffset));
5173 __ SmiCompare(rcx, Smi::FromInt(1));
5176 __ SmiToInteger32(rcx, rcx);
5180 // rcx: sub string length
5224 // rcx: length
5227 __ cmpq(rcx, Immediate(SlicedString::kMinLength));
5245 __ Integer32ToSmi(rcx, rcx);
5246 __ movq(FieldOperand(rax, SlicedString::kLengthOffset), rcx);
5260 // rcx: length
5285 __ AllocateAsciiString(rax, rcx, r11, r14, r15, &runtime);
5288 // rcx: result string length
5299 // rcx: result length
5303 StringHelper::GenerateCopyCharactersREP(masm, rdi, rsi, rcx, true);
5310 __ AllocateTwoByteString(rax, rcx, r11, r14, r15, &runtime);
5313 // rcx: result string length
5324 // rcx: result length
5328 StringHelper::GenerateCopyCharactersREP(masm, rdi, rsi, rcx, false);
5340 // rcx: sub string length (smi)
5343 rax, rdx, rcx, rax, &runtime, &runtime, &runtime, STRING_INDEX_IS_NUMBER);
5515 __ JumpIfNotBothSequentialAsciiStrings(rdx, rax, rcx, rbx, &runtime);
5520 __ PopReturnAddressTo(rcx);
5522 __ PushReturnAddressFrom(rcx);
5523 GenerateCompareFlatAsciiStrings(masm, rdx, rax, rcx, rbx, rdi, r8);
5578 __ SmiToInteger32(rcx, rax); // Can't clobber rax yet.
5579 __ cvtlsi2sd(xmm1, rcx);
5588 __ SmiToInteger32(rcx, rdx); // Can't clobber rdx yet.
5589 __ cvtlsi2sd(xmm0, rcx);
5601 __ movl(rcx, Immediate(0));
5603 __ sbbq(rax, rcx); // Subtract one if below (aka. carry set).
5617 __ CmpObjectType(rdx, HEAP_NUMBER_TYPE, rcx);
5640 Register tmp1 = rcx;
5683 Register tmp1 = rcx;
5728 Register tmp1 = rcx;
5812 __ CmpObjectType(rax, JS_OBJECT_TYPE, rcx);
5814 __ CmpObjectType(rdx, JS_OBJECT_TYPE, rcx);
5831 __ movq(rcx, FieldOperand(rax, HeapObject::kMapOffset));
5833 __ Cmp(rcx, known_map_);
6085 { REG(rbx), REG(rcx), REG(rdx), EMIT_REMEMBERED_SET },
6087 { REG(rbx), REG(rcx), REG(rdx), OMIT_REMEMBERED_SET },
6090 { REG(rdx), REG(rcx), REG(rbx), EMIT_REMEMBERED_SET },
6093 { REG(rbx), REG(rcx), REG(rdx), EMIT_REMEMBERED_SET },
6097 { REG(rbx), REG(rdx), REG(rcx), EMIT_REMEMBERED_SET},
6099 { REG(rdi), REG(rbx), REG(rcx), EMIT_REMEMBERED_SET},
6112 { REG(rbx), REG(rax), REG(rcx), EMIT_REMEMBERED_SET},
6115 { REG(rcx), REG(rdx), REG(rbx), EMIT_REMEMBERED_SET},
6117 { REG(rcx), REG(rax), REG(rbx), EMIT_REMEMBERED_SET},
6374 // -- rcx : element index as smi
6404 __ push(rcx);
6414 __ SmiToInteger32(kScratchRegister, rcx);
6416 __ lea(rcx, FieldOperand(rbx, kScratchRegister, times_pointer_size,
6418 __ movq(Operand(rcx, 0), rax);
6420 __ RecordWrite(rbx, rcx, rax,
6429 __ SmiToInteger32(kScratchRegister, rcx);
6439 __ SmiToInteger32(r11, rcx);
6456 __ PopReturnAddressTo(rcx);
6461 __ jmp(rcx); // Return to IC Miss stub, continuation still on stack.
6556 __ movq(rcx, Operand(rsp, kPointerSize));
6557 __ testq(rcx, rcx);
6565 __ movq(rcx, FieldOperand(rbx, Cell::kValueOffset));
6569 __ Cmp(FieldOperand(rcx, 0), allocation_site_map);
6574 __ movq(FieldOperand(rcx, AllocationSite::kTransitionInfoOffset), rdx);
6653 __ movq(rcx, FieldOperand(rdi, JSFunction::kPrototypeOrInitialMapOffset));
6656 Condition not_smi = NegateCondition(masm->CheckSmi(rcx));
6658 __ CmpObjectType(rcx, MAP_TYPE, rcx);
6735 __ movq(rcx, Operand(rsp, kPointerSize));
6736 __ testq(rcx, rcx);
6768 __ movq(rcx, FieldOperand(rdi, JSFunction::kPrototypeOrInitialMapOffset));
6771 Condition not_smi = NegateCondition(masm->CheckSmi(rcx));
6773 __ CmpObjectType(rcx, MAP_TYPE, rcx);
6778 __ movq(rcx, FieldOperand(rdi, JSFunction::kPrototypeOrInitialMapOffset));
6782 __ movzxbq(rcx, FieldOperand(rcx, Map::kBitField2Offset));
6784 __ and_(rcx, Immediate(Map::kElementsKindMask));
6785 __ shr(rcx, Immediate(Map::kElementsKindShift));
6789 __ cmpl(rcx, Immediate(FAST_ELEMENTS));
6791 __ cmpl(rcx, Immediate(FAST_HOLEY_ELEMENTS));
6798 __ cmpl(rcx, Immediate(FAST_ELEMENTS));