Commit Graph

154 Commits

Author SHA1 Message Date
Jason Orendorff
ca0b6c2b6b Bug 648175 - Remove JSOP_FOR*. Second second landing, to coin a phrase. r=dvander.
--HG--
extra : rebase_source : f893091e91a5b409c38ba08ddccfa0a6aa0a92c8
2011-07-19 11:00:43 -05:00
Dave Herman
f823587beb Bug 667131 - crash: 'yield' unnoticed due to calling maybeNoteGenerator() too late (r=cdleary) 2011-06-27 15:38:10 -07:00
Jeff Walden
55a71f2ebf Style patrol followup to bug 665835. r=consistency
--HG--
extra : rebase_source : fe11c9f93246357209608ef6db85f2c147eb1b61
2011-06-24 14:36:13 -07:00
Chris Leary
0780a149be Bug 649576: Extricate JSHashTable from JSAtomList death grip. (r=luke) 2011-06-24 14:22:30 -07:00
Jeff Walden
0a61156473 Bug 665835 - Remove JSOPTION_ANONFUNFIX. r=cdleary
--HG--
rename : js/src/tests/js1_5/extensions/regress-376052.js => js/src/tests/ecma_5/misc/unnamed-function.js
2011-06-21 09:53:19 -07:00
Dave Herman
bc5c25ed9b Bug 665286 - crash on yield in arguments list (r=cdleary) 2011-06-23 18:20:31 -04:00
Dave Herman
da7f1d70a8 Bug 632030 - Reflect.parse handling of duplicate var declarations (r=jorendorff) 2011-06-23 12:31:40 -04:00
Ehsan Akhgari
0b938f2384 Bug 662969 - Silence the clang warnings issued because of alignment requirements increase when compiling jsparse.h; r=Waldo
--HG--
extra : rebase_source : 8286bd6fd8a82d855c95d8a1ded01b54d73ba5a1
2011-06-17 15:59:47 -04:00
Dave Herman
7612662008 disable constant folding for Reflect.parse (bug 571617, r=jorendorff) 2011-06-18 08:45:05 -07:00
Dave Herman
1d1b53860a disallow yield and arguments in generator expressions (bug 634472, r=cdleary) 2011-06-16 08:20:18 -07:00
Luke Wagner
05d2002b66 Bug 644074 - Simplify and consolidate VM stack code into js/src/vm/Stack* 2011-04-13 09:27:37 -07:00
Igor Bukanov
55e510df64 bug 646044 - ContextAllocPolicy should not account for GC memory pressure. r=luke 2011-03-30 12:10:12 +02:00
Paul Biggar
72c7701093 Bug 634155: Account for NewCompartment's memory, and change allocation APIs (r=nnethercote)
This changes the allocation API, in the following way:

  js_malloc -> {cx->,rt->,OffTheBooks::}malloc
  js_calloc -> {cx->,rt->,OffTheBooks::}calloc
  js_realloc -> {cx->,rt->,OffTheBooks::}realloc
  js_free -> {cx->,rt->,Foreground::,UnwantedForeground::}free
  js_new -> {cx->,rt->,OffTheBooks::}new_
  js_new_array -> {cx->,rt->,OffTheBooks::}new_array
  js_delete -> {cx->,rt->,Foreground::,UnwantedForeground::}delete_

This is to move as many allocations as possible through a JSContext (so that they may be aken into account by gcMallocBytes) and to move as many deallocations to the background as possible (except on error paths).
2011-03-31 01:13:49 -07:00
Nicholas Nethercote
fd0ae2765a Bug 637549 - Speed up expression parsing, part 2: inline more aggressively. r=brendan,jimb. 2011-03-23 18:00:20 -07:00
Nicholas Nethercote
aa5f91073a Bug 637549 - Speed up expression parsing, part 1: avoid ungetting/regetting many tokens. r=brendan,jimb. 2011-03-23 18:00:04 -07:00
Luke Wagner
7c96945e3c Bug 613457 - clean up string interfaces (r=njn)
--HG--
extra : rebase_source : 3e77b67fa9fe2cc31312ad99951cf92258a98e64
2011-03-14 13:59:53 -07:00
Jim Blandy
df6f0b2ee9 Bug 554955: Give blocks and call objects unique shapes when they have parents that may be extended with new bindings. r=jorendorff
The comments for js::Bindings::extensibleParents explain why this is necessary.

AssertValidPropertyCacheHit should have been catching this bug, but for
reasons I don't understand, it is restricted from checking this case. This
patch extends it to assert when the bug is detected.

