[Webkit-unassigned] [Bug 19408] Constant folding in parser

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Jun 9 06:48:23 PDT 2008


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


darin at apple.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #21527|review?                     |review-
               Flag|                            |




------- Comment #3 from darin at apple.com  2008-06-09 06:48 PDT -------
(From update of attachment 21527)
The general approach looks OK.

Here's a quick pass of review.

+    OP_UN_PLUS,         /* '+'   */

For an enum like this, there's no reason to use the ALL_CAPS style. That's
usually reserved for macros, where you're concerned about conflict with other
identifiers, ignoring namespaces. You should also abbreviate less. I think:

    operatorUnaryPlus

is just fine, and OP_UN_PLUS is not really better.

+static ExpressionNode* foldConst(char, ExpressionNode*, ExpressionNode*);

"char" is not the right type to use here. You should give the enum type a name
and use that type. Even if you did want to use a type in the "char" family, it
would probably be unsigned char. Since "char" is signed or unsigned depending
on the compiler.

+                                          if ((en = foldConst(OP_UN_LNOT,
$2.m_node, NULL)))

We use "0" in JavaScriptCore, not NULL.

+        if (typeid(*m1) == typeid(StringNode) && typeid(*m2) ==
typeid(StringNode)) {

There's no RTTI in WebCore so you can't use typeid. If you want to find the
type of a node, you'll need to add an isStringNode() function. But that's a
good thing, because a virtual function call is faster than a typeid check on
most compilers.

+            UString s1 = ((StringNode*)m1)->value();

We use C++ style casts, such as static_cast, not C style casts like this.

+static ExpressionNode* foldConst(char op, ExpressionNode* m1, ExpressionNode*
m2)

I think it would be best to put these functions in a different file rather than
at the bottom of the grammar.

It's critical to use SunSpider and see how this constant folding affects speed
on the benchmark.


-- 
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