[turbofan] Add CalleeSavedFPRegisters to CallDescriptor.
authorakos.palfi <akos.palfi@imgtec.com>
Tue, 30 Jun 2015 13:22:36 +0000 (06:22 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 30 Jun 2015 13:22:50 +0000 (13:22 +0000)
This change makes possible to save and restore the FP registers
in the Prologue and Return parts for the CallAddress kind functions.

TEST=test-simplified-lowering/RunNumberDivide_2_TruncatingToUint32,
     test-simplified-lowering/RunNumberMultiply_TruncatingToUint32

Review URL: https://codereview.chromium.org/1191513003

Cr-Commit-Position: refs/heads/master@{#29378}

16 files changed:
src/compiler/arm/code-generator-arm.cc
src/compiler/arm/linkage-arm.cc
src/compiler/arm64/code-generator-arm64.cc
src/compiler/arm64/linkage-arm64.cc
src/compiler/ia32/linkage-ia32.cc
src/compiler/linkage-impl.h
src/compiler/linkage.h
src/compiler/mips/code-generator-mips.cc
src/compiler/mips/linkage-mips.cc
src/compiler/mips64/code-generator-mips64.cc
src/compiler/mips64/linkage-mips64.cc
src/compiler/ppc/linkage-ppc.cc
src/compiler/x64/code-generator-x64.cc
src/compiler/x64/linkage-x64.cc
test/cctest/cctest.status
test/unittests/compiler/tail-call-optimization-unittest.cc

index a73c895b286716ed24e5fb7564135456760273ae..b9cc354b2321cd70d74670396661ce486ee8d923 100644 (file)
@@ -962,16 +962,28 @@ void CodeGenerator::AssemblePrologue() {
       __ mov(fp, sp);
       saved_pp = false;
     }
+    int register_save_area_size = saved_pp ? kPointerSize : 0;
     const RegList saves = descriptor->CalleeSavedRegisters();
     if (saves != 0 || saved_pp) {
       // Save callee-saved registers.
-      int register_save_area_size = saved_pp ? kPointerSize : 0;
-      for (int i = Register::kNumRegisters - 1; i >= 0; i--) {
-        if (!((1 << i) & saves)) continue;
-        register_save_area_size += kPointerSize;
-      }
-      frame()->SetRegisterSaveAreaSize(register_save_area_size);
       __ stm(db_w, sp, saves);
+      register_save_area_size +=
+          kPointerSize * base::bits::CountPopulation32(saves);
+    }
+    const RegList saves_fp = descriptor->CalleeSavedFPRegisters();
+    if (saves_fp != 0) {
+      // Save callee-saved FP registers.
+      STATIC_ASSERT(DwVfpRegister::kMaxNumRegisters == 32);
+      uint32_t last = base::bits::CountLeadingZeros32(saves_fp) - 1;
+      uint32_t first = base::bits::CountTrailingZeros32(saves_fp);
+      DCHECK_EQ((last - first + 1), base::bits::CountPopulation32(saves_fp));
+
+      __ vstm(db_w, sp, DwVfpRegister::from_code(first),
+              DwVfpRegister::from_code(last));
+      register_save_area_size += 2 * kPointerSize * (last - first + 1);
+    }
+    if (register_save_area_size > 0) {
+      frame()->SetRegisterSaveAreaSize(register_save_area_size);
     }
   } else if (descriptor->IsJSFunctionCall()) {
     CompilationInfo* info = this->info();
@@ -1015,6 +1027,15 @@ void CodeGenerator::AssembleReturn() {
       if (stack_slots > 0) {
         __ add(sp, sp, Operand(stack_slots * kPointerSize));
       }
+      // Restore FP registers.
+      const RegList saves_fp = descriptor->CalleeSavedFPRegisters();
+      if (saves_fp != 0) {
+        STATIC_ASSERT(DwVfpRegister::kMaxNumRegisters == 32);
+        uint32_t last = base::bits::CountLeadingZeros32(saves_fp) - 1;
+        uint32_t first = base::bits::CountTrailingZeros32(saves_fp);
+        __ vldm(ia_w, sp, DwVfpRegister::from_code(first),
+                DwVfpRegister::from_code(last));
+      }
       // Restore registers.
       const RegList saves = descriptor->CalleeSavedRegisters();
       if (saves != 0) {
index fcf6187804e4be65ea16761bb37259c4dc22a53b..a923f1bf8d140f0cc1d0fe1c91f45125973727cf 100644 (file)
@@ -23,6 +23,11 @@ struct ArmLinkageHelperTraits {
     return r4.bit() | r5.bit() | r6.bit() | r7.bit() | r8.bit() | r9.bit() |
            r10.bit();
   }
+  static RegList CCalleeSaveFPRegisters() {
+    return (1 << d8.code()) | (1 << d9.code()) | (1 << d10.code()) |
+           (1 << d11.code()) | (1 << d12.code()) | (1 << d13.code()) |
+           (1 << d14.code()) | (1 << d15.code());
+  }
   static Register CRegisterParameter(int i) {
     static Register register_parameters[] = {r0, r1, r2, r3};
     return register_parameters[i];
index 8692732112708148b11c9d2824ef67ddf58f7435..fa5743ab8e4d38865959b139b880d58c9801bf08 100644 (file)
@@ -1094,9 +1094,23 @@ void CodeGenerator::AssemblePrologue() {
     __ SetStackPointer(csp);
     __ Push(lr, fp);
     __ Mov(fp, csp);
-    // TODO(dcarney): correct callee saved registers.
-    __ PushCalleeSavedRegisters();
-    frame()->SetRegisterSaveAreaSize(20 * kPointerSize);
+
+    // Save FP registers.
+    CPURegList saves_fp = CPURegList(CPURegister::kFPRegister, kDRegSizeInBits,
+                                     descriptor->CalleeSavedFPRegisters());
+    DCHECK(saves_fp.list() == CPURegList::GetCalleeSavedFP().list());
+    int saved_count = saves_fp.Count();
+    __ PushCPURegList(saves_fp);
+    // Save registers.
+    CPURegList saves = CPURegList(CPURegister::kRegister, kXRegSizeInBits,
+                                  descriptor->CalleeSavedRegisters());
+    // TODO(palfia): TF save list is not in sync with
+    // CPURegList::GetCalleeSaved(): x30 is missing.
+    // DCHECK(saves.list() == CPURegList::GetCalleeSaved().list());
+    saved_count += saves.Count();
+    __ PushCPURegList(saves);
+
+    frame()->SetRegisterSaveAreaSize(saved_count * kPointerSize);
   } else if (descriptor->IsJSFunctionCall()) {
     CompilationInfo* info = this->info();
     __ SetStackPointer(jssp);
@@ -1145,10 +1159,18 @@ void CodeGenerator::AssembleReturn() {
       if (stack_slots > 0) {
         __ Add(csp, csp, AlignedStackSlots(stack_slots) * kPointerSize);
       }
+
       // Restore registers.
-      // TODO(dcarney): correct callee saved registers.
-      __ PopCalleeSavedRegisters();
+      CPURegList saves = CPURegList(CPURegister::kRegister, kXRegSizeInBits,
+                                    descriptor->CalleeSavedRegisters());
+      __ PopCPURegList(saves);
+
+      CPURegList saves_fp =
+          CPURegList(CPURegister::kFPRegister, kDRegSizeInBits,
+                     descriptor->CalleeSavedFPRegisters());
+      __ PopCPURegList(saves_fp);
     }
+
     __ Mov(csp, fp);
     __ Pop(fp, lr);
     __ Ret();
index 036da0f1bd221668cf2db28437dd0cd7024976f0..afedefbbd161055b32ba94269bd5b2acf071f785 100644 (file)
@@ -20,8 +20,15 @@ struct Arm64LinkageHelperTraits {
   static Register RuntimeCallFunctionReg() { return x1; }
   static Register RuntimeCallArgCountReg() { return x0; }
   static RegList CCalleeSaveRegisters() {
-    // TODO(dcarney): correct callee saved registers.
-    return 0;
+    return (1 << x19.code()) | (1 << x20.code()) | (1 << x21.code()) |
+           (1 << x22.code()) | (1 << x23.code()) | (1 << x24.code()) |
+           (1 << x25.code()) | (1 << x26.code()) | (1 << x27.code()) |
+           (1 << x28.code()) | (1 << x29.code()) | (1 << x30.code());
+  }
+  static RegList CCalleeSaveFPRegisters() {
+    return (1 << d8.code()) | (1 << d9.code()) | (1 << d10.code()) |
+           (1 << d11.code()) | (1 << d12.code()) | (1 << d13.code()) |
+           (1 << d14.code()) | (1 << d15.code());
   }
   static Register CRegisterParameter(int i) {
     static Register register_parameters[] = {x0, x1, x2, x3, x4, x5, x6, x7};
index 400d7a8cc80bc5cfb3546737b3d66b11b8d5bccf..930a86c69f9b5b72e8f0344d911fc8556f0290db 100644 (file)
@@ -22,6 +22,7 @@ struct IA32LinkageHelperTraits {
   static RegList CCalleeSaveRegisters() {
     return esi.bit() | edi.bit() | ebx.bit();
   }
+  static RegList CCalleeSaveFPRegisters() { return 0; }
   static Register CRegisterParameter(int i) { return no_reg; }
   static int CRegisterParametersLength() { return 0; }
   static int CStackBackingStoreLength() { return 0; }
index a648148be4b57c9f2fc9a65f64e83e04ed99e126..a28f1d322e1a7aabdc8c306cdf3b81db9b9a5092 100644 (file)
@@ -70,6 +70,7 @@ class LinkageHelper {
         js_parameter_count,               // js_parameter_count
         Operator::kNoProperties,          // properties
         kNoCalleeSaved,                   // callee-saved
+        kNoCalleeSaved,                   // callee-saved fp
         flags,                            // flags
         "js-call");
   }
@@ -131,6 +132,7 @@ class LinkageHelper {
         js_parameter_count,               // js_parameter_count
         properties,                       // properties
         kNoCalleeSaved,                   // callee-saved
+        kNoCalleeSaved,                   // callee-saved fp
         flags,                            // flags
         function->name);                  // debug name
   }
@@ -191,6 +193,7 @@ class LinkageHelper {
         js_parameter_count,               // js_parameter_count
         properties,                       // properties
         kNoCalleeSaved,                   // callee-saved registers
+        kNoCalleeSaved,                   // callee-saved fp
         flags,                            // flags
         descriptor.DebugName(isolate));
   }
@@ -217,16 +220,17 @@ class LinkageHelper {
     // The target for C calls is always an address (i.e. machine pointer).
     MachineType target_type = kMachPtr;
     LinkageLocation target_loc = LinkageLocation::AnyRegister();
-    return new (zone) CallDescriptor(           // --
-        CallDescriptor::kCallAddress,           // kind
-        target_type,                            // target MachineType
-        target_loc,                             // target location
-        msig,                                   // machine_sig
-        locations.Build(),                      // location_sig
-        0,                                      // js_parameter_count
-        Operator::kNoProperties,                // properties
-        LinkageTraits::CCalleeSaveRegisters(),  // callee-saved registers
-        CallDescriptor::kNoFlags,               // flags
+    return new (zone) CallDescriptor(             // --
+        CallDescriptor::kCallAddress,             // kind
+        target_type,                              // target MachineType
+        target_loc,                               // target location
+        msig,                                     // machine_sig
+        locations.Build(),                        // location_sig
+        0,                                        // js_parameter_count
+        Operator::kNoProperties,                  // properties
+        LinkageTraits::CCalleeSaveRegisters(),    // callee-saved registers
+        LinkageTraits::CCalleeSaveFPRegisters(),  // callee-saved fp regs
+        CallDescriptor::kNoFlags,                 // flags
         "c-call");
   }
 
index 9f01f32f4bd0d74f64d9547443dc5174e5e08a2b..ea130d7ddf1df33cd1d497f3a391864732720e99 100644 (file)
@@ -83,7 +83,8 @@ class CallDescriptor final : public ZoneObject {
                  const MachineSignature* machine_sig,
                  LocationSignature* location_sig, size_t js_param_count,
                  Operator::Properties properties,
-                 RegList callee_saved_registers, Flags flags,
+                 RegList callee_saved_registers,
+                 RegList callee_saved_fp_registers, Flags flags,
                  const char* debug_name = "")
       : kind_(kind),
         target_type_(target_type),
@@ -93,6 +94,7 @@ class CallDescriptor final : public ZoneObject {
         js_param_count_(js_param_count),
         properties_(properties),
         callee_saved_registers_(callee_saved_registers),
+        callee_saved_fp_registers_(callee_saved_fp_registers),
         flags_(flags),
         debug_name_(debug_name) {
     DCHECK(machine_sig->return_count() == location_sig->return_count());
@@ -156,6 +158,9 @@ class CallDescriptor final : public ZoneObject {
   // Get the callee-saved registers, if any, across this call.
   RegList CalleeSavedRegisters() const { return callee_saved_registers_; }
 
+  // Get the callee-saved FP registers, if any, across this call.
+  RegList CalleeSavedFPRegisters() const { return callee_saved_fp_registers_; }
+
   const char* debug_name() const { return debug_name_; }
 
   bool UsesOnlyRegisters() const;
@@ -173,6 +178,7 @@ class CallDescriptor final : public ZoneObject {
   const size_t js_param_count_;
   const Operator::Properties properties_;
   const RegList callee_saved_registers_;
+  const RegList callee_saved_fp_registers_;
   const Flags flags_;
   const char* const debug_name_;
 
index a49ec4e9f2f18352955d6d8ec12331049610be12..8bb47ef4f79e3fcc0196dd23e10b9d57f0df1850 100644 (file)
@@ -1078,17 +1078,20 @@ void CodeGenerator::AssemblePrologue() {
   if (descriptor->kind() == CallDescriptor::kCallAddress) {
     __ Push(ra, fp);
     __ mov(fp, sp);
+
     const RegList saves = descriptor->CalleeSavedRegisters();
-    if (saves != 0) {  // Save callee-saved registers.
-      // TODO(plind): make callee save size const, possibly DCHECK it.
-      int register_save_area_size = 0;
-      for (int i = Register::kNumRegisters - 1; i >= 0; i--) {
-        if (!((1 << i) & saves)) continue;
-        register_save_area_size += kPointerSize;
-      }
-      frame()->SetRegisterSaveAreaSize(register_save_area_size);
-      __ MultiPush(saves);
-    }
+    // Save callee-saved registers.
+    __ MultiPush(saves);
+    DCHECK(kNumCalleeSaved == base::bits::CountPopulation32(saves));
+    int register_save_area_size = kNumCalleeSaved * kPointerSize;
+
+    const RegList saves_fpu = descriptor->CalleeSavedFPRegisters();
+    // Save callee-saved FPU registers.
+    __ MultiPushFPU(saves_fpu);
+    DCHECK(kNumCalleeSavedFPU == base::bits::CountPopulation32(saves_fpu));
+    register_save_area_size += kNumCalleeSavedFPU * kDoubleSize * kPointerSize;
+
+    frame()->SetRegisterSaveAreaSize(register_save_area_size);
   } else if (descriptor->IsJSFunctionCall()) {
     CompilationInfo* info = this->info();
     __ Prologue(info->IsCodePreAgingActive());
@@ -1131,11 +1134,13 @@ void CodeGenerator::AssembleReturn() {
       if (stack_slots > 0) {
         __ Addu(sp, sp, Operand(stack_slots * kPointerSize));
       }
-      // Restore registers.
+      // Restore FPU registers.
+      const RegList saves_fpu = descriptor->CalleeSavedFPRegisters();
+      __ MultiPopFPU(saves_fpu);
+
+      // Restore GP registers.
       const RegList saves = descriptor->CalleeSavedRegisters();
-      if (saves != 0) {
-        __ MultiPop(saves);
-      }
+      __ MultiPop(saves);
     }
     __ mov(sp, fp);
     __ Pop(ra, fp);
index 3378213af3237f5fd9651c60ba9afd4667e4da2e..7b03340a0aa0913fa5489cd65d3c254cc65429d3 100644 (file)
@@ -23,6 +23,10 @@ struct MipsLinkageHelperTraits {
     return s0.bit() | s1.bit() | s2.bit() | s3.bit() | s4.bit() | s5.bit() |
            s6.bit() | s7.bit();
   }
+  static RegList CCalleeSaveFPRegisters() {
+    return f20.bit() | f22.bit() | f24.bit() | f26.bit() | f28.bit() |
+           f30.bit();
+  }
   static Register CRegisterParameter(int i) {
     static Register register_parameters[] = {a0, a1, a2, a3};
     return register_parameters[i];
index 74adbf4d2eec1bc232a513adf014affc9c429219..cb465f2d3ed6b069837f9d05074a66f06f711f11 100644 (file)
@@ -1151,17 +1151,20 @@ void CodeGenerator::AssemblePrologue() {
   if (descriptor->kind() == CallDescriptor::kCallAddress) {
     __ Push(ra, fp);
     __ mov(fp, sp);
+
     const RegList saves = descriptor->CalleeSavedRegisters();
-    if (saves != 0) {  // Save callee-saved registers.
-      // TODO(plind): make callee save size const, possibly DCHECK it.
-      int register_save_area_size = 0;
-      for (int i = Register::kNumRegisters - 1; i >= 0; i--) {
-        if (!((1 << i) & saves)) continue;
-        register_save_area_size += kPointerSize;
-      }
-      frame()->SetRegisterSaveAreaSize(register_save_area_size);
-      __ MultiPush(saves);
-    }
+    // Save callee-saved registers.
+    __ MultiPush(saves);
+    DCHECK(kNumCalleeSaved == base::bits::CountPopulation32(saves));
+    int register_save_area_size = kNumCalleeSaved * kPointerSize;
+
+    const RegList saves_fpu = descriptor->CalleeSavedFPRegisters();
+    // Save callee-saved FPU registers.
+    __ MultiPushFPU(saves_fpu);
+    DCHECK(kNumCalleeSavedFPU == base::bits::CountPopulation32(saves_fpu));
+    register_save_area_size += kNumCalleeSavedFPU * kDoubleSize * kPointerSize;
+
+    frame()->SetRegisterSaveAreaSize(register_save_area_size);
   } else if (descriptor->IsJSFunctionCall()) {
     CompilationInfo* info = this->info();
     __ Prologue(info->IsCodePreAgingActive());
@@ -1204,11 +1207,13 @@ void CodeGenerator::AssembleReturn() {
       if (stack_slots > 0) {
         __ Daddu(sp, sp, Operand(stack_slots * kPointerSize));
       }
-      // Restore registers.
+      // Restore FPU registers.
+      const RegList saves_fpu = descriptor->CalleeSavedFPRegisters();
+      __ MultiPopFPU(saves_fpu);
+
+      // Restore GP registers.
       const RegList saves = descriptor->CalleeSavedRegisters();
-      if (saves != 0) {
-        __ MultiPop(saves);
-      }
+      __ MultiPop(saves);
     }
     __ mov(sp, fp);
     __ Pop(ra, fp);
index 52eded235294466698f5fa22d62061773fd89829..acfedb715f5bac43b72a9dff2a4beb7bd283ea50 100644 (file)
@@ -23,6 +23,10 @@ struct MipsLinkageHelperTraits {
     return s0.bit() | s1.bit() | s2.bit() | s3.bit() | s4.bit() | s5.bit() |
            s6.bit() | s7.bit();
   }
+  static RegList CCalleeSaveFPRegisters() {
+    return f20.bit() | f22.bit() | f24.bit() | f26.bit() | f28.bit() |
+           f30.bit();
+  }
   static Register CRegisterParameter(int i) {
     static Register register_parameters[] = {a0, a1, a2, a3, a4, a5, a6, a7};
     return register_parameters[i];
index 36fd10cd36919ac0b5cd16387a2aa73af788d7f2..677e9d0e6c6c609bafdd89ed0d142afbd4898bf9 100644 (file)
@@ -25,6 +25,7 @@ struct PPCLinkageHelperTraits {
            r24.bit() | r25.bit() | r26.bit() | r27.bit() | r28.bit() |
            r29.bit() | r30.bit() | fp.bit();
   }
+  static RegList CCalleeSaveFPRegisters() { return 0; }
   static Register CRegisterParameter(int i) {
     static Register register_parameters[] = {r3, r4, r5, r6, r7, r8, r9, r10};
     return register_parameters[i];
index d86c50aa2f6a5c47d7b949fcdc6a7783892201fc..50eb64cceddfa826641e69d36600cd757b1daa49 100644 (file)
@@ -1469,14 +1469,31 @@ void CodeGenerator::AssemblePrologue() {
   if (descriptor->kind() == CallDescriptor::kCallAddress) {
     __ pushq(rbp);
     __ movq(rbp, rsp);
+    int register_save_area_size = 0;
     const RegList saves = descriptor->CalleeSavedRegisters();
     if (saves != 0) {  // Save callee-saved registers.
-      int register_save_area_size = 0;
       for (int i = Register::kNumRegisters - 1; i >= 0; i--) {
         if (!((1 << i) & saves)) continue;
         __ pushq(Register::from_code(i));
         register_save_area_size += kPointerSize;
       }
+    }
+    const RegList saves_fp = descriptor->CalleeSavedFPRegisters();
+    if (saves_fp != 0) {  // Save callee-saved XMM registers.
+      const uint32_t saves_fp_count = base::bits::CountPopulation32(saves_fp);
+      const int stack_size = saves_fp_count * 16;
+      // Adjust the stack pointer.
+      __ subp(rsp, Immediate(stack_size));
+      // Store the registers on the stack.
+      int slot_idx = 0;
+      for (int i = 0; i < XMMRegister::kMaxNumRegisters; i++) {
+        if (!((1 << i) & saves_fp)) continue;
+        __ movdqu(Operand(rsp, 16 * slot_idx), XMMRegister::from_code(i));
+        slot_idx++;
+      }
+      register_save_area_size += stack_size;
+    }
+    if (register_save_area_size > 0) {
       frame()->SetRegisterSaveAreaSize(register_save_area_size);
     }
   } else if (descriptor->IsJSFunctionCall()) {
@@ -1521,8 +1538,22 @@ void CodeGenerator::AssembleReturn() {
       if (stack_slots > 0) {
         __ addq(rsp, Immediate(stack_slots * kPointerSize));
       }
-      const RegList saves = descriptor->CalleeSavedRegisters();
       // Restore registers.
+      const RegList saves_fp = descriptor->CalleeSavedFPRegisters();
+      if (saves_fp != 0) {
+        const uint32_t saves_fp_count = base::bits::CountPopulation32(saves_fp);
+        const int stack_size = saves_fp_count * 16;
+        // Load the registers from the stack.
+        int slot_idx = 0;
+        for (int i = 0; i < XMMRegister::kMaxNumRegisters; i++) {
+          if (!((1 << i) & saves_fp)) continue;
+          __ movdqu(XMMRegister::from_code(i), Operand(rsp, 16 * slot_idx));
+          slot_idx++;
+        }
+        // Adjust the stack pointer.
+        __ addp(rsp, Immediate(stack_size));
+      }
+      const RegList saves = descriptor->CalleeSavedRegisters();
       if (saves != 0) {
         for (int i = 0; i < Register::kNumRegisters; i++) {
           if (!((1 << i) & saves)) continue;
index 87e8ca57f028dd4019c263194605ad9f9daddad3..b272eb6f7668229a40b886bf292c3ad4320e0572 100644 (file)
@@ -33,6 +33,16 @@ struct X64LinkageHelperTraits {
       return rbx.bit() | r12.bit() | r13.bit() | r14.bit() | r15.bit();
     }
   }
+  static RegList CCalleeSaveFPRegisters() {
+    if (kWin64) {
+      return (1 << xmm6.code()) | (1 << xmm7.code()) | (1 << xmm8.code()) |
+             (1 << xmm9.code()) | (1 << xmm10.code()) | (1 << xmm11.code()) |
+             (1 << xmm12.code()) | (1 << xmm13.code()) | (1 << xmm14.code()) |
+             (1 << xmm15.code());
+    } else {
+      return 0;
+    }
+  }
   static Register CRegisterParameter(int i) {
     if (kWin64) {
       static Register register_parameters[] = {rcx, rdx, r8, r9};
index 0686205e9d2d46ba7edfcda049653e3f69b1e793..68c570edcc56071af2c2714ac74426befd9afb01 100644 (file)
   'test-api/ExternalArrays': [PASS, NO_VARIANTS],
 
   # TODO(mips-team): Currently fails on mips board.
-  'test-simplified-lowering/RunNumberMultiply_TruncatingToUint32': [SKIP],
-  'test-simplified-lowering/RunNumberDivide_2_TruncatingToUint32': [SKIP],
   'test-parsing/TooManyArguments': [SKIP],
   'test-api/Threading3': [SKIP],
 }],  # 'arch == mips'
index b8f38602e86c0615e360402573fa3cbe1435714c..449299bb1d1489a8cf787818c6674c50ced7097f 100644 (file)
@@ -33,7 +33,7 @@ TEST_F(TailCallOptimizationTest, CallCodeObject0) {
       CallDescriptor::kCallCodeObject, kMachAnyTagged, LinkageLocation(0),
       new (zone()) MachineSignature(1, 1, kMachineSignature),
       new (zone()) LocationSignature(1, 1, kLocationSignature), 0,
-      Operator::kNoProperties, 0, CallDescriptor::kNoFlags);
+      Operator::kNoProperties, 0, 0, CallDescriptor::kNoFlags);
   Node* p0 = Parameter(0);
   Node* p1 = Parameter(1);
   Node* call = graph()->NewNode(common()->Call(kCallDescriptor), p0, p1,
@@ -53,7 +53,7 @@ TEST_F(TailCallOptimizationTest, CallCodeObject1) {
       CallDescriptor::kCallCodeObject, kMachAnyTagged, LinkageLocation(0),
       new (zone()) MachineSignature(1, 1, kMachineSignature),
       new (zone()) LocationSignature(1, 1, kLocationSignature), 0,
-      Operator::kNoProperties, 0, CallDescriptor::kSupportsTailCalls);
+      Operator::kNoProperties, 0, 0, CallDescriptor::kSupportsTailCalls);
   Node* p0 = Parameter(0);
   Node* p1 = Parameter(1);
   Node* call = graph()->NewNode(common()->Call(kCallDescriptor), p0, p1,
@@ -77,7 +77,7 @@ TEST_F(TailCallOptimizationTest, CallCodeObject2) {
       CallDescriptor::kCallCodeObject, kMachAnyTagged, LinkageLocation(0),
       new (zone()) MachineSignature(1, 1, kMachineSignature),
       new (zone()) LocationSignature(1, 1, kLocationSignature), 0,
-      Operator::kNoProperties, 0, CallDescriptor::kSupportsTailCalls);
+      Operator::kNoProperties, 0, 0, CallDescriptor::kSupportsTailCalls);
   Node* p0 = Parameter(0);
   Node* p1 = Parameter(1);
   Node* call = graph()->NewNode(common()->Call(kCallDescriptor), p0, p1,
@@ -99,7 +99,7 @@ TEST_F(TailCallOptimizationTest, CallJSFunction0) {
       CallDescriptor::kCallJSFunction, kMachAnyTagged, LinkageLocation(0),
       new (zone()) MachineSignature(1, 1, kMachineSignature),
       new (zone()) LocationSignature(1, 1, kLocationSignature), 0,
-      Operator::kNoProperties, 0, CallDescriptor::kNoFlags);
+      Operator::kNoProperties, 0, 0, CallDescriptor::kNoFlags);
   Node* p0 = Parameter(0);
   Node* p1 = Parameter(1);
   Node* call = graph()->NewNode(common()->Call(kCallDescriptor), p0, p1,
@@ -119,7 +119,7 @@ TEST_F(TailCallOptimizationTest, CallJSFunction1) {
       CallDescriptor::kCallJSFunction, kMachAnyTagged, LinkageLocation(0),
       new (zone()) MachineSignature(1, 1, kMachineSignature),
       new (zone()) LocationSignature(1, 1, kLocationSignature), 0,
-      Operator::kNoProperties, 0, CallDescriptor::kSupportsTailCalls);
+      Operator::kNoProperties, 0, 0, CallDescriptor::kSupportsTailCalls);
   Node* p0 = Parameter(0);
   Node* p1 = Parameter(1);
   Node* call = graph()->NewNode(common()->Call(kCallDescriptor), p0, p1,
@@ -143,7 +143,7 @@ TEST_F(TailCallOptimizationTest, CallJSFunction2) {
       CallDescriptor::kCallJSFunction, kMachAnyTagged, LinkageLocation(0),
       new (zone()) MachineSignature(1, 1, kMachineSignature),
       new (zone()) LocationSignature(1, 1, kLocationSignature), 0,
-      Operator::kNoProperties, 0, CallDescriptor::kSupportsTailCalls);
+      Operator::kNoProperties, 0, 0, CallDescriptor::kSupportsTailCalls);
   Node* p0 = Parameter(0);
   Node* p1 = Parameter(1);
   Node* call = graph()->NewNode(common()->Call(kCallDescriptor), p0, p1,