summaryrefslogtreecommitdiff
path: root/deps/v8/src/s390/macro-assembler-s390.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/s390/macro-assembler-s390.cc')
-rw-r--r--deps/v8/src/s390/macro-assembler-s390.cc51
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