Commit Graph

794 Commits

Author SHA1 Message Date
David Mandelin
42af5f9b94 Backed out changeset 9cc88d291fc0 2009-10-05 18:31:10 -07:00
David Mandelin
e7d37eba3d Bug 495331: trace JSOP_LAMBDA for non-null, non-heavyweight case, r=jorendorff,igor 2009-09-28 13:51:46 -07:00
Makoto Kato
2dc0ebc45c Bug 515545 - Add EXECUTE_TREE_TIMER code for Windows x64. r=dvander 2009-10-04 17:03:18 +09:00
David Anderson
ab2f179aab Static analysis fixes, recursion fallout (bug 520320, r=gal). 2009-10-02 17:55:57 -07:00
David Anderson
b21e218905 Fixed js_PopInterpFrame breaking arena LIFO requirement (bug 520210, r=brendan). 2009-10-02 13:52:54 -07:00
Robert Sayre
cea0319379 Merge mozilla-central to tracemonkey. 2009-10-01 14:08:25 -07:00
David Anderson
3e3b3a2362 Trace recursive function calls (bug 459301, r=gal). 2009-09-30 15:28:00 -07:00
David Anderson
5aeb5cef7e Internalize and memoize FrameInfo pointers (bug 501398, r=brendan). 2009-09-30 13:00:16 -07:00
Brendan Eich
4bf4354638 High-level CSE for shape guards (518448, r=jorendorff). 2009-09-29 19:05:19 -07:00
David Anderson
019e8e15ce Backed out changeset 911d01b21463 2009-09-29 16:24:59 -07:00
David Anderson
a64d9ec66a Internalize and memoize FrameInfo structures (bug 501398, r=brendan). 2009-09-29 14:33:43 -07:00
Nicholas Nethercote
c70f7763f4 Bug 519156 - TM: fix the Tracker. r=gal. 2009-09-29 11:12:46 +10:00
Graydon Hoare
ce8212d362 Bug 518744 - TM: mark and rewind dataAlloc, r=gal.
--HG--
extra : rebase_source : fd9eac329fc70879ad5b45a267152937fed693fb
2009-09-25 17:20:01 -07:00
Luke Wagner
1fbbde3ae1 Bug 519004 - make deep abort danger more clear and present (r=dvander) 2009-09-28 09:03:21 -07:00
Robert Sayre
7e3d716d38 Backed out changeset f5ea964eb493sdf 2009-09-26 18:55:25 -07:00
Brendan Eich
69fd06459c High-level CSE for shape guards (518448, r=jorendorff). 2009-09-25 14:07:08 -07:00
Robert Sayre
14ef91c61f Merge mozilla-central to tracemonkey. 2009-09-25 11:55:38 -07:00
Nicholas Nethercote
7ca135d39f Bug 518747 - NJ merge: get rid of NJ_LOG2_PAGE_SIZE et al. r=graydon. 2009-09-25 16:01:55 +10:00
Luke Wagner
668372111c Bug 517973 - remove deep abort, fix blacklisting bug 2009-09-23 18:21:41 -07:00
Graydon Hoare
f0b694edca Bug 517083 - Fix performance regression, r=dvander.
--HG--
extra : rebase_source : 57e132434da8c652c41ffa889aa2002eeeb4698c
2009-09-23 15:12:58 -07:00
David Mandelin
99fb23d064 Bug 511695: Fix JS warnings in MSVC8, r=brendan 2009-09-23 11:16:30 -07:00
Graydon Hoare
a18f57ecfd Bug 495734 - NJ: don't store non-LIR data in LIR buffers, r=gal.
--HG--
extra : rebase_source : 4a73fd251f3077fe3623ef1341a8aa3729a4e8bf
2009-09-22 16:06:52 -07:00
Graydon Hoare
ccc6ad4904 Bug 517083 - TM: introduce a temp allocator for allocations during recording and compilation, r=gal. 2009-09-22 12:36:20 -07:00
David Mandelin
10e9f4f6b8 Bug 517633: printf that can be called from trace, r=lw
--HG--
extra : rebase_source : 7bf61fae910feab40ef706717420e883ccafc4da
2009-09-22 15:02:50 -07:00
Graydon Hoare
e102fc5e1c Bug 517299 - Allocator mismatch (calloc+delete) for class TraceRecorder and LirWriter, r=gal. 2009-09-21 14:06:42 -07:00
Graydon Hoare
963fd74e53 Bug 516620 - Kill off residue of MMgc, r=gal.
--HG--
extra : rebase_source : 1bd814f499014507fb60ad554687b12b9fe09a3e
2009-09-10 16:29:36 -07:00
Julian Seward
b214130415 Bug 503424 - Add built-in support for compiled-trace and -guard profiling, r=graydon. 2009-09-15 15:05:53 -07:00
Graydon Hoare
2521578c2d Backed out changeset 35777195800a, perf regression. 2009-09-14 21:07:57 -07:00
Graydon Hoare
5d33edd2e9 Bug 516620 - Kill off residue of MMgc, r=gal. 2009-09-10 16:29:36 -07:00
Brendan Eich
eaabbf253c Bug 516075 - Move shape into JSObjectMap from JSScope, const-ipate and use LIR_ldc* to get to it (r=jorendorff). 2009-09-14 20:29:46 -04:00
Andreas Gal
72c92b196f Use a single code cache for the JIT and the RegExp compiler (515852, r=dmandelin). 2009-09-12 23:04:27 -07:00
Brendan Eich
1f562c224a Bug 516069 - Common the side exit used with shape guards (r=gal). 2009-09-11 15:44:30 -07:00
Benjamin Smedberg
124c9c8007 Bug 517278 - JS_REQUIRES_STACK errors (jsobj.cpp and jstracer.cpp), r=jorendorff 2009-09-18 09:36:51 -04:00
David Mandelin
0fcb7aaa76 Bug 500857: show JIT reset events in tracevis, r=nnethercote
--HG--
extra : rebase_source : a9be775abf15badf980e3be3535e99b30ce5c235
2009-09-10 16:06:34 -07:00
David Anderson
fdcaf63219 Greatly improved tracer x64 compliance and compatibility (bug 513844, r=gal). 2009-09-10 15:38:18 -07:00
Andreas Gal
bd58a78c21 Set nativeVp immediately before the native call (514999, r=mrbkap). 2009-09-09 17:38:07 -07:00
David Mandelin
a8c3972f23 Bug 504797: give arguments objects created on trace a private value that can be used to look up argument values in the native stack, r=gal 2009-09-09 11:40:21 -07:00
David Anderson
7b69388035 Fixed a hack that created temporarily ill-typed LIR, i2f(i2f) (bug 503427, r=gal). 2009-09-08 16:47:55 -07:00
Igor Bukanov
6bfe4771cc bug 513190 - avoiding jsint tagging of the private slot data. r=jorendorff 2009-09-05 19:59:11 +04:00
Andreas Gal
27381a9ab1 Reset nativeVp only after the native call returns (513981, r=mrbkap). 2009-09-04 17:00:08 -07:00
Luke Wagner
6bfe9f9329 Bug 460904 - rename/tweak JSTraceableFunction (take 2) 2009-09-04 13:44:31 -07:00
Luke Wagner
3087376a4d Backed out changeset 94da2f68afdb 2009-09-04 11:35:52 -07:00
Luke Wagner
52d822b6d2 Bug 460904 - rename/tweak JSTraceableFunction (r=jorendorff) 2009-09-03 11:57:14 -07:00
Brendan Eich
cce4dce512 Join lambdas assigned or initialized as methods to the compiler-created function object if we can, with a read barrier to clone on method value extractions other than call expressions (471214, r=jorendorff). 2009-09-03 14:41:19 -07:00
Nicholas Nethercote
e409ab2bb3 Bug 512596 - TM: improve TMFLAGS=help message. r=jseward. 2009-09-01 10:08:46 +10:00
Andreas Gal
4394dfd752 Don't allocate in Queue constructor by default (513497, r=shaver). 2009-08-29 18:57:57 -07:00
Andreas Gal
c85b53a42a Backout bug 512617. 2009-08-29 18:46:27 -07:00
Andreas Gal
64328a8e94 Consolidate object creation on trace (512617, r=jorendorff). 2009-08-29 12:36:00 -07:00
Andreas Gal
14813a11f4 Remove some TM-only fields from nanojit (513187, r=dvander). 2009-08-28 14:36:37 -07:00
Igor Bukanov
b919139e8d bug 511425 - removal of JSObjectOps.(get|set)RequiredSlot. r=brendan 2009-08-28 09:53:26 +04:00
Andreas Gal
317b5f2e3a Remove explicitSavedRegs and loop hacks from nanojit (513139, r=dvander). 2009-08-27 18:46:45 -07:00
David Mandelin
368b225d78 Bug 505591: trace JSOP_NAME for returned closures, r=dvander
--HG--
extra : rebase_source : 496a99feeb0fee876cd72b24e1e753d9b41ea51f
2009-08-27 15:40:37 -07:00
David Mandelin
a086bb3ab9 Bug 510642: traverse scope chain correctly for traced JSOP_BINDNAME, r=jimb 2009-08-27 15:07:46 -07:00
Luke Wagner
a5b9103165 Bug 419743 - Add JSOP_CONCATN (r=waldo) 2009-08-18 15:43:17 -07:00
Jason Orendorff
092787084d Bug 507683 part 2 - Avoid lookup on trace when calling a native getter with no slot. r=gal.
--HG--
extra : rebase_source : 38c552c3c1daad34bda66fc9ced2ec31d954eef0
2009-08-25 15:02:58 -07:00
Jason Orendorff
c45d09492c Bug 507683 part 1 - Trace native getters. r=gal.
--HG--
extra : rebase_source : f73754b7946e3d525b11f5973c61e22bd2f56dba
2009-08-25 15:01:29 -07:00
David Anderson
bed67e910c Removed callee from FrameInfo, and fixed upvar bugs in stack reconstruction (bug 510300, r=dmandelin,brendan). 2009-08-21 08:09:47 -07:00
Graydon Hoare
503c025d90 Bug 511309 - Delete class Fragmento and all uses of it, r=dvander.
--HG--
extra : rebase_source : 47047589288ac0758e0068307b5a8f393db97606
2009-08-20 17:22:47 -07:00
Graydon Hoare
ebe9c3f20b Bug 511237 - Remove primary use of Fragmento from jsregexp, r=dmandelin. 2009-08-18 15:32:54 -07:00
David Mandelin
6e0758faf2 Trailing whitespace cleanup, no_r=me 2009-08-20 15:21:14 -07:00
David Anderson
57bffd92e3 Consolidated inner global typemap completion logic and fixed a bug when extending nested exits (bug 510518, r=gal,sayrer). 2009-08-20 13:06:27 -07:00
David Anderson
16fa18ade6 Added trace tree visualizer (bug 506714, r=gal). 2009-08-19 16:11:59 -07:00
Jason Orendorff
5d4cab246e Bug 507446 - TM: use return values instead of outparams for box_jsval, unbox_jsval. r=dmandelin.
--HG--
extra : rebase_source : e49f886c1723d90064cd11da0959f4a1e0fe23f4
2009-08-19 17:00:18 -05:00
Nicholas Nethercote
c035e918c7 Bug 511012 - TM: don't use addName() and insStorei() together. r=gal. 2009-08-18 09:27:48 +10:00
David Mandelin
46854c2304 Bug 509599: on trace, call putArguments when returning from JS function via either return or stop, r=jorendorff 2009-08-17 15:29:09 -07:00
Andreas Gal
5d82186f20 Don't flush the code cache every time we GC (506117, r=brendan). 2009-08-17 14:50:57 -07:00
David Mandelin
184e8b155d Backed out changeset 238e8b557e4f: causing tjss orange
--HG--
extra : rebase_source : 49cfd40e67221067c45c85a5b96db39d22be1f67
2009-08-14 19:17:00 -07:00
David Mandelin
a5a7e420d0 Bug 505591: trace JSOP_NAME for returned closures, r=dvander 2009-08-14 16:02:47 -07:00
Jason Orendorff
56b69d0816 Bug 508051 part 1 - Avoid imacros for JSOP_SETELEM. Re-landing per comment 8. r=gal. 2009-08-14 15:47:04 -05:00
Andreas Gal
25b9ed2a98 Backed out bug 508051. Fails trace-test/mandelbrot. 2009-08-13 04:08:34 -07:00
Jason Orendorff
cc37757a20 Bug 508051 part 1 - Avoid imacros for JSOP_SETELEM. r=gal. 2009-08-12 15:27:01 -05:00
David Anderson
869bf43660 Cleaned up and refactored AttemptToStabilizeTree (bug 509089, r=gal). 2009-08-10 22:15:52 -07:00
David Mandelin
86609aa9f8 Bug 508187: do stack push after all guards when tracing JSOP_INCNAME et al, r=gal 2009-08-10 13:03:50 -07:00
Graydon Hoare
b8154cc364 Bug 504462 - Merge tamarin's CodeAlloc into tracemonkey, r=gal. 2009-07-15 16:50:01 -07:00
David Anderson
829a35875e Cleanup of deduceTypeStability and closeLoop, take two (bug 497948, r=gal+sayrer). 2009-08-07 14:08:23 -07:00
David Mandelin
c1486b955e Bug 508178: guard that arguments object refers to the same frame if used on trace, r=jorendorff 2009-08-05 12:39:10 -07:00
David Mandelin
bcef71432b Bug 507449: Trace JSOP_GETXPROP, r=gal 2009-08-04 11:01:13 -07:00
Jason Orendorff
2df7b71611 Bug 507665 - Avoid imacros for JSOP_GETELEM and JSOP_CALLELEM. r=gal. 2009-08-03 11:38:28 -05:00
David Mandelin
bac4a5e107 Bug 495330: trace JSOP_INCNAME and related ops for closures, r=gal 2009-07-31 17:52:30 -07:00
Graydon Hoare
2e92fcbbe3 Backed out changeset d0be9284ea67 2009-07-30 14:28:26 -07:00
Mark Steele
ff339aa3b6 Bug 497999: collect context-specific TraceVis data in JS objects, r=jorendorff 2009-07-30 11:48:02 -07:00
David Mandelin
f7a94971a0 Bug 507053: fix on-trace scope chain computation for JSOP_BINDNAME, r=gal 2009-07-30 11:34:35 -07:00
Jason Orendorff
9a9d7d84d3 Bug 507156 - JSOP_TABLESWITCH always aborts, sometimes without an abort message. r=dmandelin. 2009-07-30 13:06:15 -05:00
Graydon Hoare
caf3859643 Bug 504462 - Merge tamarin's CodeAlloc into tracemonkey, r=gal. 2009-07-15 16:50:01 -07:00
Jason Orendorff
f0ca3c8bd9 Bug 506982 - Fix up jstracer style. r=Waldo. 2009-07-29 11:58:19 -05:00
David Mandelin
cfb0d1fd1b Bug 506821: clean up trailing whitespace, r=brendan 2009-07-27 18:40:12 -07:00
Jason Orendorff
08e0a53af4 Bug 503408 - Trace native setters. r=brendan. 2009-07-27 16:47:34 -05:00
David Mandelin
e8a3e752f8 Bug 496240: trace JSOP_NAME for active (on-stack) closures, r=gal 2009-07-21 16:22:36 -07:00
Robert Sayre
53d13821c6 Merge mozilla-central to tracemonkey. 2009-07-16 11:46:05 -04:00
Neil Rashbrook
7d7253ddaa Bug 501609 Make js/src build with VC7.1 r=graydon 2009-07-15 20:31:26 +01:00
Wesley W. Garland
ee6d0ceed7 Bug 504119 - jstracer.h no longer compiles debug builds on gcc < 4. r=jorendorff.
--HG--
extra : rebase_source : 4ea454201e93f26d87a5707d5b91c295e828cd2f
2009-07-14 19:15:23 -05:00
Robert Sayre
d2f01e78db merge backout 2009-07-14 00:26:05 -04:00
Robert Sayre
663a2781d7 Backed out changeset b6a8110a858f 2009-07-14 00:25:35 -04:00
Blake Kaplan
d142d70ad5 Bug 503286 - Use the right sp for sp_adj to account for tree calls fiddling with state.sp after we've deep bailed. r=jorendorff
--HG--
extra : rebase_source : 2d3e2237ef82d4ea5980b4ece9b484344f450036
2009-07-13 15:44:33 -07:00
David Anderson
3afb790b55 Refactored deduceTypeStability/closeLoop for a general cleanup needed for recursion (bug 497948, r=gal+sayrer). 2009-07-13 13:26:27 -07:00
David Mandelin
975f74c278 Bug 453730: trace JSOP_ARGUMENTS, r=gal 2009-07-08 11:16:41 -07:00
Jason Orendorff
e0ee1845cf Give the LIR instruction for loading obj->map the name "map" in debug output. r=brendan in bug 498565 comment 18.
--HG--
extra : rebase_source : 3c7954123b4b89d0f38b7e6c2397749a9156e342
2009-07-07 06:20:22 -05:00
Andreas Gal
16a60091ed Shortcut lookup flag calculation when on trace (bug 502145, r=igor). 2009-07-06 06:42:13 +02:00
David Anderson
cf5bda02f1 Nits to Queue<T>, assert valid index and support 0 starting size (bug 500554, r=gal). 2009-06-25 17:14:54 -07:00
Jeff Walden
2d9f80b8df Windows bustage fix, r=foopy
--HG--
extra : rebase_source : 3e6a65cb262f12fe73b3ef7657a1f38c9673ad99
2009-06-25 16:36:25 -07:00
Jeff Walden
8b7bef6dd0 Bug 497207 - Define |enum JSTraceType| and stop overloading JSVAL_* for trace-time types. r=jorendorff
--HG--
extra : rebase_source : bb72ca3ad8fab4d0b2affca611630bf5a9559531
2009-06-10 16:58:02 -07:00
David Anderson
3d4b953291 Avoid pedantic errors about trailing commas in lists (build bustage fix). 2009-06-25 16:02:29 -07:00
David Anderson
b6436e2572 Print exit names instead of numbers (bug 500522, r=gal). 2009-06-25 15:32:50 -07:00
Julian Seward
b96eed42da Bug 494864 - Make nanojit debug output easier to follow, r=graydon. 2009-06-24 20:32:00 -07:00
Graydon Hoare
0f04cb5c35 Bug 496674 - Replace FORALL macros with template functions and visitors, take 2, r=gal. 2009-06-19 18:48:05 -07:00
Andreas Gal
6e96f166d2 Check for end of proto chain when walking it (499169, r=mrbkap). 2009-06-23 19:22:54 -07:00
Graydon Hoare
859a94d6ec Backed out changeset 5e1b444c803c, broke static analysis tinderbox. 2009-06-23 16:58:30 -07:00
Graydon Hoare
c8b2433196 Bug 496674 - Replace FORALL macros with template functions and visitors, r=gal. 2009-06-19 18:48:05 -07:00
Nicholas Nethercote
e2a97e3f4c Bug 496448: TraceVis TraceMonkey performance visualization, r=brendan 2009-06-16 09:30:01 +01:00
Jason Orendorff
52fe5a97ba Bug 497618 - Change JSString macros to methods. r=Waldo. 2009-06-10 20:29:44 -05:00
Andreas Gal
659a7a9b6c Implement oracle-based speculative fmod/fdiv/fmul demotion (474443, r=graydon,dvander). 2009-06-12 08:33:32 -07:00
David Mandelin
3db63853e3 Bug 496922: do upvars correctly when the function defining the upvar was called with extra args, r=brendan,gal 2009-06-09 11:49:53 -07:00
David Mandelin
344e868872 Bug 496251: use up-to-date typemap when getting upvar from trace entry native frame, r=gal 2009-06-08 10:48:18 -07:00
Andreas Gal
3882ad59b6 Merge. 2009-06-04 20:12:44 -07:00
Andreas Gal
7d8559c586 Backed out changeset 2ad658e9f42a (bug 495958, re-opened). 2009-06-04 20:12:31 -07:00
David Mandelin
80a97eb5d3 Bug 496319: correctly unpack FrameInfo::argc, r=mrbkap 2009-06-04 15:19:59 -07:00
Andreas Gal
9ded7b0c3e Capture missing globals from current environment, not the tree entry map when extending a side exit (495958, r=graydon). 2009-06-03 12:43:38 -07:00
David Mandelin
a90aee411c Bug 494269: trace JSOP_LAMBDA_FC, r=brendan,gal 2009-06-03 11:19:20 -07:00
David Mandelin
5baa8fe491 Bug 495773: include trace entry JSStackFrame in upvar search, also remove obsolete union from FrameInfo, r=gal 2009-06-01 14:50:02 -07:00
David Mandelin
504424ebf3 Bug 495566: fix stack offset calculations for traces that start at top level, r=gal 2009-05-29 18:50:35 -07:00
David Mandelin
9af4ca2612 Bug 493512: correcting native stack navigation arithmetic, r=gal 2009-05-20 18:57:42 -07:00
Andreas Gal
0d2b989430 Update JSSLOT_ARRAY_COUNT when emitting array constructor code on trace (493255, r=jorendorff). 2009-05-18 15:56:11 -07:00
Andreas Gal
40284299a7 Fix compiler warning (493345, r=brendan). 2009-05-15 21:01:22 -07:00
Blake Kaplan
774d6933f4 Bug 492912 - Clean up the way that TraceRecorder::elem interacts with the rest of the world. r=gal 2009-05-15 15:41:41 -07:00
David Mandelin
112ce8b24b Bug 458838: enable tracing of upvar accesses that go outside the current trace to interpreter state, r=gal 2009-05-11 18:05:44 -07:00
Andreas Gal
4778325174 Ensure that cx->interpState is always accurate by maintaing a stack (490776, r=jorendorff). 2009-05-11 17:25:38 -07:00
David Mandelin
d6c2eeddf4 Bug 491620: make traces specialized for argc, r=gal 2009-05-11 15:57:28 -07:00
Andreas Gal
5f2681ef36 Bug 489836 - TM: chiptune causes Assertion failure: \!ti->typeMap.matches(ti_other->typeMap) 2009-05-11 12:20:41 -04:00
jorendorff
93c6d226d3 Record all calls to native functions (487134, r=gal, brendan). 2009-05-05 14:26:06 -07:00
Jim Blandy
56af1e088d Bug 488018: Propagate errors from tracer to interpreter. r=igor
Rename JSMonitorRecordingStatus to JSRecordingStatus.  The JSMRS_
prefix becomes JSRS_, accordingly.

