| Index: src/x64/codegen-x64.cc
|
| diff --git a/src/x64/codegen-x64.cc b/src/x64/codegen-x64.cc
|
| index 048c5f191ad2a8f63c4baa216cf7344a88849c12..703183710315e1850c65a6dd5d2a2de72cd2fda0 100644
|
| --- a/src/x64/codegen-x64.cc
|
| +++ b/src/x64/codegen-x64.cc
|
| @@ -170,7 +170,7 @@ ModuloFunction CreateModuloFunction() {
|
| __ fstp(0); // Drop result in st(0).
|
| int64_t kNaNValue = V8_INT64_C(0x7ff8000000000000);
|
| __ movq(rcx, kNaNValue);
|
| - __ movq(Operand(rsp, kPointerSize), rcx);
|
| + __ movp(Operand(rsp, kPointerSize), rcx);
|
| __ movsd(xmm0, Operand(rsp, kPointerSize));
|
| __ jmp(&return_result);
|
|
|
| @@ -223,7 +223,7 @@ void ElementsTransitionGenerator::GenerateMapChangeElementsTransition(
|
| }
|
|
|
| // Set transitioned map.
|
| - __ movq(FieldOperand(rdx, HeapObject::kMapOffset), rbx);
|
| + __ movp(FieldOperand(rdx, HeapObject::kMapOffset), rbx);
|
| __ RecordWriteField(rdx,
|
| HeapObject::kMapOffset,
|
| rbx,
|
| @@ -252,7 +252,7 @@ void ElementsTransitionGenerator::GenerateSmiToDouble(
|
|
|
| // Check for empty arrays, which only require a map transition and no changes
|
| // to the backing store.
|
| - __ movq(r8, FieldOperand(rdx, JSObject::kElementsOffset));
|
| + __ movp(r8, FieldOperand(rdx, JSObject::kElementsOffset));
|
| __ CompareRoot(r8, Heap::kEmptyFixedArrayRootIndex);
|
| __ j(equal, &only_change_map);
|
|
|
| @@ -268,18 +268,18 @@ void ElementsTransitionGenerator::GenerateSmiToDouble(
|
| // the same size.
|
| __ JumpIfNotInNewSpace(r8, rdi, &new_backing_store);
|
|
|
| - __ movq(r14, r8); // Destination array equals source array.
|
| + __ movp(r14, r8); // Destination array equals source array.
|
|
|
| // r8 : source FixedArray
|
| // r9 : elements array length
|
| // r14: destination FixedDoubleArray
|
| // Set backing store's map
|
| __ LoadRoot(rdi, Heap::kFixedDoubleArrayMapRootIndex);
|
| - __ movq(FieldOperand(r14, HeapObject::kMapOffset), rdi);
|
| + __ movp(FieldOperand(r14, HeapObject::kMapOffset), rdi);
|
|
|
| __ bind(&allocated);
|
| // Set transitioned map.
|
| - __ movq(FieldOperand(rdx, HeapObject::kMapOffset), rbx);
|
| + __ movp(FieldOperand(rdx, HeapObject::kMapOffset), rbx);
|
| __ RecordWriteField(rdx,
|
| HeapObject::kMapOffset,
|
| rbx,
|
| @@ -304,10 +304,10 @@ void ElementsTransitionGenerator::GenerateSmiToDouble(
|
| __ Allocate(rdi, r14, r11, r15, fail, TAG_OBJECT);
|
| // Set backing store's map
|
| __ LoadRoot(rdi, Heap::kFixedDoubleArrayMapRootIndex);
|
| - __ movq(FieldOperand(r14, HeapObject::kMapOffset), rdi);
|
| + __ movp(FieldOperand(r14, HeapObject::kMapOffset), rdi);
|
| // Set receiver's backing store.
|
| - __ movq(FieldOperand(rdx, JSObject::kElementsOffset), r14);
|
| - __ movq(r11, r14);
|
| + __ movp(FieldOperand(rdx, JSObject::kElementsOffset), r14);
|
| + __ movp(r11, r14);
|
| __ RecordWriteField(rdx,
|
| JSObject::kElementsOffset,
|
| r11,
|
| @@ -317,12 +317,12 @@ void ElementsTransitionGenerator::GenerateSmiToDouble(
|
| OMIT_SMI_CHECK);
|
| // Set backing store's length.
|
| __ Integer32ToSmi(r11, r9);
|
| - __ movq(FieldOperand(r14, FixedDoubleArray::kLengthOffset), r11);
|
| + __ movp(FieldOperand(r14, FixedDoubleArray::kLengthOffset), r11);
|
| __ jmp(&allocated);
|
|
|
| __ bind(&only_change_map);
|
| // Set transitioned map.
|
| - __ movq(FieldOperand(rdx, HeapObject::kMapOffset), rbx);
|
| + __ movp(FieldOperand(rdx, HeapObject::kMapOffset), rbx);
|
| __ RecordWriteField(rdx,
|
| HeapObject::kMapOffset,
|
| rbx,
|
| @@ -334,7 +334,7 @@ void ElementsTransitionGenerator::GenerateSmiToDouble(
|
|
|
| // Conversion loop.
|
| __ bind(&loop);
|
| - __ movq(rbx,
|
| + __ movp(rbx,
|
| FieldOperand(r8, r9, times_pointer_size, FixedArray::kHeaderSize));
|
| // r9 : current element's index
|
| // rbx: current element (smi-tagged)
|
| @@ -377,13 +377,13 @@ void ElementsTransitionGenerator::GenerateDoubleToObject(
|
|
|
| // Check for empty arrays, which only require a map transition and no changes
|
| // to the backing store.
|
| - __ movq(r8, FieldOperand(rdx, JSObject::kElementsOffset));
|
| + __ movp(r8, FieldOperand(rdx, JSObject::kElementsOffset));
|
| __ CompareRoot(r8, Heap::kEmptyFixedArrayRootIndex);
|
| __ j(equal, &only_change_map);
|
|
|
| __ push(rax);
|
|
|
| - __ movq(r8, FieldOperand(rdx, JSObject::kElementsOffset));
|
| + __ movp(r8, FieldOperand(rdx, JSObject::kElementsOffset));
|
| __ SmiToInteger32(r9, FieldOperand(r8, FixedDoubleArray::kLengthOffset));
|
| // r8 : source FixedDoubleArray
|
| // r9 : number of elements
|
| @@ -391,9 +391,9 @@ void ElementsTransitionGenerator::GenerateDoubleToObject(
|
| __ Allocate(rdi, r11, r14, r15, &gc_required, TAG_OBJECT);
|
| // r11: destination FixedArray
|
| __ LoadRoot(rdi, Heap::kFixedArrayMapRootIndex);
|
| - __ movq(FieldOperand(r11, HeapObject::kMapOffset), rdi);
|
| + __ movp(FieldOperand(r11, HeapObject::kMapOffset), rdi);
|
| __ Integer32ToSmi(r14, r9);
|
| - __ movq(FieldOperand(r11, FixedArray::kLengthOffset), r14);
|
| + __ movp(FieldOperand(r11, FixedArray::kLengthOffset), r14);
|
|
|
| // Prepare for conversion loop.
|
| __ movq(rsi, BitCast<int64_t, uint64_t>(kHoleNanInt64));
|
| @@ -405,7 +405,7 @@ void ElementsTransitionGenerator::GenerateDoubleToObject(
|
| // Call into runtime if GC is required.
|
| __ bind(&gc_required);
|
| __ pop(rax);
|
| - __ movq(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
|
| + __ movp(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
|
| __ jmp(fail);
|
|
|
| // Box doubles into heap numbers.
|
| @@ -423,12 +423,12 @@ void ElementsTransitionGenerator::GenerateDoubleToObject(
|
| __ AllocateHeapNumber(rax, r15, &gc_required);
|
| // rax: new heap number
|
| __ MoveDouble(FieldOperand(rax, HeapNumber::kValueOffset), r14);
|
| - __ movq(FieldOperand(r11,
|
| + __ movp(FieldOperand(r11,
|
| r9,
|
| times_pointer_size,
|
| FixedArray::kHeaderSize),
|
| rax);
|
| - __ movq(r15, r9);
|
| + __ movp(r15, r9);
|
| __ RecordWriteArray(r11,
|
| rax,
|
| r15,
|
| @@ -439,7 +439,7 @@ void ElementsTransitionGenerator::GenerateDoubleToObject(
|
|
|
| // Replace the-hole NaN with the-hole pointer.
|
| __ bind(&convert_hole);
|
| - __ movq(FieldOperand(r11,
|
| + __ movp(FieldOperand(r11,
|
| r9,
|
| times_pointer_size,
|
| FixedArray::kHeaderSize),
|
| @@ -450,7 +450,7 @@ void ElementsTransitionGenerator::GenerateDoubleToObject(
|
| __ j(not_sign, &loop);
|
|
|
| // Replace receiver's backing store with newly created and filled FixedArray.
|
| - __ movq(FieldOperand(rdx, JSObject::kElementsOffset), r11);
|
| + __ movp(FieldOperand(rdx, JSObject::kElementsOffset), r11);
|
| __ RecordWriteField(rdx,
|
| JSObject::kElementsOffset,
|
| r11,
|
| @@ -459,11 +459,11 @@ void ElementsTransitionGenerator::GenerateDoubleToObject(
|
| EMIT_REMEMBERED_SET,
|
| OMIT_SMI_CHECK);
|
| __ pop(rax);
|
| - __ movq(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
|
| + __ movp(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
|
|
|
| __ bind(&only_change_map);
|
| // Set transitioned map.
|
| - __ movq(FieldOperand(rdx, HeapObject::kMapOffset), rbx);
|
| + __ movp(FieldOperand(rdx, HeapObject::kMapOffset), rbx);
|
| __ RecordWriteField(rdx,
|
| HeapObject::kMapOffset,
|
| rbx,
|
| @@ -480,7 +480,7 @@ void StringCharLoadGenerator::Generate(MacroAssembler* masm,
|
| Register result,
|
| Label* call_runtime) {
|
| // Fetch the instance type of the receiver into result register.
|
| - __ movq(result, FieldOperand(string, HeapObject::kMapOffset));
|
| + __ movp(result, FieldOperand(string, HeapObject::kMapOffset));
|
| __ movzxbl(result, FieldOperand(result, Map::kInstanceTypeOffset));
|
|
|
| // We need special handling for indirect strings.
|
| @@ -497,7 +497,7 @@ void StringCharLoadGenerator::Generate(MacroAssembler* masm,
|
| Label indirect_string_loaded;
|
| __ SmiToInteger32(result, FieldOperand(string, SlicedString::kOffsetOffset));
|
| __ addq(index, result);
|
| - __ movq(string, FieldOperand(string, SlicedString::kParentOffset));
|
| + __ movp(string, FieldOperand(string, SlicedString::kParentOffset));
|
| __ jmp(&indirect_string_loaded, Label::kNear);
|
|
|
| // Handle cons strings.
|
| @@ -509,10 +509,10 @@ void StringCharLoadGenerator::Generate(MacroAssembler* masm,
|
| __ CompareRoot(FieldOperand(string, ConsString::kSecondOffset),
|
| Heap::kempty_stringRootIndex);
|
| __ j(not_equal, call_runtime);
|
| - __ movq(string, FieldOperand(string, ConsString::kFirstOffset));
|
| + __ movp(string, FieldOperand(string, ConsString::kFirstOffset));
|
|
|
| __ bind(&indirect_string_loaded);
|
| - __ movq(result, FieldOperand(string, HeapObject::kMapOffset));
|
| + __ movp(result, FieldOperand(string, HeapObject::kMapOffset));
|
| __ movzxbl(result, FieldOperand(result, Map::kInstanceTypeOffset));
|
|
|
| // Distinguish sequential and external strings. Only these two string
|
| @@ -539,7 +539,7 @@ void StringCharLoadGenerator::Generate(MacroAssembler* masm,
|
| // Check encoding.
|
| STATIC_ASSERT(kTwoByteStringTag == 0);
|
| __ testb(result, Immediate(kStringEncodingMask));
|
| - __ movq(result, FieldOperand(string, ExternalString::kResourceDataOffset));
|
| + __ movp(result, FieldOperand(string, ExternalString::kResourceDataOffset));
|
| __ j(not_equal, &ascii_external, Label::kNear);
|
| // Two-byte string.
|
| __ movzxwl(result, Operand(result, index, times_2, 0));
|
| @@ -641,7 +641,7 @@ static byte* GetNoCodeAgeSequence(uint32_t* length) {
|
| // FUNCTION and OPTIMIZED_FUNCTION code:
|
| CodePatcher patcher(sequence, kNoCodeAgeSequenceLength);
|
| patcher.masm()->push(rbp);
|
| - patcher.masm()->movq(rbp, rsp);
|
| + patcher.masm()->movp(rbp, rsp);
|
| patcher.masm()->push(rsi);
|
| patcher.masm()->push(rdi);
|
| initialized = true;
|
|
|