/external/v8/src/arm64/ |
H A D | code-stubs-arm64.cc | 320 __ JumpIfNotHeapNumber(right, slow); 345 __ JumpIfNotHeapNumber(left, slow); 427 __ JumpIfNotHeapNumber(input, fail); 1959 __ JumpIfNotHeapNumber(index_, index_not_number_); 2074 __ JumpIfNotHeapNumber(rhs, &maybe_undefined1); 2080 __ JumpIfNotHeapNumber(lhs, &maybe_undefined2); 2100 __ JumpIfNotHeapNumber(lhs, &maybe_undefined2);
|
H A D | macro-assembler-arm64.h | 1041 void JumpIfNotHeapNumber(Register object, Label* on_not_heap_number,
|
H A D | macro-assembler-arm64.cc | 1707 JumpIfNotHeapNumber(value, &done); 2060 void MacroAssembler::JumpIfNotHeapNumber(Register object, function in class:v8::internal::MacroAssembler
|
/external/v8/src/arm/ |
H A D | macro-assembler-arm.h | 1294 void JumpIfNotHeapNumber(Register object,
|
H A D | macro-assembler-arm.cc | 2581 JumpIfNotHeapNumber(object, heap_number_map, scratch1, not_number); 2998 void MacroAssembler::JumpIfNotHeapNumber(Register object, function in class:v8::internal::MacroAssembler
|
/external/v8/src/ppc/ |
H A D | macro-assembler-ppc.h | 1352 void JumpIfNotHeapNumber(Register object, Register heap_number_map,
|
H A D | macro-assembler-ppc.cc | 2347 JumpIfNotHeapNumber(object, heap_number_map, scratch1, not_number); 2769 void MacroAssembler::JumpIfNotHeapNumber(Register object, function in class:v8::internal::MacroAssembler
|
/external/v8/src/crankshaft/arm64/ |
H A D | lithium-codegen-arm64.cc | 215 __ JumpIfNotHeapNumber(value_, label); 4256 __ JumpIfNotHeapNumber(input, &convert_undefined); 5382 __ JumpIfNotHeapNumber(value, chunk_->GetAssemblyLabel(false_block));
|
/external/v8/src/mips/ |
H A D | macro-assembler-mips.h | 1573 void JumpIfNotHeapNumber(Register object,
|
H A D | macro-assembler-mips.cc | 2536 JumpIfNotHeapNumber(object, heap_number_map, scratch, not_number); 5736 void MacroAssembler::JumpIfNotHeapNumber(Register object, function in class:v8::internal::MacroAssembler
|
/external/v8/src/mips64/ |
H A D | macro-assembler-mips64.h | 1716 void JumpIfNotHeapNumber(Register object,
|
H A D | macro-assembler-mips64.cc | 2706 JumpIfNotHeapNumber(object, heap_number_map, scratch, not_number); 6145 void MacroAssembler::JumpIfNotHeapNumber(Register object, function in class:v8::internal::MacroAssembler
|
/external/v8/src/s390/ |
H A D | macro-assembler-s390.h | 1665 void JumpIfNotHeapNumber(Register object, Register heap_number_map,
|
H A D | macro-assembler-s390.cc | 2149 JumpIfNotHeapNumber(object, heap_number_map, scratch1, not_number); 2550 void MacroAssembler::JumpIfNotHeapNumber(Register object, function in class:v8::internal::MacroAssembler 1866 STATIC_ASSERT(Map::kInstanceTypeOffset < 4096); STATIC_ASSERT(LAST_TYPE < 256); LoadlB(type_reg, FieldMemOperand(map, Map::kInstanceTypeOffset)); CmpP(type_reg, Operand(type)); } void MacroAssembler::CompareRoot(Register obj, Heap::RootListIndex index) { CmpP(obj, MemOperand(kRootRegister, index << kPointerSizeLog2)); } void MacroAssembler::SmiToDouble(DoubleRegister value, Register smi) { SmiUntag(ip, smi); ConvertIntToDouble(ip, value); } void MacroAssembler::CompareMap(Register obj, Register scratch, Handle<Map> map, Label* early_success) { LoadP(scratch, FieldMemOperand(obj, HeapObject::kMapOffset)); CompareMap(obj, map, early_success); } void MacroAssembler::CompareMap(Register obj_map, Handle<Map> map, Label* early_success) { mov(r0, Operand(map)); CmpP(r0, FieldMemOperand(obj_map, HeapObject::kMapOffset)); } void MacroAssembler::CheckMap(Register obj, Register scratch, Handle<Map> map, Label* fail, SmiCheckType smi_check_type) { if (smi_check_type == DO_SMI_CHECK) { JumpIfSmi(obj, fail); } Label success; CompareMap(obj, scratch, map, &success); bne(fail); bind(&success); } void MacroAssembler::CheckMap(Register obj, Register scratch, Heap::RootListIndex index, Label* fail, SmiCheckType smi_check_type) { if (smi_check_type == DO_SMI_CHECK) { JumpIfSmi(obj, fail); } LoadP(scratch, FieldMemOperand(obj, HeapObject::kMapOffset)); CompareRoot(scratch, index); bne(fail); } void MacroAssembler::DispatchWeakMap(Register obj, Register scratch1, Register scratch2, Handle<WeakCell> cell, Handle<Code> success, SmiCheckType smi_check_type) { Label fail; if (smi_check_type == DO_SMI_CHECK) { JumpIfSmi(obj, &fail); } LoadP(scratch1, FieldMemOperand(obj, HeapObject::kMapOffset)); CmpWeakValue(scratch1, cell, scratch2); Jump(success, RelocInfo::CODE_TARGET, eq); bind(&fail); } void MacroAssembler::CmpWeakValue(Register value, Handle<WeakCell> cell, Register scratch, CRegister) { mov(scratch, Operand(cell)); CmpP(value, FieldMemOperand(scratch, WeakCell::kValueOffset)); } void MacroAssembler::GetWeakValue(Register value, Handle<WeakCell> cell) { mov(value, Operand(cell)); LoadP(value, FieldMemOperand(value, WeakCell::kValueOffset)); } void MacroAssembler::LoadWeakValue(Register value, Handle<WeakCell> cell, Label* miss) { GetWeakValue(value, cell); JumpIfSmi(value, miss); } void MacroAssembler::GetMapConstructor(Register result, Register map, Register temp, Register temp2) { Label done, loop; LoadP(result, FieldMemOperand(map, Map::kConstructorOrBackPointerOffset)); bind(&loop); JumpIfSmi(result, &done); CompareObjectType(result, temp, temp2, MAP_TYPE); bne(&done); LoadP(result, FieldMemOperand(result, Map::kConstructorOrBackPointerOffset)); b(&loop); bind(&done); } void MacroAssembler::CallStub(CodeStub* stub, TypeFeedbackId ast_id, Condition cond) { DCHECK(AllowThisStubCall(stub)); Call(stub->GetCode(), RelocInfo::CODE_TARGET, ast_id, cond); } void MacroAssembler::TailCallStub(CodeStub* stub, Condition cond) { Jump(stub->GetCode(), RelocInfo::CODE_TARGET, cond); } bool MacroAssembler::AllowThisStubCall(CodeStub* stub) { return has_frame_ || !stub->SometimesSetsUpAFrame(); } void MacroAssembler::TestDoubleIsInt32(DoubleRegister double_input, Register scratch1, Register scratch2, DoubleRegister double_scratch) { TryDoubleToInt32Exact(scratch1, double_input, scratch2, double_scratch); } void MacroAssembler::TestDoubleIsMinusZero(DoubleRegister input, Register scratch1, Register scratch2) { lgdr(scratch1, input); llihf(scratch2, Operand(0x80000000)); CmpP(scratch1, scratch2); } void MacroAssembler::TestDoubleSign(DoubleRegister input, Register scratch) { lgdr(scratch, input); cgfi(scratch, Operand::Zero()); } void MacroAssembler::TestHeapNumberSign(Register input, Register scratch) { LoadlW(scratch, FieldMemOperand(input, HeapNumber::kValueOffset + Register::kExponentOffset)); Cmp32(scratch, Operand::Zero()); } void MacroAssembler::TryDoubleToInt32Exact(Register result, DoubleRegister double_input, Register scratch, DoubleRegister double_scratch) { Label done; DCHECK(!double_input.is(double_scratch)); ConvertDoubleToInt64(double_input, scratch, result, double_scratch); TestIfInt32(result, r0); bne(&done); lgdr(scratch, double_scratch); cdfbr(double_scratch, scratch); cdbr(double_scratch, double_input); bind(&done); } void MacroAssembler::TryInt32Floor(Register result, DoubleRegister double_input, Register input_high, Register scratch, DoubleRegister double_scratch, Label* done, Label* exact) { DCHECK(!result.is(input_high)); DCHECK(!double_input.is(double_scratch)); Label exception; lay(sp, MemOperand(sp, -kDoubleSize)); StoreDouble(double_input, MemOperand(sp)); LoadlW(input_high, MemOperand(sp, Register::kExponentOffset)); la(sp, MemOperand(sp, kDoubleSize)); ExtractBitMask(result, input_high, HeapNumber::kExponentMask); CmpLogicalP(result, Operand(0x7ff)); beq(&exception); ConvertDoubleToInt64(double_input, scratch, result, double_scratch, kRoundToMinusInf); TestIfInt32(result, r0); bne(&exception); lgdr(scratch, double_scratch); cdfbr(double_scratch, scratch); cdbr(double_scratch, double_input); beq(exact); b(done); bind(&exception); } void MacroAssembler::TryInlineTruncateDoubleToI(Register result, DoubleRegister double_input, Label* done) { DoubleRegister double_scratch = kScratchDoubleReg; Register scratch = ip; ConvertDoubleToInt64(double_input, scratch, result, double_scratch); TestIfInt32(result, r0); beq(done); } void MacroAssembler::TruncateDoubleToI(Register result, DoubleRegister double_input) { Label done; TryInlineTruncateDoubleToI(result, double_input, &done); push(r14); lay(sp, MemOperand(sp, -kDoubleSize)); StoreDouble(double_input, MemOperand(sp)); DoubleToIStub stub(isolate(), sp, result, 0, true, true); CallStub(&stub); la(sp, MemOperand(sp, kDoubleSize)); pop(r14); bind(&done); } void MacroAssembler::TruncateHeapNumberToI(Register result, Register object) { Label done; DoubleRegister double_scratch = kScratchDoubleReg; DCHECK(!result.is(object)); LoadDouble(double_scratch, FieldMemOperand(object, HeapNumber::kValueOffset)); TryInlineTruncateDoubleToI(result, double_scratch, &done); push(r14); DoubleToIStub stub(isolate(), object, result, HeapNumber::kValueOffset - kHeapObjectTag, true, true); CallStub(&stub); pop(r14); bind(&done); } void MacroAssembler::TruncateNumberToI(Register object, Register result, Register heap_number_map, Register scratch1, Label* not_number) { Label done; DCHECK(!result.is(object)); UntagAndJumpIfSmi(result, object, &done); JumpIfNotHeapNumber(object, heap_number_map, scratch1, not_number); TruncateHeapNumberToI(result, object); bind(&done); } void MacroAssembler::GetLeastBitsFromSmi(Register dst, Register src, int num_least_bits) { if (CpuFeatures::IsSupported(GENERAL_INSTR_EXT)) { risbg(dst, src, Operand(64 - num_least_bits), Operand(63), Operand(64 - kSmiShift), true); } else { SmiUntag(dst, src); AndP(dst, Operand((1 << num_least_bits) - 1)); } } void MacroAssembler::GetLeastBitsFromInt32(Register dst, Register src, int num_least_bits) { AndP(dst, src, Operand((1 << num_least_bits) - 1)); } void MacroAssembler::CallRuntime(const Runtime::Function* f, int num_arguments, SaveFPRegsMode save_doubles) { CHECK(f->nargs < 0 || f->nargs == num_arguments); mov(r2, Operand(num_arguments)); mov(r3, Operand(ExternalReference(f, isolate()))); CEntryStub stub(isolate(), f->result_size, save_doubles); CallStub(&stub); } void MacroAssembler::CallExternalReference(const ExternalReference& ext, int num_arguments) { mov(r2, Operand(num_arguments)); mov(r3, Operand(ext)); CEntryStub stub(isolate(), 1); CallStub(&stub); } void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid) { const Runtime::Function* function = Runtime::FunctionForId(fid); DCHECK_EQ(1, function->result_size); if (function->nargs >= 0) argument
|