Skip to content

Commit

Permalink
to use standalone courgette
Browse files Browse the repository at this point in the history
  • Loading branch information
hiromi-mi committed May 17, 2021
1 parent ccb1989 commit c7675f0
Show file tree
Hide file tree
Showing 62 changed files with 12,352 additions and 315 deletions.
2 changes: 1 addition & 1 deletion BUILD.gn
Expand Up @@ -3,5 +3,5 @@
# found in the LICENSE file.

group("mini_chromium") {
deps = [ "//base" ]
deps = [ "//base", ]
}
19 changes: 19 additions & 0 deletions base/BUILD.gn
Expand Up @@ -16,9 +16,14 @@ static_library("base") {
"compiler_specific.h",
"debug/alias.cc",
"debug/alias.h",
"files/file.cc",
"files/file.h",
"files/file_path.cc",
"files/file_path.h",
"files/file_util.h",
"files/memory_mapped_file.h",
"files/memory_mapped_file.cc",
"files/memory_mapped_file_posix.cc",
"files/scoped_file.cc",
"files/scoped_file.h",
"format_macros.h",
Expand Down Expand Up @@ -71,6 +76,20 @@ static_library("base") {
"third_party/icu/icu_utf.h",
"threading/thread_local_storage.cc",
"threading/thread_local_storage.h",

# Added
"callback.h",
"callback_internal.h",
"callback_internal.cc",
"callback_helpers.h",
"callback_helpers.cc",

# Added
"files/file_posix.cc",
"environment.cc",

# Added
"command_line.h",
]

if (mini_chromium_is_posix || mini_chromium_is_fuchsia) {
Expand Down
69 changes: 69 additions & 0 deletions base/atomic_ref_count.h
@@ -0,0 +1,69 @@
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This is a low level implementation of atomic semantics for reference
// counting. Please use base/memory/ref_counted.h directly instead.

#ifndef BASE_ATOMIC_REF_COUNT_H_
#define BASE_ATOMIC_REF_COUNT_H_

#include <atomic>

namespace base {

class AtomicRefCount {
public:
constexpr AtomicRefCount() : ref_count_(0) {}
explicit constexpr AtomicRefCount(int initial_value)
: ref_count_(initial_value) {}

// Increment a reference count.
// Returns the previous value of the count.
int Increment() { return Increment(1); }

// Increment a reference count by "increment", which must exceed 0.
// Returns the previous value of the count.
int Increment(int increment) {
return ref_count_.fetch_add(increment, std::memory_order_relaxed);
}

// Decrement a reference count, and return whether the result is non-zero.
// Insert barriers to ensure that state written before the reference count
// became zero will be visible to a thread that has just made the count zero.
bool Decrement() {
// TODO(jbroman): Technically this doesn't need to be an acquire operation
// unless the result is 1 (i.e., the ref count did indeed reach zero).
// However, there are toolchain issues that make that not work as well at
// present (notably TSAN doesn't like it).
return ref_count_.fetch_sub(1, std::memory_order_acq_rel) != 1;
}

// Return whether the reference count is one. If the reference count is used
// in the conventional way, a refrerence count of 1 implies that the current
// thread owns the reference and no other thread shares it. This call
// performs the test for a reference count of one, and performs the memory
// barrier needed for the owning thread to act on the object, knowing that it
// has exclusive access to the object.
bool IsOne() const { return ref_count_.load(std::memory_order_acquire) == 1; }

// Return whether the reference count is zero. With conventional object
// referencing counting, the object will be destroyed, so the reference count
// should never be zero. Hence this is generally used for a debug check.
bool IsZero() const {
return ref_count_.load(std::memory_order_acquire) == 0;
}

// Returns the current reference count (with no barriers). This is subtle, and
// should be used only for debugging.
int SubtleRefCountForDebug() const {
return ref_count_.load(std::memory_order_relaxed);
}

private:
std::atomic_int ref_count_;
};

} // namespace base

#endif // BASE_ATOMIC_REF_COUNT_H_
29 changes: 29 additions & 0 deletions base/base_export.h
@@ -0,0 +1,29 @@
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef BASE_BASE_EXPORT_H_
#define BASE_BASE_EXPORT_H_

#if defined(COMPONENT_BUILD)
#if defined(WIN32)

#if defined(BASE_IMPLEMENTATION)
#define BASE_EXPORT __declspec(dllexport)
#else
#define BASE_EXPORT __declspec(dllimport)
#endif // defined(BASE_IMPLEMENTATION)

#else // defined(WIN32)
#if defined(BASE_IMPLEMENTATION)
#define BASE_EXPORT __attribute__((visibility("default")))
#else
#define BASE_EXPORT
#endif // defined(BASE_IMPLEMENTATION)
#endif

#else // defined(COMPONENT_BUILD)
#define BASE_EXPORT
#endif

#endif // BASE_BASE_EXPORT_H_

0 comments on commit c7675f0

Please sign in to comment.