Lines Matching refs:FOO
3998 // b. foo[i] = ...
3999 // A. ... = foo[i]; // non NULL
4007 class FOO {
4009 FOO() {
4014 static void check(volatile FOO *foo) {
4015 CHECK(foo->arr_[foo->idx_] == 77777);
4023 static volatile FOO *foo[N];
4028 foo[i] = new FOO;
4035 while (!foo[i]) {
4037 MU.Unlock(); // it just helps foo[i] to become visible in Reader.
4042 // At this point Reader() sees the new value of foo[i]
4043 // but in very rare cases will not see the new value of foo[i]->arr_.
4045 FOO::check(foo[i]);
5133 class Foo {
5135 Foo() {
5144 const Foo *GetFoo() {
5145 static const Foo *foo = new Foo();
5146 return foo;
5154 const Foo *foo = GetFoo();
5155 foo->Check();
5480 int Foo() {
5481 static int foo = Bar();
5482 return foo;
5485 static int x = Foo();
5600 int Foo() {
5606 static int foo = Foo();
5607 CHECK(foo == 1);
5711 struct Foo {
5716 static Foo *foo;
5719 if (!foo) {
5721 if (!foo) {
5722 ANNOTATE_EXPECT_RACE_FOR_TSAN(&foo, "test121. Double-checked locking (ptr)");
5723 foo = new Foo;
5725 ANNOTATE_EXPECT_RACE_FOR_TSAN(&foo->a, "test121. Double-checked locking (obj)");
5726 foo->a = 42;
5733 CHECK(foo && foo->a == 42);
5742 FAST_MODE_INIT(&foo);
5747 delete foo;
6919 struct Foo {
6925 static Foo *foo;
6931 foo = new Foo;
6932 foo->a = 42;
6941 CHECK(foo && foo->a == 42);
7583 void Foo() {
7598 Foo();
7622 void Foo() {
7637 Foo();