[Webkit-unassigned] [Bug 17510] Acid3 test 26 takes >33ms

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon May 26 15:58:07 PDT 2008


http://bugs.webkit.org/show_bug.cgi?id=17510





------- Comment #40 from mjs at apple.com  2008-05-26 15:58 PDT -------
(In reply to comment #39)
> As for E, I believe that type specialization in the bytecode engine would
> naturally remove all string wrappers created by 
> 
> "iteration " + i + " at " + d
> 
> Since "iteration" and " at " are known strings at compile time, we know that
> this expression is a string add, so i and d should produce strings, not generic
> values.

i and d have to produce generic values first because they have to go through
toString/valueOf. d in particular has a custom toString() function in this
case, so that's not just a theoretical issue. This approach would in theory be
able to remove the same temporary wrappers as my proposed multi-concatenation
opcode, but not the UString temporaries. So I think optimizing multiple
concatenations might be worthwhile even when we have type specialization.

> We would still need to create a string wrapper for the sake of calling
> createTextNode, though. Specializing for the expected types of arbitrary DOM
> APIs would be very hard. (I'm not even sure how we would do that.)

If registers are type-coded in an obvious way, then it could still be a UString
in the arguments vector. However, UString is problematic to use in register
values at all because of the refcounting. Unlike primitive values or JSValue*,
when a register containing such a value is killed we'd have to deref.


-- 
Configure bugmail: http://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the webkit-unassigned mailing list