mjs at apple.com
Sun Aug 2 08:44:44 PDT 2009
On Aug 2, 2009, at 2:44 AM, Adam Barth wrote:
> On Sun, Aug 2, 2009 at 2:09 AM, Darin Adler<darin at apple.com> wrote:
>> On Aug 2, 2009, at 2:05 AM, Adam Barth wrote:
>>> In any case:
>>> I'll have a patch shortly. Please let me know if there are other
>>> sites you'd like changed.
>> Thanks! Once you pointed out this was not due to a recent change, I
>> resolved to fix it myself, but I’m glad you’re going to tackle it.
>> Generally speaking no call site that has a Node* should call
>> scriptExecutionContext(). So rather than listing the call sites I
>> changed, I’d instead suggest that we make
>> private and then make sure no Node member functions or members
>> functions of
>> friend classes call the function.
> I tried this, and it looks like there are a bunch of instances in the
> generated bindings that weren't found by cscope. Basically, this line
> of CodeGeneartorJS needs to know whether impl is a subclass of Node*:
> push(@implContent, " JSDOMGlobalObject* globalObject =
> It's a bit too late at night for me to wrap my mind around the code
> generator, but that's a clear next step.
I think the code generator doesn't try to track the whole class
hierarchy. Probably a simpler way to achieve the goal here would be
with overloaded inline functions, so the C++ type system can do the
inline ScriptExecutionContext* scriptExecutionContext(EventTarget* et)
inline Document* scriptExecutionContext(Node* n)
Alternately, EventTarget could have an inline nonvirtual member
function that calls the virtual member function, and Node could
override it with one that calls document().
More information about the webkit-dev