| Index: src/x64/macro-assembler-x64.cc
|
| diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc
|
| index 0b992341f21b342a73217bafc1b31b312c398afc..e9aa7a2533a3f6f0e80c02122cefb79a3c2bb5c9 100644
|
| --- a/src/x64/macro-assembler-x64.cc
|
| +++ b/src/x64/macro-assembler-x64.cc
|
| @@ -599,11 +599,6 @@ void MacroAssembler::SmiCompare(Register dst, Smi* src) {
|
| }
|
|
|
|
|
| -void MacroAssembler::SmiCompare(Register dst, const Operand& src) {
|
| - cmpq(dst, src);
|
| -}
|
| -
|
| -
|
| void MacroAssembler::SmiCompare(const Operand& dst, Register src) {
|
| cmpq(dst, src);
|
| }
|
| @@ -739,17 +734,7 @@ void MacroAssembler::SmiAdd(Register dst,
|
| Register src2,
|
| Label* on_not_smi_result) {
|
| ASSERT(!dst.is(src2));
|
| - if (on_not_smi_result == NULL) {
|
| - // No overflow checking. Use only when it's known that
|
| - // overflowing is impossible.
|
| - if (dst.is(src1)) {
|
| - addq(dst, src2);
|
| - } else {
|
| - movq(dst, src1);
|
| - addq(dst, src2);
|
| - }
|
| - Assert(no_overflow, "Smi addition onverflow");
|
| - } else if (dst.is(src1)) {
|
| + if (dst.is(src1)) {
|
| addq(dst, src2);
|
| Label smi_result;
|
| j(no_overflow, &smi_result);
|
| @@ -796,36 +781,6 @@ void MacroAssembler::SmiSub(Register dst,
|
| }
|
|
|
|
|
| -void MacroAssembler::SmiSub(Register dst,
|
| - Register src1,
|
| - Operand const& src2,
|
| - Label* on_not_smi_result) {
|
| - ASSERT(!dst.is(src2));
|
| - if (on_not_smi_result == NULL) {
|
| - // No overflow checking. Use only when it's known that
|
| - // overflowing is impossible (e.g., subtracting two positive smis).
|
| - if (dst.is(src1)) {
|
| - subq(dst, src2);
|
| - } else {
|
| - movq(dst, src1);
|
| - subq(dst, src2);
|
| - }
|
| - Assert(no_overflow, "Smi substraction onverflow");
|
| - } else if (dst.is(src1)) {
|
| - subq(dst, src2);
|
| - Label smi_result;
|
| - j(no_overflow, &smi_result);
|
| - // Restore src1.
|
| - addq(src1, src2);
|
| - jmp(on_not_smi_result);
|
| - bind(&smi_result);
|
| - } else {
|
| - movq(dst, src1);
|
| - subq(dst, src2);
|
| - j(overflow, on_not_smi_result);
|
| - }
|
| -}
|
| -
|
| void MacroAssembler::SmiMul(Register dst,
|
| Register src1,
|
| Register src2,
|
| @@ -2549,16 +2504,11 @@ void MacroAssembler::AllocateTwoByteString(Register result,
|
| Label* gc_required) {
|
| // Calculate the number of bytes needed for the characters in the string while
|
| // observing object alignment.
|
| - const int kHeaderAlignment = SeqTwoByteString::kHeaderSize &
|
| - kObjectAlignmentMask;
|
| + ASSERT((SeqTwoByteString::kHeaderSize & kObjectAlignmentMask) == 0);
|
| ASSERT(kShortSize == 2);
|
| // scratch1 = length * 2 + kObjectAlignmentMask.
|
| - lea(scratch1, Operand(length, length, times_1, kObjectAlignmentMask +
|
| - kHeaderAlignment));
|
| + lea(scratch1, Operand(length, length, times_1, kObjectAlignmentMask));
|
| and_(scratch1, Immediate(~kObjectAlignmentMask));
|
| - if (kHeaderAlignment > 0) {
|
| - subq(scratch1, Immediate(kHeaderAlignment));
|
| - }
|
|
|
| // Allocate two byte string in new space.
|
| AllocateInNewSpace(SeqTwoByteString::kHeaderSize,
|
| @@ -2573,8 +2523,7 @@ void MacroAssembler::AllocateTwoByteString(Register result,
|
| // Set the map, length and hash field.
|
| LoadRoot(kScratchRegister, Heap::kStringMapRootIndex);
|
| movq(FieldOperand(result, HeapObject::kMapOffset), kScratchRegister);
|
| - Integer32ToSmi(scratch1, length);
|
| - movq(FieldOperand(result, String::kLengthOffset), scratch1);
|
| + movl(FieldOperand(result, String::kLengthOffset), length);
|
| movl(FieldOperand(result, String::kHashFieldOffset),
|
| Immediate(String::kEmptyHashField));
|
| }
|
| @@ -2588,15 +2537,11 @@ void MacroAssembler::AllocateAsciiString(Register result,
|
| Label* gc_required) {
|
| // Calculate the number of bytes needed for the characters in the string while
|
| // observing object alignment.
|
| - const int kHeaderAlignment = SeqAsciiString::kHeaderSize &
|
| - kObjectAlignmentMask;
|
| + ASSERT((SeqAsciiString::kHeaderSize & kObjectAlignmentMask) == 0);
|
| movl(scratch1, length);
|
| ASSERT(kCharSize == 1);
|
| - addq(scratch1, Immediate(kObjectAlignmentMask + kHeaderAlignment));
|
| + addq(scratch1, Immediate(kObjectAlignmentMask));
|
| and_(scratch1, Immediate(~kObjectAlignmentMask));
|
| - if (kHeaderAlignment > 0) {
|
| - subq(scratch1, Immediate(kHeaderAlignment));
|
| - }
|
|
|
| // Allocate ascii string in new space.
|
| AllocateInNewSpace(SeqAsciiString::kHeaderSize,
|
| @@ -2611,8 +2556,7 @@ void MacroAssembler::AllocateAsciiString(Register result,
|
| // Set the map, length and hash field.
|
| LoadRoot(kScratchRegister, Heap::kAsciiStringMapRootIndex);
|
| movq(FieldOperand(result, HeapObject::kMapOffset), kScratchRegister);
|
| - Integer32ToSmi(scratch1, length);
|
| - movq(FieldOperand(result, String::kLengthOffset), scratch1);
|
| + movl(FieldOperand(result, String::kLengthOffset), length);
|
| movl(FieldOperand(result, String::kHashFieldOffset),
|
| Immediate(String::kEmptyHashField));
|
| }
|
|
|