Updates:
        Owner: [email protected]

Comment #5 on issue 1895 by [email protected]: Incorrect results with Node.js program using UglifyJS
http://code.google.com/p/v8/issues/detail?id=1895

Incorrect behavior is caused by bug in GAP size calculation for safepoint. We have code that looks like in function parenthesize:

@30 call-function ; has lazy bailout
@31 gap
@32 lazy-bailout
... ; some instructions with no safe-points
@60 instance-of-know-global ; has safe-point in deferred code
@61 gap
@62 lazy-bailout

Deferred code for instance-of-know-global is generated at the very end of code-generation after gap at @61 so it's safepoint is not seen when @61 is visited and the whole distance between @61 and @30 is recorded as gap code size for last seen safepoint which is the one in @30 call-function. Which causes us to patch code at incorrect offset when doing lazy-bailout.

This was fixed when Florian refactored lazy bailouts in r10006. We have to port this refactoring to 3.6 branch.

Big performance difference between between ia32/x64 seems to be caused by merge of arguments branch (at r8300). It seems there is a small piece of code missing from full codegen on x64 there. I'll verify that.

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

Reply via email to