92 Commits

Author SHA1 Message Date
bzbarsky%mit.edu
b683cb9ca0 Backing out to fix orange till I can sort it out.
git-svn-id: svn://10.0.0.236/trunk@173785 18797224-902f-48f8-a5cc-f745e15eee43
2005-05-26 14:41:34 +00:00
bzbarsky%mit.edu
3413d8b3ce Don't pin object atoms, since those can entrain all sorts of other stuff. Bug
294893 some more, r=brendan, sr=jst, a=brendan


git-svn-id: svn://10.0.0.236/trunk@173784 18797224-902f-48f8-a5cc-f745e15eee43
2005-05-26 13:27:57 +00:00
brendan%mozilla.org
b00be2c34e Use 64-bit-friendly ptr/int macros.
git-svn-id: svn://10.0.0.236/trunk@172374 18797224-902f-48f8-a5cc-f745e15eee43
2005-04-17 18:17:23 +00:00
brendan%mozilla.org
34f783aecc Fast followup to uninitialized ok blunder in last checkin.
git-svn-id: svn://10.0.0.236/trunk@172360 18797224-902f-48f8-a5cc-f745e15eee43
2005-04-17 04:30:30 +00:00
brendan%mozilla.org
d39010e14b Finish implementing Descendants, handle the neglected XMLList case (290481, r/a=me).
git-svn-id: svn://10.0.0.236/trunk@172308 18797224-902f-48f8-a5cc-f745e15eee43
2005-04-15 20:32:15 +00:00
brendan%mozilla.org
dcec8e9b6a Fix bugs due to errata in ECMA-357 10.2.1, 13.4.4.35 and 13.4.4.36 (290056, r/a=me).
git-svn-id: svn://10.0.0.236/trunk@172048 18797224-902f-48f8-a5cc-f745e15eee43
2005-04-12 22:42:57 +00:00
brendan%mozilla.org
c72802fb50 Fix to late-night goof in xml_contains (289790, r/a=me).
git-svn-id: svn://10.0.0.236/trunk@171925 18797224-902f-48f8-a5cc-f745e15eee43
2005-04-10 15:21:47 +00:00
brendan%mozilla.org
2302371c63 Fix incomplete/buggy Equals (278706, reporter=Martin.Honnen@arcor.de, r/a=me).
git-svn-id: svn://10.0.0.236/trunk@171912 18797224-902f-48f8-a5cc-f745e15eee43
2005-04-09 17:59:21 +00:00
brendan%mozilla.org
d5d9fd7006 Fix property lookup so function::name can be found in a filtering predicate expression.
git-svn-id: svn://10.0.0.236/trunk@171502 18797224-902f-48f8-a5cc-f745e15eee43
2005-04-02 06:37:45 +00:00
brendan%mozilla.org
9e7ea0c918 Fix unique attribute {uri, localName} bug (283972) and follow the spec on escaping > (264369).
git-svn-id: svn://10.0.0.236/trunk@171459 18797224-902f-48f8-a5cc-f745e15eee43
2005-04-01 17:23:12 +00:00
brendan%mozilla.org
9634bd6656 - Fix longstanding goof in js_PushLocalRoot, where m (n % local-root-chunk)
was returned rather than n (the index of lrs->scopeMark).  I'm mortified.
- Followup fix to GC local rooting fix in ParseNodeToXML -- missed a few
  early returns from what used to be no-local-roots switch cases.


git-svn-id: svn://10.0.0.236/trunk@171301 18797224-902f-48f8-a5cc-f745e15eee43
2005-03-29 01:40:30 +00:00
brendan%mozilla.org
3afd105310 - Revert recent change to js_NewXMLSpecialObject API, it was based on me
misreading the spec.
- Improve XML constant folding by decompiling CDATA, comments, and PIs in
  non-constant XML literals -- those containing {embedded-expressions}.
- Fix GC local rooting in ParseNodeToXML, it was pretty broken.


