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-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to