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.

Reply via email to