summaryrefslogtreecommitdiff
path: root/deps/v8/src/codegen/mips/macro-assembler-mips.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/codegen/mips/macro-assembler-mips.cc')
-rw-r--r--deps/v8/src/codegen/mips/macro-assembler-mips.cc33
1 files changed, 21 insertions, 12 deletions
diff --git a/deps/v8/src/codegen/mips/macro-assembler-mips.cc b/deps/v8/src/codegen/mips/macro-assembler-mips.cc
index 483b7e895b..79373c1b5b 100644
--- a/deps/v8/src/codegen/mips/macro-assembler-mips.cc
+++ b/deps/v8/src/codegen/mips/macro-assembler-mips.cc
@@ -189,7 +189,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
Label ok;
And(t8, dst, Operand(kPointerSize - 1));
Branch(&ok, eq, t8, Operand(zero_reg));
- stop("Unaligned cell in write barrier");
+ stop();
bind(&ok);
}
@@ -3974,18 +3974,22 @@ void TurboAssembler::Call(Handle<Code> code, RelocInfo::Mode rmode,
Call(code.address(), rmode, cond, rs, rt, bd);
}
-void TurboAssembler::CallBuiltinPointer(Register builtin_pointer) {
+void TurboAssembler::LoadEntryFromBuiltinIndex(Register builtin_index) {
STATIC_ASSERT(kSystemPointerSize == 4);
STATIC_ASSERT(kSmiShiftSize == 0);
STATIC_ASSERT(kSmiTagSize == 1);
STATIC_ASSERT(kSmiTag == 0);
- // The builtin_pointer register contains the builtin index as a Smi.
- SmiUntag(builtin_pointer, builtin_pointer);
- Lsa(builtin_pointer, kRootRegister, builtin_pointer, kSystemPointerSizeLog2);
- lw(builtin_pointer,
- MemOperand(builtin_pointer, IsolateData::builtin_entry_table_offset()));
- Call(builtin_pointer);
+ // The builtin_index register contains the builtin index as a Smi.
+ SmiUntag(builtin_index, builtin_index);
+ Lsa(builtin_index, kRootRegister, builtin_index, kSystemPointerSizeLog2);
+ lw(builtin_index,
+ MemOperand(builtin_index, IsolateData::builtin_entry_table_offset()));
+}
+
+void TurboAssembler::CallBuiltinByIndex(Register builtin_index) {
+ LoadEntryFromBuiltinIndex(builtin_index);
+ Call(builtin_index);
}
void TurboAssembler::StoreReturnAddressAndCall(Register target) {
@@ -4111,6 +4115,11 @@ void MacroAssembler::Swap(Register reg1, Register reg2, Register scratch) {
void TurboAssembler::Call(Label* target) { BranchAndLink(target); }
+void TurboAssembler::LoadAddress(Register dst, Label* target) {
+ uint32_t address = jump_address(target);
+ li(dst, address);
+}
+
void TurboAssembler::Push(Handle<HeapObject> handle) {
UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire();
@@ -4694,15 +4703,15 @@ void TurboAssembler::Check(Condition cc, AbortReason reason, Register rs,
void TurboAssembler::Abort(AbortReason reason) {
Label abort_start;
bind(&abort_start);
- const char* msg = GetAbortReason(reason);
#ifdef DEBUG
+ const char* msg = GetAbortReason(reason);
RecordComment("Abort message: ");
RecordComment(msg);
#endif
// Avoid emitting call to builtin if requested.
if (trap_on_abort()) {
- stop(msg);
+ stop();
return;
}
@@ -4938,7 +4947,7 @@ void MacroAssembler::AssertStackIsAligned() {
andi(scratch, sp, frame_alignment_mask);
Branch(&alignment_as_expected, eq, scratch, Operand(zero_reg));
// Don't use Check here, as it will call Runtime_Abort re-entering here.
- stop("Unexpected stack alignment");
+ stop();
bind(&alignment_as_expected);
}
}
@@ -5352,7 +5361,7 @@ void TurboAssembler::CallCFunctionHelper(Register function_base,
Branch(&alignment_as_expected, eq, scratch, Operand(zero_reg));
// Don't use Check here, as it will call Runtime_Abort possibly
// re-entering here.
- stop("Unexpected alignment in CallCFunction");
+ stop();
bind(&alignment_as_expected);
}
}