@harbs

FYI in addition to some other stuff, I am close to pushing my updates to
XML. This should be in the next hour or so.

I kept the QName caching pretty close to how you had it, with only some
minor changes.
I tried to do some extra memory optimization, and in theory it should
provide better results, but to be honest I don't have a good way to measure
this in the browser. I tried the Chrome performance.memory extensions but I
don't have much confidence in that given how much it varies between reloads
without changing anything else. The extra code changes I made were to make
the '_nodeKind' strings into String object references, so they only refer
to a single reference to a string instead of multiple copies of primitives.
That change is isolated to a single commit so can easily be reversed if
there is something not good about it... but all my local tests continue to
pass. I will get the new tests into RoyaleUnit in the coming days.




On Thu, Sep 5, 2019 at 7:39 AM Greg Dove <[email protected]> wrote:

> Yeah, I saw that ;) Don't worry, I am aware of it.
>
> My first goal is to make sure it works like it should, because that comes
> first, and then to optimize. I'll check the memory side of things and make
> sure it's at least the same as before. If you can point me to some
> publicly accessible large test cases that would be really helpful. I will
> work through that before I push anything.
>
> On Thu, Sep 5, 2019 at 7:26 AM Harbs <[email protected]> wrote:
>
>> Heads up:
>>
>> I did some (on first blush) odd things in XML related to QNames. QNames
>> are pooled and many XML properties are not initialized by default. The
>> reason I did this was it avoided many MB of memory waste for complex XML.
>> Please don’t mess that up.
>>
>> Thanks,
>> Harbs
>>
>> > On Sep 4, 2019, at 1:02 PM, Greg Dove <[email protected]> wrote:
>> >
>> > This is particularly for Harbs and Yishay, as I think you are both (or
>> both
>> > have been) using XML quite a bit. I have quite a few  fixes coming. All
>> > with tests that match on swf and js.
>> >
>> > I am currently working to demonstrate proof of concept to a prospective
>> > client for migration of a Flex app. The app makes extensive use of e4x
>> and
>> > uses a bunch of features that I expect had not received attention
>> > previously, because they were originally either not working with the
>> > codebase I am porting, or i think some even caused errors in the
>> javascript
>> > output.
>> >
>> > So I have spent the last several days almost full time figuring things
>> out
>> > and working on fixes, between the compiler and emulation classes.
>> > All the previous XML tests continue to pass, but I have many more unit
>> > tests and fixes lined up for the following:
>> >
>> > namespace directives
>> > default xml namespace
>> > use namespace (multiple)
>> >
>> > a number of fixes for xml filtering, including:
>> > -'this' resolves correctly in filters that include external references
>> from
>> > the fitler expression to the 'this' scope
>> > -handles alternate ordering of comparisons between XML 'getters' and
>> > literals
>> > e.g. something.(name() = "cat")  or something.("cat" = name()) (these
>> are
>> > the same)
>> > -it (will) now handle XML e4x references in nested function calls inside
>> > the filter, e.g. things like:
>> > e.g.
>> > var people:XML = <people>
>> >                <person>
>> >                    <name>Bob</name>
>> >                    <age>32</age>
>> >                </person>
>> >                <person>
>> >                    <name>Joe</name>
>> >                    <age>46</age>
>> >                </person>
>> >            </people>;
>> > var findJoeByAge:Function = function (i:int):Boolean {
>> >                return i > 40;
>> >            };
>> > people.person.(findJoeByAge(parseInt(age))).name
>> >
>> >
>> > I have lots more granular tests in QName, Namespace, and XML with
>> tuning to
>> > improve reliability.
>> > toXMLString XML node output also matches flash more correctly in what I
>> > have coming.
>> >
>> > One thing that I am trying to figure out, which I would appreciate
>> input on
>> > if someone has an answer:
>> > For the example:
>> >
>> > var feed:XML = new XML(
>> >                    '<feed xmlns:atom="http://www.w3.org/2005/Atom";
>> > xmlns:m="nothing">\n' +
>> >                    '  <link rel="no_namespace"
>> > href="blah/12321/domain/"/>\n' +
>> >                    '</feed>\n');
>> > var atomSpace:Namespace = new Namespace('http://www.w3.org/2005/Atom');
>> >
>> > Can anyone explain why this (in SWF, as a reference implementation):
>> > trace(feed.atomSpace::link.length())
>> > trace(feed.atomSpace::link.toXMLString())
>> > //output:
>> > 0
>> > {empty string}
>> > is different to:
>> > trace(feed.child(new QName(atomSpace,'link')).length())
>> > trace(feed.child(new QName(atomSpace,'link')).toXMLString())
>> > //output:
>> > 1
>> > <link rel="no_namespace" href="blah/12321/domain/" xmlns:atom="
>> > http://www.w3.org/2005/Atom"; xmlns:m="nothing"/>
>> >
>> > I had assumed the above cases would be the same, but the second one is
>> > behaving as if it has the default namespace included with the specified
>> > namespace in the QName matching (it does correctly match the namespace
>> > specifically as well -with e.g. <atom:link nodes where the prefix atom
>> is
>> > bound to the uri, but also seems to include link nodes with the default
>> > namespace, whether or not it is declared). I can accommodate this
>> > difference to make them behave the same, I just would like to understand
>> > the basis for the actual rules if anyone knows....
>> >
>> > I should be in a position to push the updates this coming weekend I
>> think.
>>
>>

Reply via email to