[-v8-dev, +v8-users] Golem run of this (before some cleanup): http://golem.spb:9013/v8/r6100-v8-sgjesse-instanceof-deferred-3-vs-6100-v8.html
/Søren On Wed, Dec 22, 2010 at 13:27, <[email protected]> wrote: > Reviewers: Kevin Millikin, Mads Ager, > > Description: > Optimize instanceof further > > If the instance of is performed against what is beliwed to be a constant > global > function inline the instance of check and have the call to the instanceof > stub > in deferred code. The inlined check will be patched by the instanceof stub > when > called from deferred code. This is indicated by the lithium instruction > LInstanceOfKnownGlobal. > > To help the patching the delta from the return address to the patch site is > placed just below the return address in the edi slot of the pushad/popad > ares. > This is safe because the edi register (which is pushed last) is a temporary > for > the lithium instruction. > > As the instanceof stub can call other JavaScript an additional marking for > saving all double registers have been added. > > Also tweaked the instanceof stub to produce true/false objects instead of > 0/1 > for the case with deferred code. > > Please review this at http://codereview.chromium.org/5990005/ > > SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ > > Affected files: > M src/code-stubs.h > M src/hydrogen-instructions.h > M src/hydrogen.cc > M src/ia32/code-stubs-ia32.cc > M src/ia32/full-codegen-ia32.cc > M src/ia32/lithium-codegen-ia32.h > M src/ia32/lithium-codegen-ia32.cc > M src/ia32/lithium-ia32.h > M src/ia32/lithium-ia32.cc > M src/lithium-allocator.h > M src/lithium-allocator.cc > M src/v8-counters.h > > > -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users
