| Index: src/x64/macro-assembler-x64.cc
|
| diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc
|
| index 0938007a0517e7727dbba29a86f0a19f991482e6..0c605d826dd1f80fa4db3dec59fed95477c350c2 100644
|
| --- a/src/x64/macro-assembler-x64.cc
|
| +++ b/src/x64/macro-assembler-x64.cc
|
| @@ -958,7 +958,10 @@ void MacroAssembler::Set(const Operand& dst, int64_t x) {
|
| }
|
|
|
|
|
| -bool MacroAssembler::IsUnsafeInt(const int x) {
|
| +// ----------------------------------------------------------------------------
|
| +// Smi tagging, untagging and tag detection.
|
| +
|
| +bool MacroAssembler::IsUnsafeInt(const int32_t x) {
|
| static const int kMaxBits = 17;
|
| return !is_intn(x, kMaxBits);
|
| }
|
| @@ -989,9 +992,6 @@ void MacroAssembler::SafePush(Smi* src) {
|
| }
|
|
|
|
|
| -// ----------------------------------------------------------------------------
|
| -// Smi tagging, untagging and tag detection.
|
| -
|
| Register MacroAssembler::GetSmiConstant(Smi* source) {
|
| int value = source->value();
|
| if (value == 0) {
|
| @@ -2196,6 +2196,17 @@ void MacroAssembler::AddSmiField(Register dst, const Operand& src) {
|
| }
|
|
|
|
|
| +void MacroAssembler::Push(Smi* source) {
|
| + intptr_t smi = reinterpret_cast<intptr_t>(source);
|
| + if (is_int32(smi)) {
|
| + push(Immediate(static_cast<int32_t>(smi)));
|
| + } else {
|
| + Register constant = GetSmiConstant(source);
|
| + push(constant);
|
| + }
|
| +}
|
| +
|
| +
|
| void MacroAssembler::PushInt64AsTwoSmis(Register src, Register scratch) {
|
| movq(scratch, src);
|
| // High bits.
|
| @@ -2220,6 +2231,14 @@ void MacroAssembler::PopInt64AsTwoSmis(Register dst, Register scratch) {
|
| }
|
|
|
|
|
| +void MacroAssembler::Test(const Operand& src, Smi* source) {
|
| + testl(Operand(src, kIntSize), Immediate(source->value()));
|
| +}
|
| +
|
| +
|
| +// ----------------------------------------------------------------------------
|
| +
|
| +
|
| void MacroAssembler::JumpIfNotString(Register object,
|
| Register object_map,
|
| Label* not_string,
|
| @@ -2459,17 +2478,6 @@ void MacroAssembler::LoadGlobalCell(Register dst, Handle<Cell> cell) {
|
| }
|
|
|
|
|
| -void MacroAssembler::Push(Smi* source) {
|
| - intptr_t smi = reinterpret_cast<intptr_t>(source);
|
| - if (is_int32(smi)) {
|
| - push(Immediate(static_cast<int32_t>(smi)));
|
| - } else {
|
| - Register constant = GetSmiConstant(source);
|
| - push(constant);
|
| - }
|
| -}
|
| -
|
| -
|
| void MacroAssembler::Drop(int stack_elements) {
|
| if (stack_elements > 0) {
|
| addq(rsp, Immediate(stack_elements * kPointerSize));
|
| @@ -2477,11 +2485,6 @@ void MacroAssembler::Drop(int stack_elements) {
|
| }
|
|
|
|
|
| -void MacroAssembler::Test(const Operand& src, Smi* source) {
|
| - testl(Operand(src, kIntSize), Immediate(source->value()));
|
| -}
|
| -
|
| -
|
| void MacroAssembler::TestBit(const Operand& src, int bits) {
|
| int byte_offset = bits / kBitsPerByte;
|
| int bit_in_byte = bits & (kBitsPerByte - 1);
|
|
|