LGTM.

Was there any slowdown on delta blue?

On Wed, Sep 24, 2008 at 8:07 AM, Dean McNamee <[EMAIL PROTECTED]> wrote:

> I lied, this does decrease code size, because it eliminates the
> backward jmp from the deferred code.  So as is, it should save us 5
> bytes per stack check.
>
> On a run of delta-blue (I have no idea if this is a good benchmark for
> this), total bytes emitted before: 89881 after: 89282.  Not a huge
> savings (~0.7%).  When using a short jmp encoding (what this change
> makes possible), it results in 88667 bytes, which is maybe a bit
> better (~1.3%).
>
> On Wed, Sep 24, 2008 at 3:46 PM, Dean McNamee <[EMAIL PROTECTED]> wrote:
> > So this reversing the forward branch from being likely not taken to
> > likely taken, so that might throw off static branch prediction?  Will
> > be interesting to see if there are any performance changes on
> > benchmarks.
> >
> > On Wed, Sep 24, 2008 at 3:04 PM,  <[EMAIL PROTECTED]> wrote:
> >> Reviewers: Kasper Lund, Kevin Millikin,
> >>
> >> Message:
> >> I imagine this was originally done with some reason, we now have more
> >> code in the main body, where before the stack failure call would have
> >> been pushed to the bottom.  However, we will save 4 bytes when we can
> >> use a short jcc, so this will mean it's only 1 byte more in the main
> >> body, and nothing at the end, so I think it's a definite win.
> >>
> >> Description:
> >> Don't defer the stack check failure code.  It is a CallStub, which will
> >> be a single 5 byte call instruction.  This should cause equivalent code
> >> size now, but opens up the opportunity to make one of the most common
> >> jcc's to use short encoding in the future.
> >>
> >> Please review this at http://codereview.chromium.org/4066
> >>
> >> Affected files:
> >>  M src/codegen-ia32.cc
> >>
> >>
> >> Index: src/codegen-ia32.cc
> >> diff --git a/src/codegen-ia32.cc b/src/codegen-ia32.cc
> >> index
> >>
> 6a522c57988ef2a97ca16d61019c7c62256054b1..ce1bce6fe88c0a8c6855e64aac9517c8b3a99f45
> >> 100644
> >> --- a/src/codegen-ia32.cc
> >> +++ b/src/codegen-ia32.cc
> >> @@ -2660,30 +2660,16 @@ void Ia32CodeGenerator::Branch(bool if_true,
> Label*
> >> L) {
> >>  }
> >>
> >>
> >> -class StackCheckDeferred: public DeferredCode {
> >> - public:
> >> -  explicit StackCheckDeferred(CodeGenerator* generator)
> >> -      : DeferredCode(generator) {
> >> -    set_comment("[ StackCheckDeferred");
> >> -  }
> >> -  virtual void Generate();
> >> -};
> >> -
> >> -
> >> -void StackCheckDeferred::Generate() {
> >> -  StackCheckStub stub;
> >> -  __ CallStub(&stub);
> >> -}
> >> -
> >> -
> >>  void Ia32CodeGenerator::CheckStack() {
> >>   if (FLAG_check_stack) {
> >> -    StackCheckDeferred* deferred = new StackCheckDeferred(this);
> >> +    Label stack_is_ok;
> >> +    StackCheckStub stub;
> >>     ExternalReference stack_guard_limit =
> >>         ExternalReference::address_of_stack_guard_limit();
> >>     __ cmp(esp, Operand::StaticVariable(stack_guard_limit));
> >> -    __ j(below, deferred->enter(), not_taken);
> >> -    __ bind(deferred->exit());
> >> +    __ j(above_equal, &stack_is_ok, taken);
> >> +    __ CallStub(&stub);
> >> +    __ bind(&stack_is_ok);
> >>   }
> >>  }
> >>
> >>
> >>
> >>
> >
>



-- 
Google Denmark ApS
CVR nr. 28 86 69 84
c/o Philip & Partners, 7 Vognmagergade, P.O. Box 2227, DK-1018 Copenhagen K,
Denmark

--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to