Open
Bug 1230640
Opened 9 years ago
Updated 2 years ago
Add intrinsic for checking the DOM protochain
Categories
(Core :: JavaScript Engine, defect)
Core
JavaScript Engine
Tracking
()
NEW
People
(Reporter: mwu, Unassigned)
References
(Blocks 1 open bug)
Details
Attachments
(1 file, 1 obsolete file)
7.87 KB,
patch
|
Details | Diff | Splinter Review |
This is useful for writing self hosting DOM. Not sure if I like the name of the intrinsic, but it seems more descriptive than instanceClassMatchesProto. Planning to add tests after bug 1224722 lands, but I've verified that this works as expected with some simple self hosted DOM prototypes.
Comment 1•9 years ago
|
||
A few notes: 1) The naming weirdness comes from the fact that this is not checking the actual proto chain. It's checking whether the default proto chain for the object would have our proto on it. 2) Do we want this to work on the level of "two integers" or "jitinfo" or "the callee function"?
Reporter | ||
Comment 2•9 years ago
|
||
(In reply to Boris Zbarsky [:bz] from comment #1) > 1) The naming weirdness comes from the fact that this is not checking the > actual proto chain. It's checking whether the default proto chain for the > object would have our proto on it. > CheckOriginalDOMProtochain? I'll take any suggestions for an alternate name. :) > 2) Do we want this to work on the level of "two integers" or "jitinfo" or > "the callee function"? This takes an object and two integers and passes them to the instanceClassMatchesProto callback set by the JSAPI user, so I assume "two integers"? In the self hosted DOM code, it looks something like: if (!CheckDOMProtochain(this, 112, 1)) ThrowTypeError("\"this\" object does not implement interface Node.");
Comment 3•9 years ago
|
||
> This takes an object and two integers
Right, I did see that.
I guess if you're codegenning the caller two integers makes sense.
Reporter | ||
Comment 4•9 years ago
|
||
Yup - I have codegen that takes care of these things. For example - function KeyboardEvent_fn_initKeyboardEvent(typeArg, bubblesArg, cancelableArg, viewArg, keyArg, locationArg, modifiersListArg, repeat, locale) { if (!CheckDOMProtochain(this, 106, 2)) ThrowTypeError("\"this\" object does not implement interface KeyboardEvent."); if (arguments.length < 9) ThrowTypeError("Not enough arguments to \"KeyboardEvent.initKeyboardEvent\"."); typeArg = ToString(typeArg); bubblesArg = ToBoolean(bubblesArg); cancelableArg = ToBoolean(cancelableArg); if (viewArg !== void 0 && viewArg !== null) { if (!CheckDOMProtochain(viewArg, 147, 1)) ThrowTypeError("\"this\" object does not implement interface Window."); } keyArg = ToString(keyArg); locationArg = ToWebidlUnsignedLong(locationArg); modifiersListArg = ToString(modifiersListArg); repeat = ToBoolean(repeat); locale = ToString(locale); return KeyboardEventImpl_fn_initKeyboardEvent(new KeyboardEvent(this), typeArg, bubblesArg, cancelableArg, viewArg, keyArg, locationArg, modifiersListArg, repeat, locale); }
Reporter | ||
Comment 5•9 years ago
|
||
This adds some inlining support. Haven't had a chance to check if it actually works, but it compiles. Putting it here in case someone who knows how this works wants to comment on it before I get to testing it.
Attachment #8695999 -
Attachment is obsolete: true
Reporter | ||
Comment 6•9 years ago
|
||
I've confirmed that the inlining support works, so I just need to figure out how to write a test for this.
Updated•3 years ago
|
Blocks: dom-requests
Comment 7•2 years ago
|
||
The bug assignee didn't login in Bugzilla in the last 7 months.
:sdetar, could you have a look please?
For more information, please visit auto_nag documentation.
Assignee: mwu.code → nobody
Flags: needinfo?(sdetar)
Updated•2 years ago
|
Flags: needinfo?(sdetar)
Updated•2 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•