I've gathered the infallible parts of the initialization for Call objects
and cloned block objects into their own functions.
2011-03-15 12:18:36 -07:00
Jim Blandy
13ac5c4e5d Bug 554955: Introduce a typed accessor for retrieving functions from JSFunctionBoxes. r=brendan 2011-03-15 12:18:36 -07:00
Andreas Gal
29c7365b34 Make empty shape initialization lazy (bug 639254, r=billm). 2011-03-07 18:42:04 -08:00
Jim Blandy
2016210905 Bug 554955: Revert fix (changesets 297b1312f534, 18a1effafe19, 26d40e1e80bf, f6117465a979): 14% performance hit as measured by Talos. r=talos 2011-01-31 16:48:26 -08:00
Jim Blandy
a237e87988 Bug 554955: Give blocks and call objects unique shapes when they have parents that may be extended with new bindings. r=jorendorff
The comments for js::Bindings::extensibleParents explain why this is necessary.

AssertValidPropertyCacheHit should have been catching this bug, but for
reasons I don't understand, it is restricted from checking this case. This
patch extends it to assert when the bug is detected.

I've gathered the infallible parts of the initialization for Call objects
and cloned block objects into their own functions.
2011-01-31 12:08:13 -08:00
Jim Blandy
e0523545cd Bug 554955: Introduce a typed accessor for retreiving functions from JSFunctionBoxes. r=brendan 2011-01-31 12:08:13 -08:00
Chris Leary
074bd0c596 Bug 595691, take 2: fix versioning across VM instances, remove _options. (r=luke,brendan,igor) 2011-01-27 02:54:58 -08:00
Chris Leary
1771b7c232 Backed out changeset b88172246b66 due to Win32 debug failures. 2011-01-25 04:11:47 -08:00
Chris Leary
b462e1fb98 Bug 595691: fix versioning across VM instances, remove _options. (r=luke,brendan,igor) 2011-01-25 02:33:27 -08:00
Jason Orendorff
d7e1af0d61 Bug 617609 - Upvar analysis marks functions as NULL_CLOSURE incorrectly. r=brendan. 2011-01-21 13:22:26 -06:00
Jim Blandy
a7a25b6387 Bug 576847: Remove unused arguments in generator expression parsing functions. r=jorendorff
We always pass NULL as the |pn1| argument to js::Parser::parenExpr; remove
it. We pass NULL for the |genexp| argument in all but one case; give it a
default value. This allows almost all calls to pass no arguments.

We always pass a freshly allocated PN_UNARY node as |generatorExpr|'s first
argument, and never refer to the node again in the caller; move the
allocation into |generatorExpr| itself. This makes |generatorExpr| a
function that takes an expression |E| and returns the immediate application
of a generator function which consists of the nested loops and conditionals
given by the comprehension tail, with a |yield E| at the center.
2011-01-20 13:27:04 -08:00
Nicholas Nethercote
ed55695802 Bug 624878 - Remove dangerous uses of vanilla (throw-on-failure) |operator new|. r=lw. 2011-01-17 19:44:10 -08:00
Jim Blandy
f20a1f7648 Bug 624199: Correctly skip emitting bytecode for useless string literals and complain, while not flagging directives. r=brendan
Never emit bytecode for expression statements consisting of a single string
literal. Complain about them as useless code only if they are not part of a
Directive Prologue. The comments in recognizeDirectivePrologue explain the
details.

Fix bad names of directive-prologue-related parse node member functions.
2011-01-15 13:48:26 -08:00
Jim Blandy
62486d8029 Bug 501908: Avoid O(n^2) behavior when recycling large trees. r=igor
It turns out that the careful effort RecycleTree and NewOrRecycledNode make
to disassemble the recycled tree lazily is wasted: every recycling call
ends up calling UnlinkFunctionBoxes and walking the entire parse node tree
to fix up funbox and method links. There's no locality; you might as well
queue up the parse nodes while you're at it. And the stack doesn't stay
shallow.

This patch replaces the (very clever) lazy recycling with eager recycling,
using a work stack chained through the nodes themselves to avoid creating
deep C++ stacks when recycling deep parse trees. We put off cleaning up the
method lists and funbox tree until just before function analysis, at which
point we do so in a single linear pass. Putting this off to the end avoids
quadratic behavior, as noted in the comments.

The patch localizes the process of adding nodes to the free list in a
single function, ensuring that we don't recycle used/defn nodes. It also
poisons newly freed nodes.

The patch also more clearly distinguishes between function nodes that have
been fully deleted, and function nodes that have been mutated (by
js_FoldConstants) into other kinds of nodes. See the comments before
Parser::cleanFunctionList.

