[Webkit-unassigned] [Bug 15884] New: JavaScriptCore should use simple type inferencing to speed-up AddNode

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Nov 7 07:28:15 PST 2007


           Summary: JavaScriptCore should use simple type inferencing to
                    speed-up AddNode
           Product: WebKit
           Version: 525+ (Nightly build)
          Platform: Macintosh
        OS/Version: Mac OS X 10.4
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: JavaScriptCore
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: eric at webkit.org

JavaScriptCore should use simple type inferencing to speed-up AddNode (and
other nodes which depend on input types).

I propose that this type inferencing be done in a separate walk of the AST
tree, instead of at parse time.  That makes it easier to do const collapsing
and const propagation before the type inferencing pass.  Maybe all of these get
rolled into a single "optimize" pass in the end.

In this optimize method, we would inference the types of the node children
(recursive call, probably) and then use that information to infer the types of
this node.  Often the child node information is not needed to inferring the
type, but propagating the call down the tree is needed for a full tree walk. 
Based on the types, we would then placement new a more specific node instead of
the generic AddNodeObjects (see below).

The idea is to have AddNodeObjects AddNodeNumbers AddNodeStrings, where Objects
is where you have to call toPrimative first on both, Strings you only need to
call evaluate() and cast to a StringImp and grab the value, we could add
StringLeft and StringRight for the cases where one of them is a string and the
other is not, but I think that'd be overkill for the first pass.

Numeric would be the big speedup, because you'd just immediately call
evaluateToNumber (once bug 15879 is in) and not only would the AddNodeNumbers
have no branches for types, but it would also be dealing with doubles directly
(in both the evaluate and evaluateToNumber cases).

Other nodes could do the same sort of thing for a speedup, the comparison Nodes
being a good example.

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