Delete static_instance.h and fix_interlocked_exchange_pointer_win.h

Unused since the deletion of the WEBRTC_TRACE facility.

Bug: webrtc:5118
Change-Id: Iad03a90a05c734ae867eb8a0265f65ae008486a4
Reviewed-on: https://webrtc-review.googlesource.com/6321
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Henrik Grunell <henrikg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20166}
diff --git a/rtc_base/event_tracer_unittest.cc b/rtc_base/event_tracer_unittest.cc
index 6e3075f..25b300b 100644
--- a/rtc_base/event_tracer_unittest.cc
+++ b/rtc_base/event_tracer_unittest.cc
@@ -11,7 +11,6 @@
 #include "rtc_base/event_tracer.h"
 
 #include "rtc_base/trace_event.h"
-#include "system_wrappers/include/static_instance.h"
 #include "test/gtest.h"
 
 namespace {
diff --git a/system_wrappers/BUILD.gn b/system_wrappers/BUILD.gn
index 30ebc47..965f144 100644
--- a/system_wrappers/BUILD.gn
+++ b/system_wrappers/BUILD.gn
@@ -21,12 +21,10 @@
     "include/cpu_info.h",
     "include/event_wrapper.h",
     "include/file_wrapper.h",
-    "include/fix_interlocked_exchange_pointer_win.h",
     "include/ntp_time.h",
     "include/rtp_to_ntp_estimator.h",
     "include/rw_lock_wrapper.h",
     "include/sleep.h",
-    "include/static_instance.h",
     "include/timestamp_extrapolator.h",
     "source/aligned_malloc.cc",
     "source/atomic32_win.cc",
diff --git a/system_wrappers/include/fix_interlocked_exchange_pointer_win.h b/system_wrappers/include/fix_interlocked_exchange_pointer_win.h
deleted file mode 100644
index a83fb4a..0000000
--- a/system_wrappers/include/fix_interlocked_exchange_pointer_win.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-// Various inline functions and macros to fix compilation of 32 bit target
-// on MSVC with /Wp64 flag enabled.
-
-// The original code can be found here:
-// http://src.chromium.org/svn/trunk/src/base/fix_wp64.h
-
-#ifndef SYSTEM_WRAPPERS_SOURCE_FIX_INTERLOCKED_EXCHANGE_POINTER_WINDOWS_H_
-#define SYSTEM_WRAPPERS_SOURCE_FIX_INTERLOCKED_EXCHANGE_POINTER_WINDOWS_H_
-
-#include <windows.h>
-
-// Platform SDK fixes when building with /Wp64 for a 32 bits target.
-#if !defined(_WIN64) && defined(_Wp64)
-
-#ifdef InterlockedExchangePointer
-#undef InterlockedExchangePointer
-// The problem is that the macro provided for InterlockedExchangePointer() is
-// doing a (LONG) C-style cast that triggers invariably the warning C4312 when
-// building on 32 bits.
-inline void* InterlockedExchangePointer(void* volatile* target, void* value) {
-  return reinterpret_cast<void*>(static_cast<LONG_PTR>(InterlockedExchange(
-      reinterpret_cast<volatile LONG*>(target),
-      static_cast<LONG>(reinterpret_cast<LONG_PTR>(value)))));
-}
-#endif  // #ifdef InterlockedExchangePointer
-
-#endif // #if !defined(_WIN64) && defined(_Wp64)
-
-#endif // SYSTEM_WRAPPERS_SOURCE_FIX_INTERLOCKED_EXCHANGE_POINTER_WINDOWS_H_
diff --git a/system_wrappers/include/static_instance.h b/system_wrappers/include/static_instance.h
deleted file mode 100644
index f773d5b..0000000
--- a/system_wrappers/include/static_instance.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef SYSTEM_WRAPPERS_INCLUDE_STATIC_INSTANCE_H_
-#define SYSTEM_WRAPPERS_INCLUDE_STATIC_INSTANCE_H_
-
-#include <assert.h>
-
-#include "rtc_base/criticalsection.h"
-#ifdef _WIN32
-#include "system_wrappers/include/fix_interlocked_exchange_pointer_win.h"
-#endif
-
-namespace webrtc {
-
-enum CountOperation {
-  kRelease,
-  kAddRef,
-  kAddRefNoCreate
-};
-enum CreateOperation {
-  kInstanceExists,
-  kCreate,
-  kDestroy
-};
-
-template <class T>
-// Construct On First Use idiom. Avoids
-// "static initialization order fiasco".
-static T* GetStaticInstance(CountOperation count_operation) {
-  // TODO (hellner): use atomic wrapper instead.
-  static volatile long instance_count = 0;
-  static T* volatile instance = NULL;
-  CreateOperation state = kInstanceExists;
-#ifndef _WIN32
-  static rtc::CriticalSection crit_sect;
-  rtc::CritScope lock(&crit_sect);
-
-  if (count_operation ==
-      kAddRefNoCreate && instance_count == 0) {
-    return NULL;
-  }
-  if (count_operation ==
-      kAddRef ||
-      count_operation == kAddRefNoCreate) {
-    instance_count++;
-    if (instance_count == 1) {
-      state = kCreate;
-    }
-  } else {
-    instance_count--;
-    if (instance_count == 0) {
-      state = kDestroy;
-    }
-  }
-  if (state == kCreate) {
-    instance = T::CreateInstance();
-  } else if (state == kDestroy) {
-    T* old_instance = instance;
-    instance = NULL;
-    // The state will not change past this point. Release the critical
-    // section while deleting the object in case it would be blocking on
-    // access back to this object. (This is the case for the tracing class
-    // since the thread owned by the tracing class also traces).
-    // TODO(hellner): this is a bit out of place but here goes, de-couple
-    // thread implementation with trace implementation.
-    crit_sect.Leave();
-    if (old_instance) {
-      delete old_instance;
-    }
-    // Re-acquire the lock since the scoped critical section will release
-    // it.
-    crit_sect.Enter();
-    return NULL;
-  }
-#else  // _WIN32
-  if (count_operation ==
-      kAddRefNoCreate && instance_count == 0) {
-    return NULL;
-  }
-  if (count_operation == kAddRefNoCreate) {
-    if (1 == InterlockedIncrement(&instance_count)) {
-      // The instance has been destroyed by some other thread. Rollback.
-      InterlockedDecrement(&instance_count);
-      assert(false);
-      return NULL;
-    }
-    // Sanity to catch corrupt state.
-    if (instance == NULL) {
-      assert(false);
-      InterlockedDecrement(&instance_count);
-      return NULL;
-    }
-  } else if (count_operation == kAddRef) {
-    if (instance_count == 0) {
-      state = kCreate;
-    } else {
-      if (1 == InterlockedIncrement(&instance_count)) {
-        // InterlockedDecrement because reference count should not be
-        // updated just yet (that's done when the instance is created).
-        InterlockedDecrement(&instance_count);
-        state = kCreate;
-      }
-    }
-  } else {
-    int new_value = InterlockedDecrement(&instance_count);
-    if (new_value == 0) {
-      state = kDestroy;
-    }
-  }
-
-  if (state == kCreate) {
-    // Create instance and let whichever thread finishes first assign its
-    // local copy to the global instance. All other threads reclaim their
-    // local copy.
-    T* new_instance = T::CreateInstance();
-    if (1 == InterlockedIncrement(&instance_count)) {
-      InterlockedExchangePointer(reinterpret_cast<void * volatile*>(&instance),
-                                 new_instance);
-    } else {
-      InterlockedDecrement(&instance_count);
-      if (new_instance) {
-        delete static_cast<T*>(new_instance);
-      }
-    }
-  } else if (state == kDestroy) {
-    T* old_value = static_cast<T*>(InterlockedExchangePointer(
-        reinterpret_cast<void * volatile*>(&instance), NULL));
-    if (old_value) {
-      delete static_cast<T*>(old_value);
-    }
-    return NULL;
-  }
-#endif  // #ifndef _WIN32
-  return instance;
-}
-
-}  // namspace webrtc
-
-#endif  // SYSTEM_WRAPPERS_INCLUDE_STATIC_INSTANCE_H_