summaryrefslogtreecommitdiffstats
path: root/base/callback_unittest.cc
diff options
context:
space:
mode:
authorajwong@chromium.org <ajwong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-19 00:52:15 +0000
committerajwong@chromium.org <ajwong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-19 00:52:15 +0000
commit4346ef91c5d16fd98da3dad5356b0f994f225ce6 (patch)
tree2f0d0bcdb836a1f0d052ae901b9bfc69a44ed6b1 /base/callback_unittest.cc
parentc034941e26f9e62e7f5c9b58cd7a3f52bac1b1db (diff)
downloadchromium_src-4346ef91c5d16fd98da3dad5356b0f994f225ce6.zip
chromium_src-4346ef91c5d16fd98da3dad5356b0f994f225ce6.tar.gz
chromium_src-4346ef91c5d16fd98da3dad5356b0f994f225ce6.tar.bz2
Callbacks: Replumb the type-inference.
In preparation for attempting to support __stdcall, __fastcall, etc., break apart the templates so that instead of having one set of InvokerNs per type of function pointer, only have one per syntactic method of invocation. This lets the number of template specializations scale better. Previously, for each type of function pointer, we needed sum(1...arity) InvokerN specializations. There were 3 types (function, method, const method). The Windows calling conventions would have added another 2. in this method, we have 2 sets of InvokerN templates, and 1 set of FunctionTraits templates for each type. We only need (arity) number of FunctionTraits templates, so this is a net win. For our 6-arity system, it should go from 5 types * (1+2+3+4+5+6) InvokerNs = 105 specializations to 5 types * 6 FunctionTraits + 2 calling_syntaxes * (1+2+3+4+5+6) InvokerNs = 72 specializations This puts a bit more work on the compiler, but...hey, better it than the reader of the code. BUG=35223 TEST=none Review URL: http://codereview.chromium.org/6538045 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75482 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/callback_unittest.cc')
-rw-r--r--base/callback_unittest.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/base/callback_unittest.cc b/base/callback_unittest.cc
index e41b399..f327412 100644
--- a/base/callback_unittest.cc
+++ b/base/callback_unittest.cc
@@ -21,7 +21,7 @@ class HelperObject {
int next_number_;
};
-struct FakeTraits {
+struct FakeInvoker {
static void DoInvoke(internal::InvokerStorageBase*) {
}
};
@@ -30,12 +30,12 @@ struct FakeTraits {
// comparators and emptiness APIs.
class FakeInvokerStorage1 : public internal::InvokerStorageBase {
public:
- typedef FakeTraits FunctionTraits;
+ typedef FakeInvoker Invoker;
};
class FakeInvokerStorage2 : public internal::InvokerStorageBase {
public:
- typedef FakeTraits FunctionTraits;
+ typedef FakeInvoker Invoker;
};
TEST(CallbackOld, OneArg) {