I believe the patch also improves the care with which we handle nodes that
cannot be recycled immediately (those that appear in JSAtomLists, or are
referred to by JSFunctionBoxes). In some cases, those nodes may be picked
up and fiddled with later, so it is important that they not refer to nodes
around them that did get recycled.
2011-01-14 18:09:09 -08:00
Jim Blandy
67b6f164d8 Bug 501908: Pass a JSTreeContext to analyzeFunctions, not bits and pieces. r=igor
Proper function recycling may mean eliminating the tree context's entire
function list; it's misleading to pass in the function list, rather than
side-effecting the tc in place.

Let analyzeFunctions take care of testing whether we have any functions to
analyze, instead of making each caller do it. In the next patch in the
series, we won't know whether the function list is really clear or not in
the callers anyway.

Avoid passing tcflags around by non-const reference; SpiderMonkey style is
to use pointers for parameters the callee may mutate, to make call sites
more evidently potential mutations.
2011-01-14 18:09:09 -08:00
David Anderson
aed4f14946 Remove unsound global optimizations (bug 618007, r=brendan). 2011-01-08 16:27:48 -08:00
Brendan Eich
0b7d9754dc Get rid of JSOP_{GET,CALL}UPVAR and simplify code greatly (592202, r=jorendorff). 2010-12-29 23:46:50 -08:00
Jeff Walden
f7bec8a9e8 Bug 614493 - Move top-level binding storage (and argument, variable, and upvar counts) out of JSFunction and into js::Bindings, itself stored in JSScript, anticipating the time when strict mode eval scripts will need it. r=brendan 2010-11-16 15:34:24 -08:00
Brian Hackett
be4d109005 Don't generate INITPROP/INITELEM for singleton constant initializers, bug 577359. 2010-12-30 08:07:43 -05:00
Jeff Walden
ade082778d Bug 616294 - |delete x| inside a function in eval code, where that eval code includes |var x| at top level, actually does delete the binding for x. r=brendan
--HG--
extra : rebase_source : 7e22a2ec3cfb6fa5510af4ba317e9a6d36b37555
2010-12-03 14:54:52 -08:00
Jeff Walden
871064c6e8 Bug 601262 - A string literal containing an octal escape before a strict mode directive should be a syntax error. (Yes, this requirement is ugly, but it's what ES5 says.) r=brendan
--HG--
extra : rebase_source : c30be5f90e4b069da4ea6f035598f9a3262fa8e0
2010-10-13 04:00:28 -07:00
Nicholas Nethercote
fecf9a1832 Bug 588648 - Don't copy chars when scanning. r=brendan. 2010-12-07 15:22:52 -08:00
Brendan Eich
769e50b90a Bug 609617 - delete(eval(...)) calls indirect eval (r=jimb). 2010-11-04 16:06:08 -07:00
Luke Wagner
c8b83168a6 Bug 543100 - Shrink Parser::statement stack frame size (r=waldo)
--HG--
extra : rebase_source : f0e11ae51ced168b5c575a2840077393a1179d00
2010-11-05 11:10:02 -07:00
Bill McCloskey
88e727ada5 Bug 601395 - Fix parent pointer tracking for block objects (r=cdleary) 2010-10-18 11:34:57 -07:00
Bill McCloskey
20e3b7290e Bug 535912 - Eliminate blockChain from JSStackFrame (r=cdleary) 2010-09-29 13:21:36 -07:00
David Anderson
2f002d500e Add local and argument closure information to JSScript (bug 592973, r=brendan+dmandelin).
--HG--
extra : rebase_source : 3d36a7908230006f2b048835f7526962fac2b32b
2010-09-13 22:33:44 -07:00
David Anderson
52761821cf Fix global variables overwriting resolved properties (bug 595917, r=brendan). 2010-09-21 12:38:30 -07:00
Chris Leary
2fa4fedbc1 Bug 540675: eviscerate JSStackFrame::callerVersion. (r=lw) 2010-09-13 09:38:22 -07:00
Luke Wagner
562fc49870 Bug 539144 - Make formal args a jit-time const offset from fp; rm argv/argc/thisv/script/callobj (r=brendan,dvander) 2010-08-09 22:43:33 -07:00
Chris Leary
7c740a8dc0 Back out due to mochiserver breakage. (no_r=me) 2010-09-09 16:52:31 -07:00
Chris Leary
7c2ac56dff Bug 540675: remove callerVersion from stack frame. (r=lw) 2010-09-09 14:25:30 -07:00
David Mandelin
3dc48e12b2 [JAEGER] Merge from Tracemonkey. 2010-08-30 15:13:32 -07:00
Brendan Eich
790ddc9e99 Merge JSScope into JSObject and JSScopeProperty (now js::Shape; bug 558451, r=jorendorff). 2010-08-29 11:57:08 -07:00