Make 'record_' functions return JSRecordingStatus, not bool.  'false'
becomes 'JSRS_STOP'; 'true' becomes 'JSRS_CONTINUE'.  Since subsequent
patches will begin to use more than two values (the next assigns
meaning to JSRS_IMACRO), take care to propagate values to callers
accurately.

Define a new recording status, JSRS_ERROR.  Return it from recording
functions when appropriate.  Check for it at appropriate bottlenecks
in tracer and interpreter.

ABORT_TRACE becomes one of:
. ABORT_TRACE, for when we're simply aborting the recording process
. ABORT_TRACE_ERROR, for aborting due to an error
. ABORT_TRACE_CV, for producing an error message and returning something
  other than JSRS_STOP --- some contexts require boolean values.

Conditionally provide an alternative definition for the
JSRecordingStatus type that cannot be converted to 'bool', so that we
can use the C++ compiler to catch improperly converted code.

Use recording function return value for imacro invocation.  Eliminate
the JSFRAME_IMACRO_START frame flag.  Instead, return JSRS_IMACRO
directly from recording functions.
2009-04-30 17:30:46 -07:00
Andreas Gal
cafa156d52 We don't cache access to shared properties in the property cache (490666, r=igor,brendan). 2009-04-30 15:52:13 -07:00
Andreas Gal
776395aee0 Eliminate test_property_cache_direct_hit (490370, r=jorendorff). 2009-04-27 16:01:52 -07:00
Andreas Gal
a89bbaad23 Stay on trace when reading holes from dense arrays (489899, r=brendan). 2009-04-24 16:28:21 -07:00
Andreas Gal
a51f22dbdf Need an API exposed to control code cache size (474497, r=bent,brendan, sr=mrbkap). 2009-04-22 16:52:59 -07:00
Andreas Gal
c5c7bd2f6c Trace getting String.length (484332, r=brendan). 2009-04-21 18:56:24 -07:00
Jeff Walden
c9680230c4 Bug 473117 - Rejigger how guards use side exits, and fix an erroneous comment. r=graydon 2009-04-18 16:47:23 -07:00
Jason Orendorff
4dd9ad09ef Bug 487845 - TM: After deep-bailing, we can lirbuf->rewind() and then return to a dead code page. r=gal.
--HG--
extra : rebase_source : b7de71b526d45c7caed1982fba80c65763a0a9c6
2009-04-15 09:47:02 -05:00
Andreas Gal
c11974bb60 Backed out changeset 4c157cfe2289 (bug 487845). 2009-04-14 21:28:40 -07:00
Jason Orendorff
0616f91d10 Bug 487845 - TM: After deep-bailing, we can lirbuf->rewind() and then return to a dead code page. r=gal. 2009-04-14 08:45:37 -05:00
Brendan Eich
26a5b7f3fc Bug 487563 - Crash [@ js_Interpret] (r=mrbkap). 2009-04-09 18:44:54 -07:00
Jason Orendorff
b5d4ba583e Bug 487676 - Nesting deep-aborting trace calls don't work. r=gal.
--HG--
extra : rebase_source : 436164485bd5e981e5ae8997eed2c371f3ecd77b
2009-04-09 18:07:00 -05:00
Jason Orendorff
a613c0d579 Backout changeset 143e997c858e (bug 484693) because it caused crashes on Mac tinderboxen. 2009-04-07 17:07:11 -05:00
Graydon Hoare
163d74068e Bug 484693 - Remove uses of alloca, r=gal. 2009-04-07 13:47:36 -07:00
Brendan Eich
ec9f3ae4a0 Another static analysis patch (I hope the last; for 452498). 2009-04-05 21:51:42 -07:00
Brendan Eich
962b187fe5 upvar2, aka the big one take 2 (452598, r=mrbkap). 2009-04-05 21:17:22 -07:00
Andreas Gal
fa2e6466b2 Bug 479110 - TM: avoid frequent mismatch exits. r=brendan 2009-04-04 17:23:34 -04:00
Andreas Gal
3c19b8b7fc Merge. 2009-04-04 10:15:04 -07:00
Andreas Gal
706120c0fb Backed out changeset 972c44aa9d1f (bug 452598). 2009-04-04 10:14:52 -07:00
Brendan Eich
7485baa00c Merge. 2009-04-04 10:07:44 +01:00
Brendan Eich
5f4d9ff474 upvar2, aka the big one (452598, r=mrbkap). 2009-04-04 10:05:49 +01:00
Andreas Gal
8787072e96 Backed out changeset b512be855093 (bug 484693). See bug for details. 2009-04-04 01:06:04 -07:00
Graydon Hoare
a2d4d5a779 Bug 484693 - Remove uses of alloca, r=gal. 2009-04-03 16:30:46 -07:00
Andreas Gal
a4f3bf56a6 Don't try to abort tracing after a successful compilation (486436, r=brendan). 2009-04-02 14:47:57 -07:00
Graydon Hoare
5689ffc3f8 Bug 474529 - Avoid artificial OOM conditions, r=gal. 2009-03-31 20:51:01 -07:00
Andreas Gal
78ced670dd specialize code for a specific global object, not just a global object shape (480905, r=graydon). 2009-03-31 11:49:44 -07:00
Andreas Gal
bd810801e3 maintain globalShape in VMFragment only (486049, r=graydon). 2009-03-31 11:43:30 -07:00
Igor Bukanov
a8094a7903 bug 437325 - JSThread is no longer shared between JSRuntime instances. r=brendan 2009-03-24 13:07:35 +01:00
Jeff Walden
136daf85e6 Bug 484495 - new String(obj) asserts when tracing. r=brendan, r=gal 2009-03-22 12:49:15 -07:00
Igor Bukanov
f28d80b499 Backed out changeset e117c22cc1d1 - the landed patch for bug 437325 has a shutdown leak. 2009-03-22 10:15:27 +01:00
Igor Bukanov
a61176553e bug 437325 - JSThread is no longer shared between JSRuntime instances. r=brendan 2009-03-22 10:07:14 +01:00
Andreas Gal
47a36bca0d Property close loops even in the presence of partially constant loop conditions (482800, r=brendan). 2009-03-21 01:07:51 -07:00
Andreas Gal
43feef625d Support calling arbitrary JSFastNatives from trace (463238, r=brendan). 2009-03-20 18:52:11 -07:00
Vladimir Vukicevic
d317d0075d b=480796; detect whether ARM chip has VFP and/or v6t2 instructions; r=gal 2009-03-20 15:53:33 -07:00
Andreas Gal
65c3cf58a6 Backed out changeset e71cb3993380 (bug 479110). 2009-03-17 21:50:57 -07:00
Andreas Gal
771582b7b4 Extend tree when unboxing returns a different type (479110, r=jwalden). 2009-03-17 20:00:10 -07:00
Andreas Gal
1af13483ea Eliminate separate global frame and merge it with InterpState (482377, r=brendan). 2009-03-17 17:29:58 -07:00
Andreas Gal
7da88f37bd Backed out changeset 186ae511d5f2 (static analysis annotation only, no bug). 2009-03-17 15:55:06 -07:00
Andreas Gal
43debacfae Remove unnecessary JS_REQUIRES_STACK from guardNotGlobalObject (rs=brendan). 2009-03-17 15:44:50 -07:00
Andreas Gal
210b2d31e2 Try harder to trace array access with non-int / non-string index (478525, r=brendan). 2009-03-17 15:39:42 -07:00
Jim Blandy
debdb32ef3 Bug 480132: Clone lexical blocks only when needed. r=igor
Terminology:

