LGTM and the ARM code already deals with the stack checks differently so no need to mess with that.
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); > } > } > > > > > > > --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
