diff options
Diffstat (limited to 'deps/v8/src/s390/macro-assembler-s390.cc')
-rw-r--r-- | deps/v8/src/s390/macro-assembler-s390.cc | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/deps/v8/src/s390/macro-assembler-s390.cc b/deps/v8/src/s390/macro-assembler-s390.cc index 50db39c6b5..ad074026e1 100644 --- a/deps/v8/src/s390/macro-assembler-s390.cc +++ b/deps/v8/src/s390/macro-assembler-s390.cc @@ -161,7 +161,7 @@ void TurboAssembler::Call(Register target) { } void MacroAssembler::CallJSEntry(Register target) { - DCHECK(target == ip); + DCHECK(target == r4); Call(target); } @@ -1216,29 +1216,14 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected, void MacroAssembler::CheckDebugHook(Register fun, Register new_target, const ParameterCount& expected, const ParameterCount& actual) { - Label skip_hook, call_hook; - - ExternalReference debug_is_active = - ExternalReference::debug_is_active_address(isolate()); - mov(r6, Operand(debug_is_active)); - tm(MemOperand(r6), Operand::Zero()); - bne(&skip_hook); + Label skip_hook; ExternalReference debug_hook_avtive = ExternalReference::debug_hook_on_function_call_address(isolate()); mov(r6, Operand(debug_hook_avtive)); tm(MemOperand(r6), Operand::Zero()); - beq(&call_hook); - - LoadP(r6, FieldMemOperand(fun, JSFunction::kSharedFunctionInfoOffset)); - LoadP(r6, FieldMemOperand(r6, SharedFunctionInfo::kDebugInfoOffset)); - JumpIfSmi(r6, &skip_hook); - LoadP(r6, FieldMemOperand(r6, DebugInfo::kFlagsOffset)); - SmiUntag(r0, r6); - tmll(r0, Operand(DebugInfo::kBreakAtEntry)); - beq(&skip_hook); + bne(&skip_hook); - bind(&call_hook); { FrameScope frame(this, has_frame() ? StackFrame::NONE : StackFrame::INTERNAL); @@ -1538,12 +1523,20 @@ void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin, Jump(stub.GetCode(), RelocInfo::CODE_TARGET); } -void MacroAssembler::JumpToInstructionStream(const InstructionStream* stream) { - intptr_t bytes_address = reinterpret_cast<intptr_t>(stream->bytes()); - mov(kOffHeapTrampolineRegister, Operand(bytes_address)); +void MacroAssembler::JumpToInstructionStream(Address entry) { + mov(kOffHeapTrampolineRegister, + Operand(reinterpret_cast<intptr_t>(entry), RelocInfo::OFF_HEAP_TARGET)); Jump(kOffHeapTrampolineRegister); } +void MacroAssembler::LoadWeakValue(Register out, Register in, + Label* target_if_cleared) { + CmpP(in, Operand(kClearedWeakHeapObject)); + beq(target_if_cleared); + + AndP(out, in, Operand(~kWeakHeapObjectMask)); +} + void MacroAssembler::IncrementCounter(StatsCounter* counter, int value, Register scratch1, Register scratch2) { DCHECK(value > 0 && is_int8(value)); @@ -1661,6 +1654,18 @@ void MacroAssembler::AssertFixedArray(Register object) { } } +void MacroAssembler::AssertConstructor(Register object, Register scratch) { + if (emit_debug_code()) { + STATIC_ASSERT(kSmiTag == 0); + TestIfSmi(object); + Check(ne, AbortReason::kOperandIsASmiAndNotAConstructor); + LoadP(scratch, FieldMemOperand(object, HeapObject::kMapOffset)); + tm(FieldMemOperand(scratch, Map::kBitFieldOffset), + Operand(Map::IsConstructorBit::kMask)); + Check(ne, AbortReason::kOperandIsNotAConstructor); + } +} + void MacroAssembler::AssertFunction(Register object) { if (emit_debug_code()) { STATIC_ASSERT(kSmiTag == 0); @@ -4288,6 +4293,10 @@ void TurboAssembler::ResetSpeculationPoisonRegister() { mov(kSpeculationPoisonRegister, Operand(-1)); } +void TurboAssembler::ComputeCodeStartAddress(Register dst) { + larl(dst, Operand(-pc_offset() / 2)); +} + } // namespace internal } // namespace v8 |