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
0feab81363
Backout bug 475048, it causes mochitests to hang.
2009-01-25 15:26:52 -08:00
Andreas Gal
8a264cf6ce
Only emit alias check in for *PROP if the object's shape matches the global object's shape (475048, r=brendan, relanding).
2009-01-23 10:41:44 -08:00
Andreas Gal
9460746d1d
Fixed correctness and leak regression from bug 469044 landing (bug 474769, r=gal, relanding).
2009-01-25 09:05:21 -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
1baff988de
Only set onTrace flag while running native code, not when recording (474771, r=brendan).
2009-01-23 20:22:23 -08:00
Andreas Gal
a9682f9dff
Backed out changeset 05cbbc9f1ae2, which backed out bug 24106 (so this is re-landing 24106).
2009-01-23 16:56:38 -08:00
Andreas Gal
347e44c31a
Backed out changeset 9fe03078c765 (bug 475048).
2009-01-23 15:13:57 -08:00
Andreas Gal
c7f9743a3d
Only emit alias check in for *PROP if the object's shape matches the global object's shape (475048, r=brendan).
2009-01-23 10:41:44 -08:00
David Anderson
dc86ddce2f
Fixed correctness and leak regression from bug 469044 landing (bug 474769, r=gal).
2009-01-22 22:40:59 -05:00
Andreas Gal
039fe38bed
Test-case for bug 465915 (r=me).
2009-01-22 01:43:28 -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
25c8ed99e7
Fix typo noted by bclary in bug 471214
2009-01-20 15:20:21 -08:00
Robert Sayre
aa3aaf69b2
Merge tracemonkey to mozilla-central.
2009-01-31 11:45:24 -08:00
Robert Sayre
7a7d5be9e1
Merge tracemonkey to mozilla-central.
2009-01-28 10:56:08 -08:00
Bob Clary
d7ff11e034
bug 458838 - JavaScript Test by Boris Zbarsky.
2009-01-28 08:34:12 -08:00
Jeff Walden
a7f81d75f6
Unbreak optimized builds so that jitstats typo-checking doesn't affect them; in builds without the global tracemonkey property, we won't have any known jitstats, so check for that case and don't do typo-checking when jitstats tests can't actually be performed. r=graydon
2009-01-16 12:13:13 -08:00
Jeff Walden
01bff439bc
Backed out changeset 71cd51a61b67
2009-01-14 11:28:59 -08:00
Jeff Walden
873ec9adae
Remove a tab, kick tinderboxen to see if oranges are spurious or not
2009-01-13 23:03:42 -08:00
Jeff Walden
367ca9d882
Bug 470997 - TM: trace-test.js should throw an error when |test.jitstats| contains an unrecognized property name. r=gal
2009-01-12 18:06:22 -08:00
Jeff Walden
d1f00e6d29
Add new jitstats to the list in trace-test.js, and add a comment to jitstats.tbl noting that the two lists must be synchronized.
2009-01-12 16:37:09 -08:00
Jeff Walden
c0e7964c90
Fix typos in jitstats property name; it's "sideExitIntoInterpreter", not "sideExits"; also bump iteration counts so it's more obvious at a glance that bug 471214 is unfixed (and that when it's fixed the fixedness will be clear).
2009-01-12 16:12:54 -08:00
Jason Orendorff
436a268bae
Fix trace-test bustage due to my last checkin.
2009-01-09 17:12:20 -06:00
Robert Sayre
8549b885a1
Bug 466781 - TM: inconsistent (0 in d) where d is a String. r=brendan
2009-01-09 00:59:24 -05:00
Jason Orendorff
cf74ec9191
Bug 471540 - TM: "Assertion failure: cp >= buf" at homicideReport.php. r=gal.
...
--HG--
extra : rebase_source : 7f3bc4e8db9ce307360792b889943d8609e8ff6e
2009-01-08 17:09:16 -06:00
Jason Orendorff
b20c028359
Bug 462021 - TM: Make JSStackFrame reconstitution infallible (part 3 of 4, call objects, r=brendan)
...
--HG--
extra : rebase_source : 14a82b2b08c8b7dbae5e72623685b7c3947df603
2008-12-11 17:53:05 -06:00
Jeff Walden
d39a0ed158
Move trace-test-math.js to math-trace-tests.js and remove trace.js because they defy my tab-complete-fu
...
--HG--
rename : js/src/trace-test-math.js => js/src/math-trace-tests.js
2009-01-05 18:28:48 -08:00
Andreas Gal
21b0d26f45
Allocate the next page to be used in a lirbuf early to avoid running OOM during a page overflow (471316, r=danderson).
2008-12-30 17:03:43 -08:00
Jeff Walden
5d25aca194
Bug 470737 - TM: "switch(1/0){case Infinity:}" 4X slower with JIT enabled. r=gal
2008-12-22 15:42:24 -08:00
Jeff Walden
5d05cfd543
Bug 470409 - TM: Crash [@ js_EqualStrings]. r=brendan
2008-12-21 21:26:08 -08:00
Jeff Walden
6f0de3c4e0
Bug 470137 - TM: Behavioral difference in addition of objects between JIT, non-JIT. r=brendan
2008-12-21 21:26:08 -08:00
Jeff Walden
4710efd8a4
Bug 469942 - TM: 20% slower to compute unary +/-. r=brendan
2008-12-19 19:30:09 -08:00
Jeff Walden
aa66ca5eb0
Whitespace patrol, move some tests before mandelSet where they should have been, add big scary warnings about not putting anything after mandelSet because they won't get run very often (not until just pre-commit, usually).
2008-12-19 19:09:27 -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
Jim Blandy
dc9a66856f
Bug 461180: Add coverage tests for traceable math native functions. r=mrbkap
...
These cases are adapted from those in js/tests/ecma/Math.
2008-12-15 14:45:56 -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
Jeff Walden
6afac16038
Bug 465255 - Rewrite TraceRecorder::cmp, take five. (Three, sir!) Three! r=gal
2008-12-08 21:11:56 -08:00
Jason Orendorff
413e752410
Bug 453564 - TM: Assertion failure: JSVAL_IS_NULL(vp[0]) || (!JSVAL_IS_PRIMITIVE(vp[0]) && OBJ_IS_ARRAY(cx, JSVAL_TO_OBJECT(vp[0]))). r=gal.
...
--HG--
extra : rebase_source : be08d1a4ca8a3765523b992a5d4e469e67ba8811
2008-12-09 11:43:32 -06:00
Jeff Walden
e48c310d01
Dangit, why do the tests run correctly locally in small batches? Backing out bug 465255...
2008-12-08 22:19:54 -08:00
Jeff Walden
f143157358
Bug 465255 - Rewrite TraceRecorder::cmp, take two. r=gal
2008-12-08 21:11:56 -08:00
Jeff Walden
77eeb36575
Back out bug 465255, seems I was wrong about the compile error and warning being the only bugs.
2008-12-05 19:51:35 -08:00
Jeff Walden
6cb6d5d43b
Bug 465255 - Rewrite TraceRecorder::cmp. r=gal
2008-12-05 16:17:59 -08:00
Andreas Gal
e367780a2f
Trace apply and call (462482, r=brendan).
2008-12-04 18:07:18 -08:00
Jim Blandy
53829abcf7
Bug 461180: Fix result comparison function for trace tests. r=mrbkap
...
This allows the math tests (next patch) to be pickier about NaN and
negative zero. With the earlier patch, it introduces no regressions.
2008-12-01 15:14:06 -08:00
Jim Blandy
81c2c7def7
Bug 461180: Use 'uneval' when printing expected and actual test results. r=mrbkap
2008-12-01 15:14:06 -08:00
Jim Blandy
b02e993bd9
Bug 461180: Don't depend on type coercion when checking trace test results. r=mrbkap
...
A number of the tests in js/src/trace-test.js specify expected results
of a different type from the actual results. For example, the lsh
test function returns an array of results, while its expected value is
that the string that array becomes when coerced to a string. This
trick allows tests to return structured values as results, even though
JavaScript lacks a deep equality operator. However, this behavior can
be troublesome when writing a test whose goals include checking the
type of the result.
Some tests simply specify expected values as strings for no apparent
reason.
This patch reworks these so that the expected and actual values have
the same type.
2008-12-01 15:14:06 -08:00
David Anderson
c2f9deb2b1
Fixed regression checked in for bug 466128 (bug 466262, r=gal).
2008-11-21 22:55:03 -06:00
David Anderson
cea571a94b
Fixed JSOP_NEG not checking overflow at recording time (bug 465688, r=gal).
2008-11-21 17:17:34 -08:00
David Anderson
56fbffe8c4
Allow recorders to trash multiple trees on the way out (bug 466128, r=gal).
2008-11-21 15:31:59 -08:00
David Anderson
6c91afa7b7
Fix CALLPROP not guarding that the callee is not NULL (bug 465580, r=gal).
2008-11-19 16:08:41 -08:00
David Anderson
63c268384c
Fixed unsafe coercion of JSVAL_VOID to string on trace entry (bug 465483, r=brendan).
2008-11-18 19:48:02 -06:00
Brendan Eich
37c40ca7c0
Merge.
2008-11-17 16:29:40 -08:00
Andreas Gal
f7ca65fe0f
Don't demote multiplication, even if result is demoted and inputs are demotable (465308, r=danderson).
2008-11-17 01:39:49 -08:00
Andreas Gal
4287473ba2
Merge.
2008-11-17 00:05:59 -08:00
Andreas Gal
cdbe1015e3
Don't attempt to do CSE across labels (465276, r=danderson).
2008-11-17 00:05:29 -08:00
David Anderson
442b376986
Fixed regression from recent constant folding patch (bug 465272, r=gal).
2008-11-16 22:52:15 -08:00
Andreas Gal
a9d9eff7ee
Merge.
2008-11-16 22:13:37 -08:00
Andreas Gal
3c5889df4e
Fix tracing of JSOP_IN (465241, r=danderson).
2008-11-16 22:13:13 -08:00
David Anderson
a653ef6015
Fixed branch traces being erroneously marked as dependent trees (bug 464979, r=gal).
2008-11-16 21:58:35 -08:00
David Anderson
637ce7666a
Merge.
2008-11-16 21:37:28 -08:00
David Anderson
d46ed014cf
Fixed edge case in nanojit register allocation for shl/shr (bug 465135, r=gal).
2008-11-16 21:36:33 -08:00
Andreas Gal
bd10f75bdb
Can't bypass ECMADoubleToInt32 in js_StringToInt32 (465239, r=danderson).
2008-11-16 20:43:13 -08:00
Andreas Gal
0218a2502b
Merge.
2008-11-16 20:22:52 -08:00
Andreas Gal
b1e33fe0ff
JIT affects truthiness of "" <= null (465234, r=Waldo).
2008-11-16 20:22:01 -08:00
Jeff Walden
7c2bb3cab6
Bug 465137 - TM: JIT thinks !NaN is false. r=gal
2008-11-16 18:28:51 -08:00
David Anderson
db46b11fa1
Fixed recorders already deeply aborted being pushed onto the deep abort stack (bug 465145, r=gal).
2008-11-16 02:34:51 -06:00
Andreas Gal
4da6188c80
Implement ordered comparison for objects (465133, r=brendan).
2008-11-15 23:19:46 -08:00
Jeff Walden
dded0f5f95
Bug 462060 - TM: JIT: Initializing an array to a constant in a loop doesn't work for some constant values. r=brendan
2008-11-15 16:42:35 -08:00
Andreas Gal
acebe116c1
Don't flush JIT cache from within the recorder (464403, r=brendan).
2008-11-13 15:58:58 -08:00
Brendan Eich
cb47c4cf08
Bug 456511 - (imacros) TM: Make conversion work on arbitrary JSObjects (r=gal).
2008-11-13 00:30:20 -08:00
David Anderson
30101c6443
Fixed recursion in thin loops accidentally trying to close the parent loop (bug 464089, r=gal).
2008-11-12 19:00:15 -08:00
Andreas Gal
074d900a57
Backed out changeset a40f2117bcc0
2008-11-12 17:39:48 -08:00
Brendan
0ca607d76b
Add imacros to support conversion of arbitrary JSObjects (456511, r=gal).
2008-11-12 16:55:45 -08:00
Andreas Gal
55c5823950
Backed out changeset 594ec832d9a8
2008-11-07 18:19:35 -08:00
Andreas Gal
54ba19de70
Trace Function.apply and Function.call (462482, r=brendan).
2008-11-07 15:58:52 -08:00
David Anderson
fa14a92fe7
Fixed multitrees assert when building failed speculated branches (bug 463490, r=gal).
2008-11-07 13:22:05 -08:00
David Anderson
00bfbb7d80
Make sure double slots are marked as undemotable when stabilizing a tree with failed speculation (bug 462407, r=gal).
2008-10-30 15:54:22 -07:00
David Anderson
48b976a104
Don't coerce void to string when compiling inner tree calls (bug 462388, r=gal).
2008-10-30 13:48:22 -07:00
David Anderson
9763f21aae
Added multitrees test to trace-tests.js for bug 456479.
2008-10-30 11:52:48 -07:00
David Anderson
2f8b8195c3
Added multitrees test to trace-tests.js for bug 454315.
2008-10-30 11:42:12 -07:00
Brendan Eich
6ddc16bbe2
Bug 462103 - TM: We don't trace some variants of string + other type (gal+brendan red-headed stepchild).
2008-10-29 00:14:30 -07:00
Brendan Eich
8c2eead6a8
Keep testGlobalProtoAccess last.
2008-10-28 17:34:09 -07:00
Jason Orendorff
5258c4d288
Bug 461723 - TM: "Assertion failure: (m != JSVAL_INT) || isInt32(*vp)" with "(0 + void 0) && 0". r=gal.
2008-10-28 11:52:38 -07:00
Brendan Eich
d0d72f5cbc
Keep this test last, and clean up prototype pollution, plus test for bug 458851.
2008-10-28 00:11:26 -07:00
David Anderson
bf1a78f4fe
Implemented multiple type specialized trees per entry point (bug 450833, r=gal)
2008-10-27 20:42:49 -07:00
Jason Orendorff
154b1955c7
Bug 456384 - TM: v8-richards.js benchmark opens a print dialog in browser with JIT enabled. r=brendan
2008-10-27 16:15:32 -07:00
David Anderson
b2a6f01baa
Fixed trace-tests for isPromoteInt patch which reduced tree recompilation counts.
2008-10-25 03:35:07 -05:00
Andreas Gal
06b393e8a2
Trace reading from dense arrays out of bounds and trace undefined -> number conversion in binary ops (461611, r=brendan).
2008-10-24 21:51:04 -07:00
Andreas Gal
ba66d9d48c
Added test-case for 459630 (WFM) to make sure we don't regress it down the road.
2008-10-22 19:06:18 -07:00
Andreas Gal
5cc94e1d59
Re-use loop exit side exit if we already have one for that PC location and the same type map (461076, r=danderson).
2008-10-22 16:27:25 -07:00
Blake Kaplan
e36fb599bc
Bug 460886 - Substring needs to validate its arguments. r=brendan
...
--HG--
extra : rebase_source : 24d0131da47e8fb30cb420330bdb92189436aea7
2008-10-21 15:21:23 -07:00
Andreas Gal
b4ee05c105
Trace Number.toString(base), not just Number.toString() (459772, r=brendan).
2008-10-13 19:07:30 -07:00
Andreas Gal
525decaff0
Fix number of expected traces for testNestedExitStackOuter in trace-tests.js
2008-10-13 13:19:37 -07:00
Andreas Gal
9bfc3c5072
Properly recover from a nested side exit with more than a single level of nesting (459539, r=danderson).
2008-10-12 15:39:32 -07:00
Andreas Gal
c974289da5
Support thin loops (iteration < 2) by closing the loop even if we are on the last iteration (456431, r=danderson).
2008-10-08 21:02:04 -07:00
Jason Orendorff
3204ec178a
Bug 459085 - TM: Number.toString traceable native is broken (r=gal)
2008-10-08 17:19:15 -05:00
Andreas Gal
52f71e38dc
Add missing comparison before letting the result of the conditional move flow into the guard for ordered boolean comparisons (457778, r=danderson).
2008-10-07 13:32:30 -07:00
Andreas Gal
1b0fd40e30
Trace push and pop for dense and sparse arrays (453734, r=brendan).
2008-10-07 11:00:16 -07:00
Boris Zbarsky
cab53dbee6
Bug 456165. Trace |new Date()|. r=brendan
2008-10-06 20:28:22 -04:00
Boris Zbarsky
be17e08640
Adding mandelbrot to trace-test
2008-10-02 19:30:46 -04:00
Brendan Eich
502fb4e4c8
Bug 456831 - TM: Trace JSOP_SETLOCALPOP (r=mrbkap).
2008-10-02 15:39:25 -07:00
Andreas Gal
49de341e4a
Fixed more confusion of quads/numbers while emitting LIR (bug 458076, r=danderson).
2008-10-01 18:04:39 -05:00
David Anderson
75e7abcf38
Fixed crash when charCodeAt failed (with NaN) while recording (bug 457795, r=gal).
2008-09-29 23:20:34 -05:00
Andreas Gal
36e0e1fcbf
Catch negative indexes at recording time. At runtime the builtins already check for us. Also guard for shape and setters/getters for non-dense integer index setelem case (57580, r=mrbkap).
2008-09-28 17:11:47 -07:00
Andreas Gal
e6006ef942
Add test case for 457456.
2008-09-27 13:13:42 -07:00
Andreas Gal
9960750440
Can't use JSVAL_IS_BOOLEAN on trace since boolean type contains undefined (457351, r=brendan).
2008-09-26 19:20:52 -07:00
Andreas Gal
884eabf3d5
Cleanup SETELEM, box early (in case we side exit on that) and don't set return value if INITELEM or followed by POP (457336, r=brendan).
2008-09-26 17:33:40 -07:00
Boris Zbarsky
fe2220afb1
Bug 456165 part 2. Trace Date.now. r=gal
2008-09-26 14:37:50 -04:00
Boris Zbarsky
a4b9ae6222
Bug 456370. Flush the fragment cache earlier on global shape mismatch. r=gal
2008-09-26 14:37:49 -04:00
Brendan Eich
8030ce9609
Bug 457130 - TM: regexp lastIndex property not traced correctly (r=danderson).
2008-09-25 17:45:14 -07:00
David Anderson
fca4e20f3a
Added test case for bug 456667.
2008-09-25 14:16:24 -07:00
Andreas Gal
5b117e1c3f
Rewrite and cleanup GETELEM and SETELEM (455748, r=brendan).
2008-09-25 11:31:40 -07:00
Andreas Gal
619234db4c
Back out attempt to invoke natives that return a boxed value (namely push and pop, 453734).
2008-09-24 15:18:19 -07:00
David Anderson
a53ee95a20
Fixed breaks in switch statements causing premature end-of-traces (bug 456345, r=gal,brendan).
2008-09-24 13:12:25 -07:00
Andreas Gal
958c18fb2a
Add builtin for invocation of match() on String objects (454682, r=danderson).
2008-09-23 17:18:40 -07:00
Andreas Gal
5054e0003b
Don't emit constant guards for switch and ifop (455605, r=danderson).
2008-09-22 17:58:25 -07:00
Boris Zbarsky
5bf1de2855
Bug 456369. Checking of JIT stats should not loop. r=brendan
2008-09-22 17:37:59 -04:00
Boris Zbarsky
f1b69640dd
Backed out changeset c0364f5e0a84
2008-09-21 09:02:09 -04:00
Boris Zbarsky
f068ba4b22
Adding missing file
2008-09-21 08:59:52 -04:00
Brian Crowder
d87b65397b
Add a JIT stats object in the shell
2008-09-19 22:47:58 -04:00
Boris Zbarsky
4b972f730f
Adding test for bug 451605
2008-09-19 21:58:00 -04:00
Andreas Gal
9d7afa336a
Add support for fast native that return jsval and wire up push/pop (453734, r=mrbkap).
2008-09-18 16:53:09 -07:00
Andreas Gal
9908bc1345
Merge.
2008-09-18 16:08:52 -07:00
Andreas Gal
2c406fe617
Add support for JSOP_NOT on strings (451787, r=danderson).
2008-09-18 16:04:54 -07:00
David Anderson
b895f26605
Fixed trying to record arguments past the formal arg count in JSOP_ARGSUB and JSOP_CALL (bug 455757, r=gal).
2008-09-18 15:23:22 -07:00
Andreas Gal
708f08ca9c
Properly handle side exits in scripted constructors (originally mrbkap, r=brendan, 453462).
2008-09-18 14:13:37 -07:00
Andreas Gal
183ab27e9d
Use Object as prototype if the prototype of the constructor is primitive (452960, r=mrbkap).
2008-09-16 18:49:27 -07:00
Andreas Gal
37a7d9274f
Add test case for 455408.
2008-09-16 08:07:01 -07:00
brendan
663c6aeb04
test_property_cache_direct_slot forgot to insist on a direct slot for get ops (453249, r=gal).
2008-09-15 19:40:43 -07:00
Andreas Gal
a580bcd185
Implement comparison of numbers against null (455293, r=brendan,danderson).
2008-09-15 15:30:06 -07:00
Andreas Gal
95068bdc26
Properly handle floating point array indexes (453261, r=brendan).
2008-09-15 15:00:40 -07:00
Blake Kaplan
4203e79309
Trace Math.max. r=brendan
2008-09-08 20:06:58 -07:00
Brendan Eich
623433f549
Merge.
2008-09-05 18:34:16 -07:00
Brendan Eich
fc936fa1da
Checkpoint arguments tour-de-force (453730).
2008-09-05 18:29:08 -07:00
David Anderson
9937dc1262
Trace through Math.log as a known native (bug 453868, r=brendan).
2008-09-05 14:25:01 -07:00
Blake Kaplan
b4d3674f58
Bug 453747 - Replace any holes on the stack with undefined. r=gal
2008-09-04 22:14:27 -07:00
David Anderson
09123ebd63
Don't guard on constant decisions, which will always have the same path (bug 452884, r=gal).
2008-09-04 14:44:59 -07:00
David Anderson
5e828c58d4
Fixed float ops to deal with being handed an LHS GPR reservation on AMD64.
...
Fixed nanojit LIR verbosity crashing on AMD64.
2008-09-04 11:53:49 -07:00
David Anderson
b791826dc5
Fixed JSOP_NEG with 0 being tracked as a promotable int, and added an equals-zero guard for the same opcode (bug 453049, r=gal).
2008-09-03 23:27:58 -07:00
Robert Sayre
7cca7713be
Add tests containing switch statements
2008-08-30 19:35:38 -04:00
Robert Sayre
52a7fb0b98
Add test for more bitwise ops
2008-08-30 19:20:54 -04:00
Andreas Gal
113ad8babe
Add builtins for toLowerCase, toUpperCase and replace(str,str) (452885, r=mrbkap).
2008-08-29 17:35:00 -07:00
Robert Sayre
f35adba372
Add tests covering division.
2008-08-29 13:04:08 -04:00
Robert Sayre
5d1f73ba74
Add tests for continue statement.
2008-08-29 11:01:56 -04:00
Brendan Eich
5d132dba83
Record JSOP_IN (452563, r=gal).
2008-08-27 23:00:43 -07:00