Commit Graph

723 Commits

Author SHA1 Message Date
David Major
2c2568cc6c Bug 1119030: Make MOZ_CRASHes unique to prevent compiler folding. r=Waldo
--HG--
extra : rebase_source : f8401e3eee6c62545553452e355c8213480a869d
2015-01-08 19:13:04 +13:00
Ehsan Akhgari
bbb500e982 Bug 1116906 - Move AlreadyAddRefed.h to MFBT; r=froydnj 2015-01-07 11:51:29 -05:00
Ehsan Akhgari
860da94550 Bug 1114999 - Part 2: Apply MOZ_NO_ADDREF_RELEASE_ON_RETURN to all smart pointer arrow operators that can return refcounted objects; r=jrmuizel 2015-01-06 16:30:03 -05:00
Ehsan Akhgari
da6750e5e7 Bug 1114987 - Add MOZ_UNSAFE_REF and mark GlobalObject::mGlobalObject as such; r=smaug 2015-01-05 21:01:30 -05:00
Ehsan Akhgari
a41280816e Bug 1116622 - Give TemporaryRef a take() method semantically equivalent to already_AddRefed::take(); r=froydnj
This is in preparation of removing TemporaryRef.  It should help make
already_AddRefed a drop-in replacement for it.
2015-01-05 11:32:37 -05:00
Ehsan Akhgari
339c337cc5 Bug 1117036 - Make it possible to optionally mark functions defined by MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME as MOZ_OVERRIDE; r=froydnj 2015-01-05 11:28:55 -05:00
Chris Peterson
27902ec6b5 Bug 1114724 - Define PRIuSIZE format specifiers for size_t. r=Waldo 2014-12-21 23:30:06 -08:00
Ehsan Akhgari
9297631e0b Bug 1114880 follow-up: Rename MOZ_{STRONG,WEAK}_REF to MOZ_{OWNING,NON_OWNING}_REF
--HG--
extra : rebase_source : 51fff0785d112b5b87be3c6ff723c8986b37effe
2014-12-23 21:17:50 -05:00
Ehsan Akhgari
cef42d50e5 Bug 1114979 - Annotate some strong and weak references in MFBT; r=froydnj
--HG--
extra : rebase_source : 63d9ca59f8f6be06efd087600c8fd5c5f52e5cd1
2014-12-23 17:26:28 -05:00
Dan Gohman
f85e7a0f62 Bug 1113445 - SpiderMonkey: Handle -0 properly in SIMD.float32x4.signMask r=bbouvier,waldo 2014-12-23 13:52:49 -08:00
Ehsan Akhgari
d67ef95234 Bug 1114696 - Add MOZ_STRONG_REF and MOZ_WEAK_REF annotations; r=froydnj 2014-12-22 18:16:55 -05:00
Ehsan Akhgari
89b6ff71bc Bug 1114267 - Part 2: Add MOZ_TRIVIAL_CTOR_DTOR to MOZ_ONLY_USED_TO_AVOID_STATIC_CONSTRUCTORS in non-debug builds; r=jrmuizel 2014-12-22 18:16:16 -05:00
Ehsan Akhgari
d945a5c5ae Bug 773014 - Part 2: Mark Static{Auto,Ref}Ptr as global-only; r=jrmuizel 2014-12-22 18:10:44 -05:00
Jacek Caban
5600b41cb1 Bug 1114368 - Use GCC builtins in MathAlgorithms.h on mingw. r=froydnj 2014-12-22 12:38:41 +01:00
Ehsan Akhgari
d803a0513e Bug 1114351 - Use mozilla::IsNaN() in DOUBLE_TO_JSVAL(); r=Waldo
Note that this requires making sure that IsNaN is constexpr because it
needs to be passed to the constexpr IMPL_TO_JSVALUE() function in
DOUBLE_TO_JSVAL().

--HG--
extra : amend_source : dbd8bb0659b53e7d36d2600ac97f0a753ef772c7
2014-12-21 19:16:49 -05:00
Ehsan Akhgari
9f70bf5cdd Clarify the MakeUnique documentation (comment only change, no bug)
DONTBUILD, CLOSED TREE