git-svn-id: svn://10.0.0.236/trunk@171290 18797224-902f-48f8-a5cc-f745e15eee43
2005-03-28 23:12:42 +00:00
brendan%mozilla.org
15dded316e Make top-level PIs and comments respect their XML.ignore* flags (246441 cont'd).
git-svn-id: svn://10.0.0.236/trunk@171250 18797224-902f-48f8-a5cc-f745e15eee43
2005-03-27 20:18:51 +00:00
brendan%mozilla.org
2a5109d847 Deal with undefined as well as empty namespace prefix in GetNamespace (283349, r=igor, sr=shaver).
git-svn-id: svn://10.0.0.236/trunk@169808 18797224-902f-48f8-a5cc-f745e15eee43
2005-02-25 01:19:35 +00:00
brendan%mozilla.org
79703d738d Implement specialized Deutsch-Schorr-Waite under js_MarkXML to avoid stack overflow (280844, r=igor, sr=shaver).
git-svn-id: svn://10.0.0.236/trunk@169743 18797224-902f-48f8-a5cc-f745e15eee43
2005-02-24 05:24:26 +00:00
brendan%mozilla.org
f28b3a67cf Fix GC_MARK_DEBUG-#ifdef'd code for E4X (timeless private bug).
git-svn-id: svn://10.0.0.236/trunk@168606 18797224-902f-48f8-a5cc-f745e15eee43
2005-02-01 02:35:31 +00:00
brendan%mozilla.org
75a81797dd Fix XMLToXMLString to cope with a tag name in a default namespace that is not the declared default namespace for the tag (277779, r=shaver).
git-svn-id: svn://10.0.0.236/trunk@168039 18797224-902f-48f8-a5cc-f745e15eee43
2005-01-20 01:02:49 +00:00
brendan%mozilla.org
49bb804dd3 Disallow PIs with target name 'xml' (277683, r=shaver).
git-svn-id: svn://10.0.0.236/trunk@168037 18797224-902f-48f8-a5cc-f745e15eee43
2005-01-20 00:56:34 +00:00
brendan%mozilla.org
e42d9e5d98 Enforce Unique Att Spec for XML in JS (277664, r=shaver).
git-svn-id: svn://10.0.0.236/trunk@168036 18797224-902f-48f8-a5cc-f745e15eee43
2005-01-20 00:50:59 +00:00
brendan%mozilla.org
1d650f0dcd Allow xml:lang and other xml namespace ids (277650, r=shaver).
git-svn-id: svn://10.0.0.236/trunk@168035 18797224-902f-48f8-a5cc-f745e15eee43
2005-01-20 00:46:17 +00:00
brendan%mozilla.org
a8e2a690ad Revamp the GC to fix E4X private data dueling GC bugs, to reduce malloc costs for small-ish objects and functions, and to pave the way for further GC wins (123668, r=shaver, TAKE 2).
git-svn-id: svn://10.0.0.236/trunk@167293 18797224-902f-48f8-a5cc-f745e15eee43
2005-01-05 06:15:03 +00:00
brendan%mozilla.org
4c0635a125 Back out, broke liveconnect at least.
git-svn-id: svn://10.0.0.236/trunk@167288 18797224-902f-48f8-a5cc-f745e15eee43
2005-01-05 03:58:19 +00:00
brendan%mozilla.org
7a816352a4 Revamp the GC to fix E4X private data dueling GC bugs, to reduce malloc costs for small-ish objects and functions, and to pave the way for further GC wins (123668, r=shaver).
git-svn-id: svn://10.0.0.236/trunk@167286 18797224-902f-48f8-a5cc-f745e15eee43
2005-01-05 02:56:36 +00:00
brendan%mozilla.org
d4ef2cd49b Fix a bogus assertion and related bogus code that bit dmose (246441).
git-svn-id: svn://10.0.0.236/trunk@167233 18797224-902f-48f8-a5cc-f745e15eee43
2005-01-03 23:57:56 +00:00
brendan%mozilla.org
d5179325c1 - Fix GetNamespace to conform to the NOTE in ECMA-357 13.3.5.4 Step 4(a).
- Fix XMLToXMLString bug where ancdecls was not updated with a weak ref append
  when a namespace strong ref was appended to decls.  In ECMA-357, ancdecls is
  written out as (AncestorNamespaces U namespaceDeclarations), but here where
  ancestorNSes and decls are unioned early into ancdecls, we need to update
  the unioned set whenever decls is updated.

- Fix ECMA-357 glitch (suboptimal, arguably not an erratum) in ToXMLString
  where XML that uses the default namespace only is converted via toXMLString
  into a string serialization that redeclares that namespace using generated
  prefixes, for every node in the tree.  This is verbose, inefficient, and
  unnecessary.  A trivial tweak to 10.2.1 Step 12(a), to let namespace.prefix
  be the empty string if x.[[Name]].[[Prefix]] is undefined, fixes the bug.

- Const-ipate JSXMLArray * parameters starting with XMLToXMLString's, to be
  sure no one appends a strong ref to a weak-ref-holding |in| parameter.


git-svn-id: svn://10.0.0.236/trunk@167162 18797224-902f-48f8-a5cc-f745e15eee43
2005-01-01 17:27:41 +00:00
brendan%mozilla.org
8876e0283c Fix bogus assertion.
git-svn-id: svn://10.0.0.236/trunk@167145 18797224-902f-48f8-a5cc-f745e15eee43
2005-01-01 05:45:55 +00:00
brendan%mozilla.org
efe8514031 Refine last checkin's change to GetNamespace in light of Erratum (246441).
git-svn-id: svn://10.0.0.236/trunk@167134 18797224-902f-48f8-a5cc-f745e15eee43
2004-12-31 08:30:01 +00:00
brendan%mozilla.org
98899e99fb Default namespace and off-by-1 GeneratePrefix fixes (246441).
git-svn-id: svn://10.0.0.236/trunk@167128 18797224-902f-48f8-a5cc-f745e15eee43
2004-12-31 05:27:50 +00:00
brendan%mozilla.org
8f105e9b3c Propagate TCF_HAS_DEFXMLNS from parser to constant folder; call js_Mark from xml_mark (246441, r=shaver).
git-svn-id: svn://10.0.0.236/trunk@167107 18797224-902f-48f8-a5cc-f745e15eee43
2004-12-30 17:44:41 +00:00
brendan%mozilla.org
1c273e83ad Comment fixes/tweaks.
git-svn-id: svn://10.0.0.236/trunk@166906 18797224-902f-48f8-a5cc-f745e15eee43
2004-12-21 01:54:53 +00:00
brendan%mozilla.org
4b542c831d Tighten up js_IsXMLName error-suppressing logic a bit.
git-svn-id: svn://10.0.0.236/trunk@166859 18797224-902f-48f8-a5cc-f745e15eee43
2004-12-18 20:31:38 +00:00
brendan%mozilla.org
555021e00b - Added strict warning "reference to undefined XML name {0}" to cope with
ECMA-357 botch where * or @b or (given valid namespace reference n) n::id
  results in undefined, instead of a TypeError.

- Lazily bootstrap AnyName and AttributeName classes, instead of leaving the
  former uninitialized, and initializing the latter only if QName is init'ed.
  These classes, representing ECMA-357 internal types, must be initialized
  in order to string conversion and default value on them to return useful
  results.  So this change also requires the shared qname_toString to cope
  with these classes, which ape QName in having a JSXMLQName as private data.

- Revise Filtering Predicate Expressions bytecode schema to avoid bogo-script
  creating in js_FilterXMLObject.  With a new JSOP_ENDFILTER bytecode acting
  in lieu of JSOP_POPV, but also exiting the nested js_Interpret() call, the
  runtime can avoid trying to fake a JSScript for the subsequence of script
  bytecode in parens in x.(e), that contains the bytecode for e plus the pop
  or endfilter op.

  This requires a historic reparameterization of js_Interpret to take the
  starting pc!  I cleaned up order of declaration, use, and useless init nits
  for a few variables while messing with it.

- Based on the above change, fix the decompiler to handle filtered predicate
  expressions -- that code was stubbed out till now, and I forgot to go back.
  All better now, especially thanks to JSOP_ENDFILTER.

- Also while fixing filtered predicates, eliminate the useless TOK_RP parse
  node above the parenthesized expression, to avoid a JSOP_GROUP bytecode.

- Fix js_GetAttributeNameObject so it doesn't take over its QName parameter's
  object and rebind it to an object of class AttributeName -- instead, clone
  the qn if necessary.  This is important to cope with the errata, noticed a
  while ago but finally recorded:

9.2.1.2 Step 2(e)(i, ii),
9.2.1.2 Step 7(e)(i),
9.2.1.3 Step 2(b)(ii)(1)(a)
        All uses of a.[[Name]] for an attribute a in these sections that pass
        that QName object to [[Delete]] must pass an AttributeName cloned from
        a.[[Name]].  The [[Name]] internal property is always a QName instance
        and never an AttributeName or AnyName instance.  But [[Delete]] will
        not operate on x.[[Attributes]] when given a QName by these sections,
        so a child could be wrongly deleted instead of the attribute of the
        same name.

  This rework exposed a bug in the XML.prototype.name() impl, where it was
  returning an AttributeName, not a QName, for attribute-class XML objects.
  Clearly wrong -- the E4X spec makes plain early on that [[Name]] is always
  a QName -- but the spec and e4x testsuite seemed to require it due to the
  above-noted errata.


git-svn-id: svn://10.0.0.236/trunk@166845 18797224-902f-48f8-a5cc-f745e15eee43
2004-12-18 02:28:21 +00:00
brendan%mozilla.org
f28e3637eb Expand tabs.
git-svn-id: svn://10.0.0.236/trunk@166467 18797224-902f-48f8-a5cc-f745e15eee43
2004-12-09 01:32:19 +00:00
brendan%mozilla.org
5c8a062a04 Scanner fixes for better diagnostics; XML/XMLList parent() fixes to match spec and fixed tests (246411, r=self).
git-svn-id: svn://10.0.0.236/trunk@165900 18797224-902f-48f8-a5cc-f745e15eee43
2004-11-29 20:48:56 +00:00
brendan%mozilla.org
2e6bee01c4 Don't forget to call the new-script and destroy-script hooks in js_FilterXMLList, so the debugger knows about the script cloned there.
git-svn-id: svn://10.0.0.236/trunk@165772 18797224-902f-48f8-a5cc-f745e15eee43
2004-11-25 06:57:17 +00:00
brendan%mozilla.org
720352377b Fix memcmp length gaffe, plus polish a few comments (246411).
git-svn-id: svn://10.0.0.236/trunk@165771 18797224-902f-48f8-a5cc-f745e15eee43
2004-11-25 04:37:18 +00:00
brendan%mozilla.org
f84407acf4 - Add declared flag to JSXMLNamespace, to implement the intent and test-wanted
effect of ECMA-357, specifically x.namespaceDeclarations() should not include
  the default namespace inherited from the <parent> tag wrapped around a string
  argument "<x>...</x>" by ToXML, whereas x.inScopeNamespaces() should.

  This case implies errata against 10.3.1, 10.4.1, and 13.4.4.24 (at least).

- Consolidate common code in an XMLArrayInsert function, renaming the misnamed
  precursor to XMLArrayAddMember.  XMLArrayInsert properly notifies any cursors
  iterating over the array, fixing for/in and for-each/in bugs such as this:

    var l = <><a/><c/><d/></>;
    var i = 0;
    for each (var x in l) {
        print(x.toXMLString());
        if (i == 1) l[0] += <b/>;
        i++;
    }

- Fix the bug induced by this erratum from ECMA-357:

9.2.1.2 step 2(c)(ii) sets _y.[[Parent]] = r_ where _r_ is the result of
        [[ResolveValue]] called on _x.[[TargetObject]] in 2(a)(i).  This can
        result in text parenting text:

        var MYXML = new XML();
        MYXML.appendChild(new XML("<TEAM>Giants</TEAM>"));

        (testcase from Werner Sharp <wsharp@macromedia.com>).

        To match insertChildAfter, insertChildBefore, prependChild, and
        setChildren, we should silently do nothing in this case.

- Fix PN2X_OUTERMOST not to overlay XSF_CACHE_VALID, causing it to appear to be
  set when cx->xmlSettingFlags were "translated" into ParseNodeToXML flags.  To
  avoid further such stupidity, consolidated all similar flags into XSF_* bits
  and eliminated the PN2X_* duals.

- Redo the way the default namespace is inherited by parsed XML from the
  <parent> tag under ToXML and ToXMLList, and implicitly inherited in the
  js_ParseNodeToXMLObject alternative path to ToXML.

- Handle null prefix (meaning undefined in ECMA-357, that is, no prefix was
  passed to the Namespace constructor) and empty prefix (which is normalized
  from null for the empty URI "no namespace" case) better in the parsing and
  ToXMLString code.

- Fixed a bug in PutProperty where it implements 9.2.1.2 2(c)(vii)(1) (whew!).
  Fixed another bug near that which stupidly assumed all XML nodes have names,
  leading to an obvious null pointer crash.

This should be the final round of work for bug 246411.  With the appropriate
testsuite patches, this passes all tests except e4x/Regress/regress-264369.js
(which probably should be invalidated by a correction to the ECMA-357 spec).


git-svn-id: svn://10.0.0.236/trunk@165769 18797224-902f-48f8-a5cc-f745e15eee43
2004-11-25 03:07:22 +00:00
brendan%mozilla.org
9f868d3f52 In the Replace-calls-Insert case, where V is an XMLList, avoid creating holes and botching x.[[Length]] (246441 followup, rs=shaver).
git-svn-id: svn://10.0.0.236/trunk@165538 18797224-902f-48f8-a5cc-f745e15eee43
2004-11-20 02:34:09 +00:00
brendan%mozilla.org
036b7c131b E4X, configured off, code-complete.
git-svn-id: svn://10.0.0.236/trunk@165420 18797224-902f-48f8-a5cc-f745e15eee43
2004-11-17 07:43:01 +00:00
brendan%mozilla.org
29ca7132f8 Instrument allocation a bit, DEBUG_brendan or METERING only change.
git-svn-id: svn://10.0.0.236/trunk@163318 18797224-902f-48f8-a5cc-f745e15eee43
2004-10-06 21:03:35 +00:00
brendan%mozilla.org
1f06a72acd Use &dummy_sprop consistently (followup to 246441).
git-svn-id: svn://10.0.0.236/trunk@163241 18797224-902f-48f8-a5cc-f745e15eee43
2004-10-05 11:44:14 +00:00
brendan%mozilla.org
e1d64a36be Initial E4X check-in, configured off (246441, rs=shaver).
git-svn-id: svn://10.0.0.236/trunk@163236 18797224-902f-48f8-a5cc-f745e15eee43
2004-10-05 10:19:07 +00:00