Reviewers: jbramley, Sven Panne, yurys,
Message:
PTAL
Description:
CpuProfiler: slightly reduce the size of JumpTable code.
BUG=chromium:452067
LOG=n
[email protected], [email protected], [email protected]
Please review this at https://codereview.chromium.org/995813002/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+7, -12 lines):
M src/arm64/lithium-codegen-arm64.cc
Index: src/arm64/lithium-codegen-arm64.cc
diff --git a/src/arm64/lithium-codegen-arm64.cc
b/src/arm64/lithium-codegen-arm64.cc
index
196a5400c38eab21051b53618454e00495f2dea4..7cc58161aa4fd794df7ca248b67176f48b163639
100644
--- a/src/arm64/lithium-codegen-arm64.cc
+++ b/src/arm64/lithium-codegen-arm64.cc
@@ -842,7 +842,7 @@ bool LCodeGen::GenerateDeferredCode() {
bool LCodeGen::GenerateJumpTable() {
- Label needs_frame, restore_caller_doubles, call_deopt_entry;
+ Label needs_frame, call_deopt_entry;
if (jump_table_.length() > 0) {
Comment(";;; -------------------- Jump table --------------------");
@@ -866,14 +866,11 @@ bool LCodeGen::GenerateJumpTable() {
if (table_entry->needs_frame) {
DCHECK(!info()->saves_caller_doubles());
+ Comment(";;; call deopt with frame");
// Save lr before Bl, fp will be adjusted in the needs_frame code.
__ Push(lr, fp, cp);
// Reuse the existing needs_frame code.
__ Bl(&needs_frame);
- } else if (info()->saves_caller_doubles()) {
- DCHECK(info()->IsStub());
- // Reuse the existing restore_caller_doubles code.
- __ Bl(&restore_caller_doubles);
} else {
// There is nothing special to do, so just continue to the
second-level
// table.
@@ -896,19 +893,17 @@ bool LCodeGen::GenerateJumpTable() {
__ Mov(stub_marker, Smi::FromInt(StackFrame::STUB));
__ Push(stub_marker);
__ Add(fp, __ StackPointer(), 2 * kPointerSize);
- if (restore_caller_doubles.is_linked()) {
- __ B(&call_deopt_entry);
- }
}
- if (restore_caller_doubles.is_linked()) {
- __ Bind(&restore_caller_doubles);
+ // Generate common code for calling the second-level deopt table.
+ __ Bind(&call_deopt_entry);
+
+ if (info()->saves_caller_doubles()) {
+ DCHECK(info()->IsStub());
RestoreCallerDoubles();
}
- // Generate common code for calling the second-level deopt table.
Register deopt_entry = temps.AcquireX();
- __ Bind(&call_deopt_entry);
__ Mov(deopt_entry, Operand(reinterpret_cast<uint64_t>(base),
RelocInfo::RUNTIME_ENTRY));
__ Add(deopt_entry, deopt_entry, entry_offset);
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.