A "script block" is an object of class Block allocated by the byte
compiler and associated with a script.  Script blocks are never
modified, and may be used as a prototype for a "closure block":

A "closure block" is an object of class Block that holds variables
that have been closed over (although we actually leave the variables
on the stack until we leave their dynamic scope).  A closure block is
a clone of a script block (its prototype is a script block).

Adjust the meanings of fp->blockChain and fp->scopeChain:

  fp->blockChain is always the innermost script block in whose static
  scope we're executing.

  fp->scopeChain is the current scope chain, including 'call' objects
  and closure blocks for those function calls and blocks in whose
  static scope we are currently executing, and 'with' objects for with
  statements; the chain is typically terminated by a global object.
  However, as an optimization, the young end of the chain omits block
  objects we have not yet needed to clone.

Closures need fully reified scope chains, so have js_GetScopeChain
reify any closure blocks missing from the young end of fp->scopeChain
by cloning script blocks as needed from fp->blockChain.  Thus, if we
never actually close over a particular block, we never place a closure
block for it on fp->scopeChain.

Have JSOP_ENTERBLOCK and JSOP_LEAVEBLOCK always keep fp->blockChain
current.  When JSOP_LEAVEBLOCK pops a block from fp->blockChain that
has been cloned on fp->scopeChain, pop fp->scopeChain as well.

