Merge to 3.4?

We are still seeing this on the 3.4 arm sim builder:
http://build.chromium.org/p/client.v8/builders/V8%20arm%20-%20sim%20-%203.4%20branch/builds/4/steps/Sputnik/logs/stdio

On Wed, Aug 10, 2011 at 10:05 AM,  <codesite-nore...@google.com> wrote:
> Revision: 8868
> Author:   mstarzin...@chromium.org
> Date:     Wed Aug 10 01:03:22 2011
> Log:      ARM: Fix deoptimizer for two-word call sites.
>
> R=svenpa...@chromium.org,kmilli...@chromium.org
> BUG=v8:1584
>
> Review URL: http://codereview.chromium.org/7585006
> http://code.google.com/p/v8/source/detail?r=8868
>
> Modified:
>  /branches/bleeding_edge/src/arm/deoptimizer-arm.cc
>  /branches/bleeding_edge/src/arm/macro-assembler-arm.h
>
> =======================================
> --- /branches/bleeding_edge/src/arm/deoptimizer-arm.cc  Mon Aug  8 00:34:54
> 2011
> +++ /branches/bleeding_edge/src/arm/deoptimizer-arm.cc  Wed Aug 10 01:03:22
> 2011
> @@ -65,8 +65,6 @@
>
>   // For each return after a safepoint insert an absolute call to the
>   // corresponding deoptimization entry.
> -  ASSERT(patch_size() % Assembler::kInstrSize == 0);
> -  int call_size_in_words = patch_size() / Assembler::kInstrSize;
>   unsigned last_pc_offset = 0;
>   SafepointTable table(function->code());
>   for (unsigned i = 0; i < table.length(); i++) {
> @@ -87,13 +85,18 @@
>  #endif
>     last_pc_offset = pc_offset;
>     if (deoptimization_index != Safepoint::kNoDeoptimizationIndex) {
> +      Address deoptimization_entry = Deoptimizer::GetDeoptimizationEntry(
> +          deoptimization_index, Deoptimizer::LAZY);
>       last_pc_offset += gap_code_size;
> +      int call_size_in_bytes =
> MacroAssembler::CallSize(deoptimization_entry,
> +                                                        RelocInfo::NONE);
> +      int call_size_in_words = call_size_in_bytes / Assembler::kInstrSize;
> +      ASSERT(call_size_in_bytes % Assembler::kInstrSize == 0);
> +      ASSERT(call_size_in_bytes <= patch_size());
>       CodePatcher patcher(code->instruction_start() + last_pc_offset,
>                           call_size_in_words);
> -      Address deoptimization_entry = Deoptimizer::GetDeoptimizationEntry(
> -          deoptimization_index, Deoptimizer::LAZY);
>       patcher.masm()->Call(deoptimization_entry, RelocInfo::NONE);
> -      last_pc_offset += patch_size();
> +      last_pc_offset += call_size_in_bytes;
>     }
>   }
>
> =======================================
> --- /branches/bleeding_edge/src/arm/macro-assembler-arm.h       Fri Jul  8
> 03:46:10 2011
> +++ /branches/bleeding_edge/src/arm/macro-assembler-arm.h       Wed Aug 10
> 01:03:22 2011
> @@ -92,14 +92,16 @@
>   void Jump(Register target, Condition cond = al);
>   void Jump(Address target, RelocInfo::Mode rmode, Condition cond = al);
>   void Jump(Handle<Code> code, RelocInfo::Mode rmode, Condition cond = al);
> -  int CallSize(Register target, Condition cond = al);
> +  static int CallSize(Register target, Condition cond = al);
>   void Call(Register target, Condition cond = al);
> -  int CallSize(Address target, RelocInfo::Mode rmode, Condition cond = al);
> +  static int CallSize(Address target,
> +                      RelocInfo::Mode rmode,
> +                      Condition cond = al);
>   void Call(Address target, RelocInfo::Mode rmode, Condition cond = al);
> -  int CallSize(Handle<Code> code,
> -               RelocInfo::Mode rmode = RelocInfo::CODE_TARGET,
> -               unsigned ast_id = kNoASTId,
> -               Condition cond = al);
> +  static int CallSize(Handle<Code> code,
> +                      RelocInfo::Mode rmode = RelocInfo::CODE_TARGET,
> +                      unsigned ast_id = kNoASTId,
> +                      Condition cond = al);
>   void Call(Handle<Code> code,
>             RelocInfo::Mode rmode = RelocInfo::CODE_TARGET,
>             unsigned ast_id = kNoASTId,
>
> --
> v8-dev mailing list
> v8-dev@googlegroups.com
> http://groups.google.com/group/v8-dev
>

-- 
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev

Reply via email to