| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Using the initializer list construct = {0} allows the object to be linker initialized.
Modify the LazyInstance class design to make it a pod aggregate type that can be linker initialized this way. Also combines the instance and state members, in line with the Singleton<> class design.
Introduces a new LAZY_INSTANCE_INITIALIZER macro specifically for using to init all lazy instances + modify all existing callsites to use it. (Old code would no longer compile)
BUG=94925
TEST=existing tests pass. http://build.chromium.org/f/chromium/perf/linux-release/sizes/report.html?history=150&header=chrome-si&graph=chrome-si&rev=-1 should step downward.
TBR=jam@chromium.org,rvargas@chromium.org,darin@chromium.org,ben@chromium.org,apatrick@chromium.org,akalin@chromium.org
Review URL: http://codereview.chromium.org/8491043
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@110076 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
Avoiding the pthread_getspecific call on every pointer access seems worth it (and it reduces templated code size)
BUG=None
TEST=None
Review URL: http://codereview.chromium.org/8465010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108678 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This save ~1720B from the size of debug chrome build.
Also make the traits Delete method typesafe.
BUG=None
TEST=lazy_instance unittests
Review URL: http://codereview.chromium.org/8393002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107170 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before, the LazyInstance::buf_ was 4-byte aligned on x64, which is wrong.
WHY?! I thought buf_ is the first member of LazyInstance?!
NO! LazyInstance inherits LazyInstanceHelper, sizeof(LIH) = 4.
Then, buf_ is given to placement new.
As a result, the LazyInstance<Type> instances are all 4-byte aligned on x64.
This may break some stuff like SSE-based optimizations assuming the instance is
8-bytes aligned (fair assumption).
Also, if Type contains a bunch of std::vector/hash_map's, their pointers occupy
two half-words and Valgrind doesn't traverse to their data, reporting a false leak.
BUG=64930
Review URL: http://codereview.chromium.org/8366041
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@106763 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
| |
R=rvargas
Review URL: http://codereview.chromium.org/7461141
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@95618 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
BUG=82122
Review URL: http://codereview.chromium.org/6997014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85487 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
| |
BASE_API and a few files that use it.
BUG=76996
TEST=none
Review URL: http://codereview.chromium.org/6725001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79056 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to adhere to the C++ Style Guide.
Landing for roubert@google.com, original review
http://codereview.chromium.org/6485028/
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6580049
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76017 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
Moved all stuff related to GetOwnershipStatus from user_cros_settings.cc where it was irrelevant to OwnershipService.
Prefetch and cache ownership status in order not to block on UI thread.
BUG=chromium:70097
TEST=Manual
Review URL: http://codereview.chromium.org/6538057
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75617 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
TEST=it compiles
BUG=none
Review URL: http://codereview.chromium.org/6028009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70345 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
| |
TBR=thakis
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69108 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This enforces that the Singleton<T> pattern can only be used within classes which want singleton-ness.
As part of this CL I have also fixed up files which got missed in my previous CLs to use a GetInstance() method and use Singleton<T> from the source file.
There are a small number of places where I have also switched to LazyInstance as that was more appropriate for types used in a single source file.
BUG=65298
TEST=all existing tests should continue to pass.
Review URL: http://codereview.chromium.org/5682008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69107 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Revert 66719 - Reland r65996. Disallows Singletons on non-joinable thread.
Test breakages caused by this change have been fixed here or in other changelists.
BUG=61753
TEST=none
Review URL: http://codereview.chromium.org/5024003
TBR=willchan@chromium.org
Review URL: http://codereview.chromium.org/5206005
TBR=willchan@chromium.org
Review URL: http://codereview.chromium.org/5242002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66808 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Test breakages caused by this change have been fixed here or in other changelists.
BUG=61753
TEST=none
Review URL: http://codereview.chromium.org/5024003
TBR=willchan@chromium.org
Review URL: http://codereview.chromium.org/5206005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66791 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
Test breakages caused by this change have been fixed here or in other changelists.
BUG=61753
TEST=none
Review URL: http://codereview.chromium.org/5024003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66719 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
non-joinable threads.
Fix all known instances or explicitly allow them. Usually the fix involves switching from Default traits to Lazy traits.
BUG=61753
TEST=none
Review URL: http://codereview.chromium.org/4635012
TBR=willchan@chromium.org
Review URL: http://codereview.chromium.org/4980001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66071 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
Fix all known instances or explicitly allow them. Usually the fix involves switching from Default traits to Lazy traits.
BUG=61753
TEST=none
Review URL: http://codereview.chromium.org/4635012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65996 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
| |
LazyInstances are destroyed by the AtExitManager, but we have
threads that outlive the AtExitManager that could potentially
access this.
Review URL: http://codereview.chromium.org/3956003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63410 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I think it was a failed experiment, and it only
ever worked for base_unittests.
This removes some potentially risky code from LazyInstance
that was only needed for the test isolation.
The lesson from this experiment is that removing singletons
works better than trying to make tests work fine even when
singletons are overused.
TEST=none
BUG=12710
Review URL: http://codereview.chromium.org/3127012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56229 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=50273
TEST=everything still builds, build is 10% faster on windows, same speed on mac/linux
TBR: erg
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53716 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
| |
Review URL: http://codereview.chromium.org/1992005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47252 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
The key change here is to use the return value from placement
new rather than casting buf_. Avoiding the cast avoids the
strict aliasing issue.
BUG=28749
Review URL: http://codereview.chromium.org/548011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41434 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For now, this is only for base_unittests. The plan is to enable
it for all unit tests. This should finally fix mysterious
problems cause by Singletons surviving after one test etc.
This change also adapts LazyInstance so that it can be reused
after being destroyed. It is used very frequently, for example
each time a MessageLoop is used. It is also worth noting that
we had some problems in the past related to the MessageLoop
being destroyed and re-instantiated in the same test executable.
This patch should also fix that.
TEST=none
BUG=12710
Review URL: http://codereview.chromium.org/372057
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32507 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added annotations for atomic reference counting, LazyInstance and Singleton classes.
This changelist is a part of an effort of adding ThreadSanitizer support for Chromium.
See http://code.google.com/p/data-race-test/wiki/ThreadSanitizer
Patch by Timur Iskhodzhanov.
Review URL: http://codereview.chromium.org/147008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19353 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
const per style compliance).
Preliminary work to enforce new PRESUBMIT.py rules:
- <=80 cols
- no trailing whitespaces
- svn:eol-style=LF
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10791 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
| |
Review URL: http://codereview.chromium.org/17630
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@7923 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
will register a static initializer as to register the empty destructor. Pretty awesome. Verified that the c++ initializer is no longer in the __xc_a array.
Review URL: http://codereview.chromium.org/1812
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1841 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
| |
Review URL: http://codereview.chromium.org/1811
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1839 0039d316-1c4b-4281-b951-d872f2087c98
|
|
creating an instance of an object on first access. This is like Singleton, but without the Singleton property of sharing instances. This also preallocates space for the object to avoid the heap to try to help fragmentation and creation performance.
Review URL: http://codereview.chromium.org/1608
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1837 0039d316-1c4b-4281-b951-d872f2087c98
|