Remove the JSFRAME_POP_BLOCKS flag, as it is no longer needed.

Ensure that the JIT won't have to create closure blocks or call
js_PutBlockObject; it can't handle those things yet.  Note our current
script block when we begin recording.  Abort recording if we leave
that block; we can't tell in advance whether it will need to be "put"
in future trace invocations.  Leave trace if we call js_GetScopeChain
while in the static scope of lexical blocks.  Remove JIT tests based
on JSFRAME_POP_BLOCKS.

Verify that generators capture the correct value for blockChain.

Add a constructor to JSAutoTempValueRooter for rooting JSObject
pointers.
2009-03-16 09:55:06 -07:00
Jim Blandy
74847db9cd Back out 480132: orange on Linux (http://tinderbox.mozilla.org/showlog.cgi?log=TraceMonkey/1237017748.1237029269.2403.gz&fulltext=1) 2009-03-14 08:19:58 -07:00
Jim Blandy
bed3611385 Bug 480132: Clone lexical blocks only when needed. r=igor
Terminology:

A "script block" is an object of class Block allocated by the byte
compiler and associated with a script.  Script blocks are never
modified, and may be used as a prototype for a "closure block":

A "closure block" is an object of class Block that holds variables
that have been closed over (although we actually leave the variables
on the stack until we leave their dynamic scope).  A closure block is
a clone of a script block (its prototype is a script block).

Adjust the meanings of fp->blockChain and fp->scopeChain:

  fp->blockChain is always the innermost script block in whose static
  scope we're executing.

  fp->scopeChain is the current scope chain, including 'call' objects
  and closure blocks for those function calls and blocks in whose
  static scope we are currently executing, and 'with' objects for with
  statements; the chain is typically terminated by a global object.
  However, as an optimization, the young end of the chain omits block
  objects we have not yet needed to clone.

Closures need fully reified scope chains, so have js_GetScopeChain
reify any closure blocks missing from the young end of fp->scopeChain
by cloning script blocks as needed from fp->blockChain.  Thus, if we
never actually close over a particular block, we never place a closure
block for it on fp->scopeChain.

Have JSOP_ENTERBLOCK and JSOP_LEAVEBLOCK always keep fp->blockChain
current.  When JSOP_LEAVEBLOCK pops a block from fp->blockChain that
has been cloned on fp->scopeChain, pop fp->scopeChain as well.

Remove the JSFRAME_POP_BLOCKS flag, as it is no longer needed.

Ensure that the JIT won't have to create closure blocks or call
js_PutBlockObject; it can't handle those things yet.  Note our current
script block when we begin recording.  Abort recording if we leave
that block; we can't tell in advance whether it will need to be "put"
in future trace invocations.  Leave trace if we call js_GetScopeChain
while in the static scope of lexical blocks.  Remove JIT tests based
on JSFRAME_POP_BLOCKS.

Verify that generators capture the correct value for blockChain.

Add a constructor to JSAutoTempValueRooter for rooting JSObject
pointers.
2009-03-14 00:58:27 -07:00
Jim Blandy
d72dff994b Back out 480132 fix; static analysis red 2009-03-14 00:57:54 -07:00
Jim Blandy
4778b96a85 Bug 480132: Clone lexical blocks only when needed. r=igor
Terminology:

A "script block" is an object of class Block allocated by the byte
compiler and associated with a script.  Script blocks are never
modified, and may be used as a prototype for a "closure block":

A "closure block" is an object of class Block that holds variables
that have been closed over (although we actually leave the variables
on the stack until we leave their dynamic scope).  A closure block is
a clone of a script block (its prototype is a script block).

Adjust the meanings of fp->blockChain and fp->scopeChain:

  fp->blockChain is always the innermost script block in whose static
  scope we're executing.

  fp->scopeChain is the current scope chain, including 'call' objects
  and closure blocks for those function calls and blocks in whose
  static scope we are currently executing, and 'with' objects for with
  statements; the chain is typically terminated by a global object.
  However, as an optimization, the young end of the chain omits block
  objects we have not yet needed to clone.

Closures need fully reified scope chains, so have js_GetScopeChain
reify any closure blocks missing from the young end of fp->scopeChain
by cloning script blocks as needed from fp->blockChain.  Thus, if we
never actually close over a particular block, we never place a closure
block for it on fp->scopeChain.

Have JSOP_ENTERBLOCK and JSOP_LEAVEBLOCK always keep fp->blockChain
current.  When JSOP_LEAVEBLOCK pops a block from fp->blockChain that
has been cloned on fp->scopeChain, pop fp->scopeChain as well.

Remove the JSFRAME_POP_BLOCKS flag, as it is no longer needed.

Ensure that the JIT won't have to create closure blocks or call
js_PutBlockObject; it can't handle those things yet.  Note our current
script block when we begin recording.  Abort recording if we leave
that block; we can't tell in advance whether it will need to be "put"
in future trace invocations.  Abort recording if we call
js_GetScopeChain while in the static scope of lexical blocks.  Remove
JIT tests based on JSFRAME_POP_BLOCKS.

Verify that generators capture the correct value for blockChain.

Add a constructor to JSAutoTempValueRooter for rooting JSObject
pointers.
2009-03-13 23:43:32 -07:00
Robert Sayre
8e061e35da Backout patch for Bug 480132. Debug only nit fix busts static analysis compile. 2009-03-14 02:20:45 -04:00
Jim Blandy
40e8a7d560 Bug 480132. SpiderMonkey clones too many blocks into the heap. r=igor 2009-03-14 02:09:28 -04:00
Igor Bukanov
4b95050fe2 Backed out changeset 57de81309176 - bug 437325 - due to mochitest leaks on tinderbox 2009-03-13 18:36:46 +01:00
Igor Bukanov
3de011b9cd bug 437325 - JSThread is no longer shared between runtimes. r=brendan 2009-03-13 12:36:21 +01:00
Igor Bukanov
75640ecce1 Backed out changeset 4159ebdfe31e to fix some typos in the patch 2009-03-13 12:21:04 +01:00
Igor Bukanov
8eeedd9647 bug 437325 - JSThread is not shared between runtimes. r=brendan 2009-03-13 12:10:34 +01:00
Graydon Hoare
b65177a23f Bug 482263 - Avoid re-entering recorder while deep aborting, r=mrbkap. 2009-03-12 20:14:51 -07:00
Andreas Gal
52cc17234c Check for non-stub getters/setters in SETNAME and SETPROP and invoke SetPropHit after setting the property in INITPROP (481989, r=brendan). 2009-03-07 01:25:37 -08:00
Andreas Gal
b18ca034e3 Better coordination of nested tree recording (481793, r=dmandelin). 2009-03-06 17:25:04 -08:00
Andreas Gal
3067959f6b Guard that we don't have to re-brand when writing a function into a slot if we didn't do so at recording time (481246, r=brendan). 2009-03-03 14:34:48 -08:00
Andreas Gal
1cbf259c3c Improve blacklisting (479109, r=graydon). 2009-02-25 18:47:22 -08:00
David Anderson
10ded87ae6 Fixed breakage of type stability guarantees between linked trees, and fixed using the wrong global typemap in LeaveTree (bug 476653, r=gal). 2009-02-24 22:52:09 -05:00
Andreas Gal
d8bfd089e8 Backout 479109. Breaks trace-tests. 2009-02-23 12:29:08 -08:00
Andreas Gal
8ee9d2df93 Merge. 2009-02-23 11:34:50 -08:00
Andreas Gal
c36a8ab483 Improve blacklisting algorithm (479109, r=graydon). 2009-02-23 11:31:20 -08:00
Robert Sayre
12943580cf Merge m-c to tracemonkey. 2009-02-23 12:44:23 -05:00
Jeff Walden
5d932d1110 Bug 478968 - TM: equalityHelper can call toString or valueOf erroneously when tracing obj == undefined. r=brendan 2009-02-21 23:33:58 -08:00
Benjamin Smedberg ext:(%2C%20Jason%20Orendorff%20%3Cjorendorff%40mozilla.com%3E)
d40f9751c8 Bug 476643 - JS_REQUIRES_STACK errors in nsXPCWrappedJSClass::CallMethod. Mozilla code uses some JS-internal APIs and needs to bail off trace before doing so. This shouldn't affect performance now becuase XPConnect methods are not traceable yet. r=mrbkap, sr=mrbkap. 2009-02-18 12:47:16 -06:00
Jason Orendorff
6431f3391d Bug 476716 - Split ip_adj into two pointer fields, pc and imacpc. r=brendan. 2009-02-16 17:09:59 -06:00
Robert Sayre
695b4646c3 Merge tm to mc 2009-02-19 11:48:08 -05:00
Jim Blandy
ede7e6d142 Bug 391488: Eliminate PTRDIFF macro; delete jssttddef.h. r=jimb
Delete jsstddef.h, since its only remaining purpose is to make certain
Win16-specific definitions; we don't support Win16 any more.  In
particular, we can just subtract pointers now, so the PTRDIFF macro is
unnecessary noise.

Most places get stddef.h via jstypes.h or some other header, so we can
just delete #inclusions of jstddef.h.  The exception is jskwgen.h, so
there we explicitly include <stddef.h> instead.
2009-02-18 09:14:51 -08:00
Graydon Hoare
195e361c59 Bug 477425 - Back out lirbuf-based allocation of fragments and treeinfos, r=gal. 2009-02-11 21:59:57 -08:00
David Mandelin
39b9e72a0c Bug 475115: LIR_jtbl: jump tables to implement jsop_tableswitch, r=gal,r=edwsmith 2009-02-11 17:40:27 -08:00
Graydon Hoare
8c3802fc54 Bug 466747 - Flush fragments for a JSScript when it is destroyed, r=gal. 2009-02-09 16:58:39 -08:00
Graydon Hoare
d459aeaced Bug 477425 - Allocate TreeInfo and UnstableExit in LirBuffer, r=gal. 2009-02-09 16:49:25 -08:00
Andreas Gal
a4a912921f If js_AddAsGCBytes is called from trace and wants to GC and we can bail off trace then do so instead of returning an error (476869, r=jorendorff). 2009-02-06 10:11:45 -08:00
Jeff Walden
2ec31b1171 Back out 21494181fdb8 and subsequent merges because they turned OS X red. 2009-02-05 15:42:45 -08:00
Andreas Gal
7f9ae88519 If js_AddAsGCBytes is called from trace and wants to GC and we can bail off trace then do so instead of returning an error (476869, r=jorendorff). 2009-02-05 14:43:17 -08:00
Jeff Walden
56f45fc062 Kill trailing whitespace in jstracer.h to kick a box out of a bogus orange 2009-02-04 22:57:25 -08:00
Jason Orendorff
e4c1fb1cfd Bug 462027 - Bail off trace when reentering interpreter. r=gal. 2009-02-03 18:25:12 -06:00
Jason Orendorff
4e3f2cfd40 Revert to 07be1f190a3d. Revision 5f5c1cd63641 should not have been pushed. 2009-02-03 12:38:44 -06:00
Jason Orendorff
f6ffd1d380 [mq]: bug-462027-v9 2009-02-02 20:42:46 -06:00
Jason Orendorff
37f2985bdf Bug 476177 - TM: cx->stackPool must not be accessed on trace. r=brendan.
--HG--
extra : rebase_source : 746d61b54aa38cbe18fe31bce4efcbbad4629678
2009-01-30 17:40:05 -06:00
Graydon Hoare
5219181495 Bug 475474 - Maintain globalSlots per global, not just one per JIT instance, r=danderson. 2009-01-29 15:59:52 -08:00
Jason Orendorff
6142999fde Bug 468782 - TM: js_FastValueToIterator and js_FastCallIteratorNext can reenter (relanding with a bug fix). r=brendan. Note that this changeset alone does not fix the bug; an upcoming patch in bug 462027 completes the fix. 2009-01-28 09:24:35 -06:00
Andreas Gal
ecba1bc0b1 Update the tracker if the global object's dslots are reallocated at recording time (475645, r=brendan). 2009-01-28 00:12:37 -08:00
Andreas Gal
868cf7c72c Backed out changeset ece63b96379b 2009-01-27 00:10:38 -08:00
Jason Orendorff
c0cc74fa99 Bug 468782 - TM: js_FastValueToIterator and js_FastCallIteratorNext can reenter. r=brendan. Note that this changeset alone does not fix the bug; an upcoming patch in bug 462027 completes the fix. 2009-01-27 00:19:58 -06:00
Graydon Hoare
170e5b5921 Bug 473688 - provide a 2-level hash map (global, pc) -> tree, r=gal. 2009-01-26 19:53:19 -08:00
Benjamin Smedberg
7ee0b42cb8 Bug 474996 - JS_REQUIRES_STACK violation in TraceRecorder::hasIteratorMethod, r=jorendorff 2009-01-26 14:26:24 -05:00
Andreas Gal
184fc63cd1 Backout bug 468782. Confirmed to leak. 2009-01-25 16:38:31 -08:00
Graydon Hoare
da2b8f5507 Bug 472180 - Move fragment hit and blacklist counts to hashtable in oracle, r=gal. 2009-01-23 14:24:50 -08:00
Jason Orendorff
c9961fe054 Bug 468782 - TM: js_FastValueToIterator and js_FastCallIteratorNext can reenter. r=brendan. Note that this changeset alone does not fix the bug; an upcoming patch in bug 462027 completes the fix. 2009-01-22 16:39:26 -06:00
Andreas Gal
570f41d3b7 Fix incorrect reliance on the identity of the global object on trace (474888, r=brendan, relanding). 2009-01-25 09:04:03 -08:00
Andreas Gal
1d277bc633 Backout all patches since last mozilla-central merge (Thu Jan 22 19:14:02 2009 -500 by sayrer). 2009-01-25 02:58:22 -08:00
Andreas Gal
1b154f72a6 Merge. 2009-01-23 15:15:34 -08:00
Andreas Gal
920ecc2113 Backed out changeset 17663da1b840 (bug 462027). 2009-01-23 15:14:46 -08:00
Graydon Hoare
0b98b2e8cb Bug 472180 - Move fragment hit and blacklist counts to hashtable in oracle, r=gal. 2009-01-23 14:24:50 -08:00
Jason Orendorff
9ff9140ae0 Bug 468782 - TM: js_FastValueToIterator and js_FastCallIteratorNext can reenter. r=brendan. Note that this changeset alone does not fix the bug; an upcoming patch in bug 462027 completes the fix.
--HG--
extra : rebase_source : 585d590aace159914629a786489b0883d23cf2a8
2009-01-22 16:39:26 -06:00
Andreas Gal
d940283d33 Fix incorrect reliance on the identity of the global object on trace (474888, r=brendan). 2009-01-22 17:58:18 -08:00
David Anderson
b3ff178462 Specialize trees to global types, so global type instability does not flush the cache (bug 469044, r=gal,brendan). 2009-01-22 01:45:19 -05:00
Jeff Walden
314cf39c41 Bug 472592 - unbox_jsval is infallible, make the signature reflect that. r=gal 2009-01-11 13:57:42 -08:00
Jeff Walden
179a1749fb Despite the previous log message, the previous push was r=brendan 2009-01-10 15:25:03 -08:00
Jeff Walden
949fc3d056 Bug 466905 - Fix JSOP_NEWARRAY to be not-buggy and use it when possible. NOT REVIEWED YET 2009-01-10 12:15:08 -08:00
Graydon Hoare
8424af9530 Bug 472553 - Annotations required by jsstack.js analysis, r=jorendorff. 2009-01-07 14:14:51 -08:00
Jason Orendorff
7f92f10b08 Bug 468641 - TM: Add bytecode disassembly to JS_JIT_SPEW output (r=crowder) 2009-01-06 16:51:32 -06:00
Benjamin Smedberg
2e82fb25f7 No bug, TraceRecorder::tprint requires the stack, r=jorendorff on IRC 2009-09-29 13:24:37 -04:00
Robert Sayre
5dbce00686 Backed out changeset f5ea964eb493. (Brendan Eich — High-level CSE for shape guards (518448, r=jorendorff). 2009-09-26 08:16:58 -07:00
Andreas Gal
61a1479f3e Don't try to deallocate the trace recorder from inside one of its own instance methods (472049, r=brendan). 2009-01-05 16:13:53 -08:00
Andreas Gal
8b28ae8610 Store frame state information in the code cache and merely put a pointer to it onto the native call stack (470375, r=danderson). 2009-01-01 17:55:43 -08:00
Jeff Walden
af717d86d5 Bug 470739 - Trace more == cases. r=gal 2008-12-26 14:48:33 -05:00
Igor Bukanov
5d5cb0738c bug 469233 - using interrupt hook support in the interpreter for trace recording. r=brendan 2008-12-21 12:55:09 +01:00
Igor Bukanov
8062218e55 Backed out changeset 605fd1985d05 - more merge typos. 2008-12-21 12:50:36 +01:00
Igor Bukanov
1be7edd38e bug 469233 - using interrupt hook support in the interpreter for trace recording. r=brendan 2008-12-21 12:31:38 +01:00
Igor Bukanov
635ca1d23a Backed out changeset f13e2a2a5d66 - I was not careful when merging the unary op changes 2008-12-21 12:23:08 +01:00
Igor Bukanov
3388b615ce bug 469233 - using interrupt hook support in the interpreter for trace recording. r=brendan 2008-12-21 00:16:41 +01:00
Jeff Walden
4710efd8a4 Bug 469942 - TM: 20% slower to compute unary +/-. r=brendan 2008-12-19 19:30:09 -08:00
Brendan Eich
90fd9c4313 Merge m-c into tm again. 2008-12-18 22:11:42 -08:00
Brendan Eich
9af4f618a7 Bug 470300 - "Assertion failure: StackBase(fp) + blockDepth == regs.sp" with |let| (r=gal). 2008-12-18 21:08:57 -08:00
Andreas Gal
bbf40348b6 Trace apply/call with an imacro (465214, r=brendan). 2008-12-18 19:20:47 -08:00
Jeff Walden
201e000573 Bug 470133 - TM: fails to trace case with a type mismatch. r=gal 2008-12-18 10:35:09 -08:00
Andreas Gal
3af573343f Backed out changeset 95b210c2fc92 preemptively. Seems to crash the browser. 2008-12-17 23:09:26 -08:00
Andreas Gal
62f0547add Trace apply/call using an imacro (465214, r=brendan). 2008-12-17 22:53:35 -08:00
Brendan Eich
56658da21f Bug 465460 - TM: valueOf ignored on third iteration of loop (r=gal). 2008-12-16 19:03:42 -08:00
Robert Sayre
443f738d12 Backed out changeset f682453c06d0. Failing scriptaculous unit tests, doesn't build on windows or mac ppc. 2008-12-11 20:43:32 -08:00
Brendan Eich
ece10ee8df Bug 465460 - TM: valueOf ignored on third iteration of loop (r=gal). 2008-12-11 17:50:56 -08:00