--HG--
extra : amend_source : 92e8482f1dfb6f9f47acdec1e570d62887257122
2014-12-19 17:51:10 -05:00
Benjamin Peterson
93d92d03da No bug - fix typo r=me 2014-12-19 12:40:30 -06:00
Ehsan Akhgari
1813ae2d33 Bug 867348 - Part 2: Apply MOZ_NO_ARITHMETIC_EXPR_IN_ARGUMENT to CheckedInt's constructor; r=jrmuizel,cpearce
Note that the analysis currently just looks at the AST subtree of the
function call site and is therefore unable to correctly deal with cases
such as the last two hunks of the change to OggCodecState.cpp.  Fixing
the analysis to deal with that would be very difficult, so we currently
adjust the code so that it compiles.  The first hunk in that file though
is a real bug that this analysis found.
2014-12-18 15:27:05 -05:00
Ryan VanderMeulen
3d7d4af71d Backed out changesets acb4dd16755c and 40768f723990 (bug 867348) for static analysis bustage.
CLOSED TREE
2014-12-18 15:59:51 -05:00
Ehsan Akhgari
2e80a88820 Bug 867348 - Part 2: Apply MOZ_NO_ARITHMETIC_EXPR_IN_ARGUMENT to CheckedInt's constructor; r=jrmuizel
Note that the analysis currently just looks at the AST subtree of the
function call site and is therefore unable to correctly deal with cases
such as the last two hunks of the change to OggCodecState.cpp.  Fixing
the analysis to deal with that would be very difficult, so we currently
adjust the code so that it compiles.  The first hunk in that file though
is a real bug that this analysis found.

--HG--
extra : rebase_source : b44bb6d90d95551d860e0b5a1afcf2bb35cde084
2014-12-18 15:27:05 -05:00
Ehsan Akhgari
9601e35dfd Bug 1111255 - Remove some code specific to MSVC7 from MFBT; r=froydnj
--HG--
extra : amend_source : 3662850820de462e108212626dc7bc1c9e22122e
2014-12-14 14:58:13 -05:00
Ehsan Akhgari
298522e640 Bug 1111247 - Treat C++11 enum types as available on all MSVC versions; r=froydnj
Since we don't support anything older than MSVC2005...

--HG--
extra : amend_source : 80ad15c08f19448f8e896989392c78f1437e982d
2014-12-14 14:56:23 -05:00
Nicholas Nethercote
0846dc4263 Bug 1109407 - Give SegmentedVector a default segment size. r=froydnj.
--HG--
extra : rebase_source : 0ceae77c9fec06bbd8c3231434f62fc0e83d9bf1
2014-12-11 14:11:43 -08:00
Ehsan Akhgari
979a27329e Bug 1109729 - Fix more bad implicit constructors in mfbt; r=froydnj 2014-12-10 17:47:42 -05:00
Nicholas Nethercote
8225c5d531 Bug 1102525 (part 2) - Add SegmentedVector to MFBT. r=froydnj.
This is based on the SegmentedArray type from nsCycleCollector.cpp.

--HG--
extra : rebase_source : 06d2feea3233e5ddd3c47d18c53a661de8a06bb2
2014-12-08 14:45:13 -08:00
Nicholas Nethercote
e4c12e978c Bug 1102525 (part 1) - Add InfallibleAllocPolicy to mozalloc. r=glandium.
--HG--
extra : rebase_source : a79162fb7f73e52c5c8df29c8229efc64c3451e5
2014-12-08 14:45:10 -08:00
Jeff Walden
a904b21ab1 Bug 1105261 - Revert fresh vectors to not prereserving their inline allocation space, because the guaranteed extent of that space is an implementation detail. r=nbp 2014-11-26 16:01:19 -05:00
Phil Ringnalda
9c46b376e7 Backed out 2 changesets (bug 1052139, bug 1105261) for b2g desktop crashes
CLOSED TREE

Backed out changeset 72c672d91f9c (bug 1052139)
Backed out changeset e3ce0e3a147c (bug 1105261)
2014-12-01 18:25:53 -08:00
Jeff Walden
ed080d201a Bug 1105261 - Revert fresh vectors to not prereserving their inline allocation space, because the guaranteed extent of that space is an implementation detail. r=nbp
--HG--
extra : rebase_source : ec5431786f504651b1f8a4a019da6e537b6ac175
2014-11-26 16:01:19 -05:00
Masatoshi Kimura
477326e9e0 Bug 1094012 - Assume Win7 or later on Win64. r=jimm 2014-11-24 22:18:10 +09:00
Nathan Froyd
970fc0e8a3 Bug 1099251 - make ChaosMode's behavior modifications more finely-grained selectable; r=roc 2014-11-14 13:12:51 -05:00
Matthew Gregan
52f69d5963 Bug 1097512 - Allow using compound operators where the LHS and RHS are both CheckedInt<T>. r=jwalden+bmo 2014-11-14 16:13:23 +13:00
Tom Tromey
b818cc4847 Bug 1093823 - Avoid valgrind report from ThreadLocal<bool>. r=froydnj 2014-11-07 08:41:00 -05:00
Dan Gohman
13dc791112 Bug 1094052 - IonMonkey: Fix range analysis for Math.sign(-0) r=nbp,h4writer 2014-11-05 08:38:40 -08:00
Nicholas Nethercote
1eee498c59 Bug 1091986 (part 1) - Remove an over-zealous assertion in Vector.h. 2014-10-30 19:48:10 -07:00
Jim Blandy
4b2e3e7949 Bug 1091882: Simplify some uses of mozilla::PointerRangeSize, and clarify comment. r=waldo 2014-11-03 15:55:59 -08:00
Jacek Caban
9117e49fc5 Bug 1091594 - Added explicit integer casts to char16ptr_t. r=jmathies
--HG--
extra : rebase_source : b351ddfcd263c8dfee436f00ab8a917d8bfc36e2
2014-11-03 14:09:48 +01:00
Mike Hommey
47c853314f Bug 1077148 part 4 - Add and use new moz.build templates for Gecko programs and libraries. r=gps
There are, sadly, many combinations of linkage in use throughout the tree.
The main differentiator, though, is between program/libraries related to
Gecko or not. Kind of. Some need mozglue, some don't. Some need dependent
linkage, some standalone.

Anyways, these new templates remove the need to manually define the
right dependencies against xpcomglue, nspr, mozalloc and mozglue
in most cases.

Places that build programs and were resetting MOZ_GLUE_PROGRAM_LDFLAGS
or that build libraries and were resetting MOZ_GLUE_LDFLAGS can now
just not use those Gecko-specific templates.
2014-10-30 13:06:12 +09:00
David Rajchenbach-Teller
80761c3ec8 Bug 1075134 - MOZ_LSAN macros. r=froydnj 2014-10-21 13:00:54 +02:00
Ehsan Akhgari
d5c7fe43fd Bug 1080968 - Add support for constexpr and explicit conversions on clang-cl; r=froydnj
--HG--
extra : rebase_source : ef22967d83577e70d5e6e122bf5322f31eeb97d0
2014-10-10 18:29:56 -04:00
Ehsan Akhgari
d04c9dbff3 Bug 1080946 - Don't mark ASAN poisoning functions as dllexport on Windows; r=njn
--HG--
extra : rebase_source : da03e54614b995138ecaead7ae1ef7b35daf3961
2014-10-10 10:33:16 -04:00
David Major
e103fd61cc Bug 1080297 - Use native inttypes.h on VS2013. r=glandium 2014-10-09 21:06:30 +13:00
Dan Gohman
03e74f99ca Bug 1077720 - IonMonkey: Optimize MPhi's addInput and addInputSlow r=nbp 2014-10-08 15:04:12 -07:00
Nicholas Nethercote
acc4649eb2 Bug 1074591 (part 3) - Fix unbounded growth in JSONWriter's vectors(!). r=froydnj.
--HG--
extra : rebase_source : 364c0295c0b86e0f29dac3772acadbd0e1ab9d9f
2014-10-02 18:01:41 -07:00
Nicholas Nethercote
295bcae988 Bug 1074591 (part 2) - Remove Pointer{Element,Property}() from JSONWriter. r=froydnj.
--HG--
extra : rebase_source : db07aa93df880e201eba866cb791ccaa245f0ef8
2014-10-02 18:01:32 -07:00
Nicholas Nethercote
56daec2fe6 Bug 1074591 (part 1) - Allow JSON collections to be printed on a single line. r=froydnj.
--HG--
extra : rebase_source : d576a70d2d1ff83311ab8cce849ec0b5a6b3fa80
2014-10-02 18:01:19 -07:00
Jan Beich
2e6d8524b0 Bug 1073709 - Disable C++11 <atomic> when using GCC with libc++. r=waldo 2014-09-26 15:15:00 +02:00
Ehsan Akhgari
fdb6457b8b Bug 1071575 - Fix more bad implicit constructors in MFBT; r=froydnj
--HG--
extra : rebase_source : 2bbcb50e44f59f23dbccc949b917ca3b73c1617f
2014-09-23 21:30:36 -04:00
Chris Peterson
a9b69a841b Bug 990764 - Remove MOZ_ASSUME_UNREACHABLE and MOZ_NIGHTLY_ASSERT macros. r=Waldo 2014-06-29 19:21:50 -07:00
Masayuki Nakano
506e55fe0a Bug 1069726 Don't use non-ASCII characters in cpp files for avoiding bustage with Visual Studio in some locales r=njn 2014-09-19 20:34:13 +09:00
Nicholas Nethercote
273d7cc068 Bug 1067699 (part 2) - Add mfbt/JSONWriter.h and use it for memory reporting. r=froydnj.
--HG--
extra : rebase_source : 7eb21c4c20c0434b3b236d1c53cbef9cb6a4759c
2014-09-14 23:36:18 -07:00
Nicholas Nethercote
2d771de5ad Bug 1067699 (part 1) - Export double-conversion.h normally from MFBT. r=froydnj.
--HG--
extra : rebase_source : 14c3d827f4d8015d8326612e82782c52dcf7335d
2014-09-16 23:33:05 -07:00
Christian Holler
0d5c56b958 Bug 1058500 - Add MSan support to the build system. r=ted,waldo 2014-09-11 23:21:46 +02:00
Kearwood (Kip) Gilbert
ecf1650979 Bug 1062406 - Part 1 - Change x and y parameters of window.scroll* CSSOM-View DOM calls from double to unrestricted double. r=bz
- WebIDL updated so that x and y parameters of window.scroll, window.scrollTo,
  and window.ScrollBy are changed from "double" to "unrestricted double".
- Implemented mozilla::ToZeroIfNonfinite
- Updated nsGlobalWindow::Scroll, ScrollTo, and ScrollBy methods so that they
  replace non-finite numbers with 0.
2014-09-09 12:02:00 +02:00
Jed Davis
af04cea2d8 Bug 1059038 - Move mozilla::unused from xpcom/glue to mfbt. r=Waldo
--HG--
rename : xpcom/glue/unused.cpp => mfbt/unused.cpp
rename : xpcom/glue/unused.h => mfbt/unused.h
2014-08-29 10:11:00 +02:00
Jeff Walden
2e6b85e6f1 Bug 1064451 - Convert assertion-expression-type checking code to not perform a function call. r=froydnj
--HG--
extra : rebase_source : d88adf94137dca875444c4aa8c7b3e9ce9c7dedd
2014-09-07 01:04:09 -07:00
Hannes Verschore
e729b5e319 Bug 1061764 - Atomic<bool, Relaxed> should mean no synchronization on windows x86, r=froydnj 2014-09-04 11:08:00 +02:00
Ehsan Akhgari
928e6cec12 Bug 1062073 - Mark BinarySearchDefaultComparator's constructor as explicit; r=froydnj
--HG--
extra : rebase_source : 373682d496f5e4bcf528593dc8cdff55fe9f9698
2014-09-03 18:25:13 -04:00
Mike Hommey
0060683747 Bug 1059090 - Don't require SOURCES to be set for CPP_UNIT_TESTS and SIMPLE_PROGRAMS. r=mshal 2014-09-03 14:16:37 +09:00
Mike Hommey
ed70c5f377 Bug 1041941 - Use templates for programs, simple programs, libraries and C++ unit tests. r=gps 2014-09-03 14:10:54 +09:00
Georg Fritzsche
8323fbaa7f Bug 1059179 - Add BinarySearchIf(). r=waldo 2014-09-01 19:26:16 +02:00
Ehsan Akhgari
64b2aa87ac Bug 1060375 - Mark the Maybe(Nothing) constructor as implicit; r=froydnj 2014-08-29 18:13:04 -04:00
Botond Ballo
fe099fdf1c Bug 965022 - Introduce a PRIuSIZE macro for printing std::size_t. r=jrmuizel
--HG--
extra : rebase_source : 7994c75e65da7506938bb2746e9e86607bc32792
2014-08-25 18:28:04 -04:00
Seth Fowler
2450461f0f Bug 1057840 (Part 2) - Expand MSVC version bounds for decltype scope operator workaround. r=waldo 2014-08-26 13:57:45 -07:00
Seth Fowler
47a6f9b86b Bug 1057840 (Part 1) - Expand GCC version bounds for decltype scope operator workaround. r=waldo 2014-08-26 13:57:43 -07:00
Ryan VanderMeulen
a19bf3acbf Backed out 5 changesets (bug 965022) for mochitest-2 failures on a CLOSED TREE.
Backed out changeset 7f68752ffe1e (bug 965022)
Backed out changeset 24251d4da019 (bug 965022)
Backed out changeset a34ae046c947 (bug 965022)
Backed out changeset f747fd154739 (bug 965022)
Backed out changeset f076faf3c282 (bug 965022)
2014-08-26 16:02:37 -04:00
Botond Ballo
ce1d39f0ef Bug 965022 - Introduce a PRIuSIZE macro for printing std::size_t. r=jrmuizel 2014-08-25 18:28:04 -04:00
Birunthan Mohanathas
77bfad00a6 Bug 1045801 - Rename SafeCast to AssertedCast. r=Waldo 2014-08-25 12:17:32 -07:00
Seth Fowler
a712b649ab Bug 913586 (Part 9) - Add more useful features to the Maybe<T> API. r=waldo
* * *
Bug 913586 (Part 10) - Add a test for Maybe<T>. r=waldo
2014-08-22 00:43:02 -07:00
Ehsan Akhgari
1d9c1a39c4 Bug 1055001 - Make Maybe's constructor explicit; r=froydnj 2014-08-18 15:18:30 -04:00
Terrence Cole
6606ad7310 Bug 1033442 - Remove non-pod realloc from MallocProvider and AllocPolicy; r=jonco
--HG--
extra : rebase_source : 507ab10313127ffcbf905c42438882aa9074c38a
2014-08-05 14:06:35 -07:00
Jeff Gilbert
f872500ed5 Bug 1049957 - Increase MakeUnique max params to 8. - r=waldo 2014-08-15 17:38:06 -07:00
Terrence Cole
b057565fa0 Bug 1033442 - Remove non-pod malloc from MallocProvider and AllocPolicy; r=jonco 2014-08-08 13:22:39 -07:00
Seth Fowler
165e5028e4 Bug 913586 (Part 1) - Revamp Maybe<T> to be usable in many more situations. r=waldo
--HG--
extra : rebase_source : 33326a59f0458dbda493b1f90b88481507b7a46b
2014-08-13 15:39:40 -07:00
Terrence Cole
a6741673cf Bug 1033442 - Remove non-pod calloc from MallocProvider and AllocPolicy; r=jonco 2014-08-05 14:06:35 -07:00
Mike Hommey
89777800f9 Bug 1047267 - Move remaining OS_LIBS and EXTRA_LIBS to moz.build. r=gps
* * *
Bug 1047267 - To fold with "Move remaining OS_LIBS and EXTRA_LIBS to moz.build"
2014-08-07 14:21:03 +09:00
Ehsan Akhgari
4d78ae894d Bug 1048013 - Fix some bad implicit constructors in MFBT; r=froydnj 2014-08-05 09:21:12 -04:00
Nicholas Nethercote
21f35c3811 Bug 1047195 - MFBT: Convert UniquePtr module to Gecko style. r=Ms2ger. 2014-07-31 20:34:17 -07:00
Eric Rahm
646d914437 Bug 1047176 - Part 3: Cast to unsigned char in HashString. r=froydnj
--HG--
extra : rebase_source : c670d0ffb3edb5aee5932660a6be3fd3459033fa
2014-08-04 11:29:33 -07:00
Jeff Walden
fb7578dac2 Bug 1037103 - Remove ScopedDeleteArray from Scoped.h. r=jcranmer 2014-07-10 17:43:59 -07:00
Nicholas Nethercote
c89b918bb9 Bug 980934 (part 2) - MFBT: Remove the excessively frequent coherency checks from SplayTree. r=froydnj.
--HG--
extra : rebase_source : 4d0bd8e2d56771ee8ee4612ce3536bbdc23e958e
2014-07-30 16:21:06 -07:00
Nicholas Nethercote
ff21669f0b Bug 980934 (part 1) - Add mfbt/tests/TestSplayTree.cpp. r=froydnj.
--HG--
extra : rebase_source : 2fa739b40d6b6f136002abc875a7c558cb4dd4ed
2014-07-30 15:53:40 -07:00
Benoit Jacob
14dbb23161 Bug 1044668 - 2/2 - let WebGLFramebufferAttachable::AttachmentPoint use WeakPtr instead of a raw pointer - r=kamidphish 2014-07-30 15:52:08 -04:00
Benoit Jacob
c50ccf8dba Bug 1044658 - 5/6 - remove asWeakPtr - r=froydnj 2014-07-30 15:52:05 -04:00
Benoit Jacob
fca4408490 Bug 1044658 - 4/6 - remove the need for asWeakPtr, and make asWeakPtr just return 'this' - r=froydnj 2014-07-30 15:52:04 -04:00
Benoit Jacob
b0f63f3533 Bug 1044658 - 3/6 - make WeakPtr<const T> work - r=froydnj 2014-07-30 15:52:03 -04:00
Benoit Jacob
fdea1f7900 Bug 1044658 - 2/6 - remove useless base classes around WeakPtr - r=froydnj 2014-07-30 15:52:02 -04:00
Benoit Jacob
6610e8054e Bug 1044658 - 1/6 - remove useless template parameters around WeakPtr - r=froydnj 2014-07-30 15:52:01 -04:00
Nicholas Nethercote
6548e9518e Bug 1045920 (part 2) - Add mfbt/tests/TestRefPtr.cpp. r=froydnj. 2014-07-30 06:59:52 -07:00
Jeff Walden
29d704f6d4 Bug 1040830 - Add documentation overview comments for mozilla::MakeUnique. r=jcranmer
--HG--
extra : rebase_source : 22eb26bb8c984a28352db0329da786c419e32dc7
2014-07-18 12:24:47 -04:00
Nicholas Nethercote
6c3f5d7b8e Bug 1041914 - Convert the fourth quarter of MFBT to Gecko style. r=Ms2ger.
--HG--
extra : rebase_source : 588fa9c0d1e819e1826835c4ef4a1428a927bf93
2014-07-22 20:54:41 -07:00
Mike Hommey
5fab42fcaf Bug 1036894 part 8 - Move most in-tree library linkage information to moz.build, as USE_LIBS. r=gps 2014-07-23 13:30:52 +09:00
Mike Hommey
6d6d400ea1 Bug 1036894 part 6 - Emit SimplePrograms for CPP_UNIT_TESTs, and make the corresponding moz.build config look like that of SIMPLE_PROGRAMS. r=gps 2014-07-23 13:29:44 +09:00
Jeff Walden
bb16b5790f Bug 1037103 - Add deprecation notice/comments to Scoped.h. r=jcranmer
--HG--
extra : rebase_source : dabef0b6f8631ac2103039026b8cef8af1271c01
2014-07-10 17:45:45 -07:00
Jim Chen
4a6c0055c0 Bug 1007824 - Add mfbt/LinuxSignal.h; r=snorp r=Ms2ger 2014-07-15 12:45:40 -04:00
Till Schneidereit
017f266391 Bug 1031414 - Update LZ4. r=Ms2ger 2014-07-10 14:56:26 +02:00
Jeff Muizelaar
ef05845516 Bug 1037461. mfbt: Add a MakeUnique variant that takes 5 arguments. 2014-07-11 11:01:47 -04:00
Nicholas Nethercote
2a0942be41 Bug 1036789 - Convert the third quarter of MFBT to Gecko style. r=Ms2ger.
--HG--
extra : rebase_source : 668cd394806203ddfa34bd4f226335ff26c846b5
2014-07-10 19:10:17 -07:00
Ehsan Akhgari
00ca203fb4 Bug 1036215 - Use MOZ_EXPORT in MemoryChecking.h; r=njn 2014-07-08 22:58:26 -04:00
Jeff Walden
a377a906df Bug 953296 - Properly condition function-deleter tests on SHOULD_TEST_FUNCTION_REFERENCE_DELETER. r=bustage 2014-07-08 11:37:45 -07:00