Commit 1027bb83 authored by bratell's avatar bratell Committed by Commit bot

Avoid large inlined automatic methods in IndexedDB code.

The chromium base policy is to not inline code but since automatically
generated code and templates easily become inlined it can happen
anyway. This explicitly outlines destructors, copy constructors and
assignment operators in the IndexedDB code for a win of
11 KB of x64 machine code. Most of it (maybe 8 KB) from IndexedDBKey.

clang x64 numbers:
Total change: -11795 bytes
==========================
  42 added, totalling +3270 bytes across 13 sources
  25 removed, totalling -5883 bytes across 14 sources
  9 grown, for a net change of +1556 bytes (7936 bytes before, 9492 bytes after) across 6 sources
  60 shrunk, for a net change of -10738 bytes (54277 bytes before, 43539 bytes after) across 17 sources

BUG=

Review URL: https://codereview.chromium.org/933823002

Cr-Commit-Position: refs/heads/master@{#317090}
parent 4846e390
......@@ -4402,4 +4402,12 @@ IndexedDBBackingStore::Transaction::WriteDescriptor::WriteDescriptor(
last_modified_(last_modified) {
}
IndexedDBBackingStore::Transaction::WriteDescriptor::WriteDescriptor(
const WriteDescriptor& other) = default;
IndexedDBBackingStore::Transaction::WriteDescriptor::~WriteDescriptor() =
default;
IndexedDBBackingStore::Transaction::WriteDescriptor&
IndexedDBBackingStore::Transaction::WriteDescriptor::
operator=(const WriteDescriptor& other) = default;
} // namespace content
......@@ -167,7 +167,7 @@ class CONTENT_EXPORT IndexedDBBackingStore
typedef std::vector<std::pair<BlobEntryKey, std::string> >
BlobEntryKeyValuePairVec;
class WriteDescriptor {
class CONTENT_EXPORT WriteDescriptor {
public:
WriteDescriptor(const GURL& url,
int64_t key,
......@@ -177,6 +177,9 @@ class CONTENT_EXPORT IndexedDBBackingStore
int64_t key,
int64_t size,
base::Time last_modified);
WriteDescriptor(const WriteDescriptor& other);
~WriteDescriptor();
WriteDescriptor& operator=(const WriteDescriptor& other);
bool is_file() const { return is_file_; }
const GURL& url() const {
......
......@@ -49,7 +49,12 @@ IndexedDBBlobInfo::IndexedDBBlobInfo(int64 key,
: is_file_(true), type_(type), size_(-1), file_name_(file_name), key_(key) {
}
IndexedDBBlobInfo::~IndexedDBBlobInfo() {}
IndexedDBBlobInfo::IndexedDBBlobInfo(const IndexedDBBlobInfo& other) = default;
IndexedDBBlobInfo::~IndexedDBBlobInfo() = default;
IndexedDBBlobInfo& IndexedDBBlobInfo::operator=(
const IndexedDBBlobInfo& other) = default;
void IndexedDBBlobInfo::set_size(int64 size) {
DCHECK_EQ(-1, size_);
......
......@@ -33,7 +33,9 @@ class CONTENT_EXPORT IndexedDBBlobInfo {
const base::string16& type,
const base::string16& file_name);
IndexedDBBlobInfo(const IndexedDBBlobInfo& other);
~IndexedDBBlobInfo();
IndexedDBBlobInfo& operator=(const IndexedDBBlobInfo& other);
bool is_file() const { return is_file_; }
const std::string& uuid() const { return uuid_; }
......
......@@ -6,6 +6,28 @@
namespace content {
IndexedDBIndexMetadata::IndexedDBIndexMetadata() = default;
IndexedDBIndexMetadata::IndexedDBIndexMetadata(const base::string16& name,
int64 id,
const IndexedDBKeyPath& key_path,
bool unique,
bool multi_entry)
: name(name),
id(id),
key_path(key_path),
unique(unique),
multi_entry(multi_entry) {
}
IndexedDBIndexMetadata::IndexedDBIndexMetadata(
const IndexedDBIndexMetadata& other) = default;
IndexedDBIndexMetadata::~IndexedDBIndexMetadata() = default;
IndexedDBIndexMetadata& IndexedDBIndexMetadata::operator=(
const IndexedDBIndexMetadata& other) = default;
IndexedDBObjectStoreMetadata::IndexedDBObjectStoreMetadata(
const base::string16& name,
int64 id,
......@@ -18,11 +40,19 @@ IndexedDBObjectStoreMetadata::IndexedDBObjectStoreMetadata(
auto_increment(auto_increment),
max_index_id(max_index_id) {}
IndexedDBObjectStoreMetadata::IndexedDBObjectStoreMetadata() {}
IndexedDBObjectStoreMetadata::~IndexedDBObjectStoreMetadata() {}
IndexedDBObjectStoreMetadata::IndexedDBObjectStoreMetadata() = default;
IndexedDBObjectStoreMetadata::IndexedDBObjectStoreMetadata(
const IndexedDBObjectStoreMetadata& other) = default;
IndexedDBObjectStoreMetadata::~IndexedDBObjectStoreMetadata() = default;
IndexedDBObjectStoreMetadata& IndexedDBObjectStoreMetadata::operator=(
const IndexedDBObjectStoreMetadata& other) = default;
IndexedDBDatabaseMetadata::IndexedDBDatabaseMetadata()
: int_version(NO_INT_VERSION) {}
IndexedDBDatabaseMetadata::IndexedDBDatabaseMetadata(
const base::string16& name,
int64 id,
......@@ -35,6 +65,12 @@ IndexedDBDatabaseMetadata::IndexedDBDatabaseMetadata(
int_version(int_version),
max_object_store_id(max_object_store_id) {}
IndexedDBDatabaseMetadata::~IndexedDBDatabaseMetadata() {}
IndexedDBDatabaseMetadata::IndexedDBDatabaseMetadata(
const IndexedDBDatabaseMetadata& other) = default;
IndexedDBDatabaseMetadata::~IndexedDBDatabaseMetadata() = default;
IndexedDBDatabaseMetadata& IndexedDBDatabaseMetadata::operator=(
IndexedDBDatabaseMetadata& other) = default;
} // namespace content
......@@ -13,20 +13,19 @@
namespace content {
struct IndexedDBIndexMetadata {
struct CONTENT_EXPORT IndexedDBIndexMetadata {
static const int64 kInvalidId = -1;
IndexedDBIndexMetadata() {}
IndexedDBIndexMetadata();
IndexedDBIndexMetadata(const base::string16& name,
int64 id,
const IndexedDBKeyPath& key_path,
bool unique,
bool multi_entry)
: name(name),
id(id),
key_path(key_path),
unique(unique),
multi_entry(multi_entry) {}
bool multi_entry);
IndexedDBIndexMetadata(const IndexedDBIndexMetadata& other);
~IndexedDBIndexMetadata();
IndexedDBIndexMetadata& operator=(const IndexedDBIndexMetadata& other);
base::string16 name;
int64 id;
IndexedDBKeyPath key_path;
......@@ -45,7 +44,11 @@ struct CONTENT_EXPORT IndexedDBObjectStoreMetadata {
const IndexedDBKeyPath& key_path,
bool auto_increment,
int64 max_index_id);
IndexedDBObjectStoreMetadata(const IndexedDBObjectStoreMetadata& other);
~IndexedDBObjectStoreMetadata();
IndexedDBObjectStoreMetadata& operator=(
const IndexedDBObjectStoreMetadata& other);
base::string16 name;
int64 id;
IndexedDBKeyPath key_path;
......@@ -70,7 +73,9 @@ struct CONTENT_EXPORT IndexedDBDatabaseMetadata {
const base::string16& version,
int64 int_version,
int64 max_object_store_id);
IndexedDBDatabaseMetadata(const IndexedDBDatabaseMetadata& other);
~IndexedDBDatabaseMetadata();
IndexedDBDatabaseMetadata& operator=(IndexedDBDatabaseMetadata& other);
base::string16 name;
int64 id;
......
......@@ -8,13 +8,16 @@
namespace content {
IndexedDBValue::IndexedDBValue() {}
IndexedDBValue::IndexedDBValue() = default;
IndexedDBValue::IndexedDBValue(
const std::string& input_bits,
const std::vector<IndexedDBBlobInfo>& input_blob_info)
: bits(input_bits), blob_info(input_blob_info) {
DCHECK(!input_blob_info.size() || input_bits.size());
}
IndexedDBValue::~IndexedDBValue() {}
IndexedDBValue::IndexedDBValue(const IndexedDBValue& other) = default;
IndexedDBValue::~IndexedDBValue() = default;
IndexedDBValue& IndexedDBValue::operator=(const IndexedDBValue& other) =
default;
} // namespace content
......@@ -18,7 +18,9 @@ struct CONTENT_EXPORT IndexedDBValue {
IndexedDBValue();
IndexedDBValue(const std::string& input_bits,
const std::vector<IndexedDBBlobInfo>& input_blob_info);
IndexedDBValue(const IndexedDBValue& other);
~IndexedDBValue();
IndexedDBValue& operator=(const IndexedDBValue& other);
void swap(IndexedDBValue& value) {
bits.swap(value.bits);
......
......@@ -92,7 +92,9 @@ IndexedDBKey::IndexedDBKey(const base::string16& string)
size_estimate_(kOverheadSize +
(string.length() * sizeof(base::string16::value_type))) {}
IndexedDBKey::~IndexedDBKey() {}
IndexedDBKey::IndexedDBKey(const IndexedDBKey& other) = default;
IndexedDBKey::~IndexedDBKey() = default;
IndexedDBKey& IndexedDBKey::operator=(const IndexedDBKey& other) = default;
bool IndexedDBKey::IsValid() const {
if (type_ == WebIDBKeyTypeInvalid || type_ == WebIDBKeyTypeNull)
......
......@@ -31,7 +31,9 @@ class CONTENT_EXPORT IndexedDBKey {
explicit IndexedDBKey(const base::string16& string);
IndexedDBKey(double number,
blink::WebIDBKeyType type); // must be date or number
IndexedDBKey(const IndexedDBKey& other);
~IndexedDBKey();
IndexedDBKey& operator=(const IndexedDBKey& other);
bool IsValid() const;
......
......@@ -20,7 +20,10 @@ IndexedDBKeyPath::IndexedDBKeyPath(const base::string16& string)
IndexedDBKeyPath::IndexedDBKeyPath(const std::vector<base::string16>& array)
: type_(WebIDBKeyPathTypeArray), array_(array) {}
IndexedDBKeyPath::~IndexedDBKeyPath() {}
IndexedDBKeyPath::IndexedDBKeyPath(const IndexedDBKeyPath& other) = default;
IndexedDBKeyPath::~IndexedDBKeyPath() = default;
IndexedDBKeyPath& IndexedDBKeyPath::operator=(const IndexedDBKeyPath& other) =
default;
const std::vector<base::string16>& IndexedDBKeyPath::array() const {
DCHECK(type_ == blink::WebIDBKeyPathTypeArray);
......
......@@ -20,7 +20,9 @@ class CONTENT_EXPORT IndexedDBKeyPath {
IndexedDBKeyPath(); // Defaults to blink::WebIDBKeyPathTypeNull.
explicit IndexedDBKeyPath(const base::string16&);
explicit IndexedDBKeyPath(const std::vector<base::string16>&);
IndexedDBKeyPath(const IndexedDBKeyPath& other);
~IndexedDBKeyPath();
IndexedDBKeyPath& operator=(const IndexedDBKeyPath& other);
bool IsNull() const { return type_ == blink::WebIDBKeyPathTypeNull; }
bool operator==(const IndexedDBKeyPath& other) const;
......
......@@ -27,7 +27,10 @@ IndexedDBKeyRange::IndexedDBKeyRange(const IndexedDBKey& lower,
IndexedDBKeyRange::IndexedDBKeyRange(const IndexedDBKey& key)
: lower_(key), upper_(key), lower_open_(false), upper_open_(false) {}
IndexedDBKeyRange::~IndexedDBKeyRange() {}
IndexedDBKeyRange::IndexedDBKeyRange(const IndexedDBKeyRange& other) = default;
IndexedDBKeyRange::~IndexedDBKeyRange() = default;
IndexedDBKeyRange& IndexedDBKeyRange::operator=(
const IndexedDBKeyRange& other) = default;
bool IndexedDBKeyRange::IsOnlyKey() const {
if (lower_open_ || upper_open_)
......
......@@ -19,7 +19,9 @@ class CONTENT_EXPORT IndexedDBKeyRange {
const IndexedDBKey& upper,
bool lower_open,
bool upper_open);
IndexedDBKeyRange(const IndexedDBKeyRange& other);
~IndexedDBKeyRange();
IndexedDBKeyRange& operator=(const IndexedDBKeyRange& other);
const IndexedDBKey& lower() const { return lower_; }
const IndexedDBKey& upper() const { return upper_; }
......
......@@ -15,4 +15,8 @@ IndexedDBInfo::IndexedDBInfo(const GURL& origin,
last_modified_(last_modified),
connection_count_(connection_count) {}
IndexedDBInfo::IndexedDBInfo(const IndexedDBInfo& other) = default;
IndexedDBInfo::~IndexedDBInfo() = default;
IndexedDBInfo& IndexedDBInfo::operator=(const IndexedDBInfo& other) = default;
} // namespace content
......@@ -18,6 +18,9 @@ class CONTENT_EXPORT IndexedDBInfo {
int64 size,
const base::Time& last_modified,
size_t connection_count);
IndexedDBInfo(const IndexedDBInfo& other);
~IndexedDBInfo();
IndexedDBInfo& operator=(const IndexedDBInfo& other);
GURL origin_;
int64 size_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment