[webkit-dev] JavaScriptCore Binding Problem
I've got a new IDL class I'm working of for some "experiments in XML" and I've run into an interesting snag. I have a call to a "parse" method from Javascript where the string argument seems to be getting mangled. The IDL for the method looks like: boolean parse(in DOMString str); and the call from javascript looks like: reader.parse("I am a document"); Everything else about this interface & implementation works fine. Unfortunately, for the above method, the string of XML to parse comes in as "empty". It looks to me like things are mangled in some way but I can't determine why. The generated code from the IDL is: EncodedJSValue JSC_HOST_CALL jsXMLReaderPrototypeFunctionParse(ExecState* exec) { JSValue thisValue = exec->hostThisValue(); if (!thisValue.inherits(&JSXMLReader::s_info)) return throwVMTypeError(exec); JSXMLReader* castedThis = static_cast(asObject(thisValue)); XMLReader* imp = static_cast(castedThis->impl()); const String& str = ustringToString(exec->argument(0).toString(exec)); if (exec->hadException()) return JSValue::encode(jsUndefined()); JSC::JSValue result = jsBoolean(imp->parse(str)); return JSValue::encode(result); } The 'str' object in the debugger is empty and the argument from which it is converted has a strange string of length 1 character. Any ideas how this could get mangled? Something is obviously stepping on some object but I can't see where. The other possibility is something related to JIT compiling in the Javascript environment but that is a pure guess at this point. The backtrace shows some JIT compile code in the stack. -- --Alex Milowski "The excellence of grammar as a guide is proportional to the paucity of the inflexions, i.e. to the degree of analysis effected by the language considered." Bertrand Russell in a footnote of Principles of Mathematics ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] JavaScriptCore Binding Problem
On Wed, Jan 5, 2011 at 7:38 PM, Alex Milowski wrote: > I've got a new IDL class I'm working of for some "experiments in XML" > and I've run into an interesting snag. I have a call to a "parse" > method from Javascript where the string argument seems to be getting > mangled. The IDL for the method looks like: > > boolean parse(in DOMString str); > > and the call from javascript looks like: > > reader.parse("I am a document"); > > Everything else about this interface & implementation works fine. > Unfortunately, for the above method, the string of XML to parse comes > in as "empty". It looks to me like things are mangled in some way but > I can't determine why. Just as an experiment, I set a breakpoint in the Javascript debugger inside Safari and found another interesting data point. The code in the test case goes from the source: window.onload = function() { var xml = ""; reader.parse(xml); } to this displayed in the inspector when the breakpoint is hit: window.onload = function() { var xml = ""; reader.parse(xml); } That's very strange. Any ideas of what to look at here? Could the JIT compiler for JavascriptCore be dropping/mangling the string constant somehow? -- --Alex Milowski "The excellence of grammar as a guide is proportional to the paucity of the inflexions, i.e. to the degree of analysis effected by the language considered." Bertrand Russell in a footnote of Principles of Mathematics ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Re: [webkit-dev] JavaScriptCore Binding Problem
Completely embarrassing ... but it is an XHTML file and so the markup in the string gets parsed unless I escape it ... *sigh* Too many hours wasted in the debugger on this one. :( So, it is a non-issue. Thanks to Evan Martin for pointed that out. -- --Alex Milowski "The excellence of grammar as a guide is proportional to the paucity of the inflexions, i.e. to the degree of analysis effected by the language considered." Bertrand Russell in a footnote of Principles of Mathematics ___ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev