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