- 04cf924 Various minor executable size optimizations. by Marco Poletti · 8 years ago
- 6414851 Re-inline some component_storage methods, the increase in object size is relatively small. by Marco Poletti · 8 years ago
- 0316a00 Reimplement the storage for PartialComponent to: by Marco Poletti · 8 years ago
- cf5c9f1 No longer inline some component-related code, to reduce the executable size of client code using Fruit. This yields a ~6x reduction in the benchmark with 100 classes (1.6MB -> 275KB). by Marco Poletti · 8 years ago
- 1789606 Remove a source file that was committed by mistake. This was causing build failures with Bazel (since it uses globs). by Marco Poletti · 8 years ago
- d07bd8a Fix an 'unused variable' warning reported by Clang (that was breaking the build with -W -Wall). by Marco Poletti · 8 years ago
- ba4d179 No longer include boost::hash{set,map} in fruit.h (not even as forward decls). by Marco Poletti · 8 years ago
- 3e576c2 No longer include normalized_component_storage.h in fruit.h. by Marco Poletti · 8 years ago
- 62f2574 Reduce the amount of code included when including fruit.h. by Marco Poletti · 8 years ago
- c6d5955 Use a singly-linked list instead of double-linked. This improves performance. by Marco Poletti · 8 years ago
- 29c8cf4 Save memory and slightly improve performance by storing a BindingData in 3*sizeof(void*) bytes instead of 4*sizeof(void*). by Marco Poletti · 8 years ago
- c1e07e4 Remove ${} from arguments to a CMake if to avoid expansion problems. by Marco Poletti · 8 years ago
- 7542a33 Don't link with libsupc++ on OS X, it causes a "library not found" error. by Marco Poletti · 8 years ago
- 205f9df Explicitly link against libsupc++. It's needed now when using Clang and libc++ (not sure why it wasn't before), and it's not harmful when using libstdc++. by Marco Poletti · 8 years ago
- 8db9216 Use lists with a custom allocator instead of caching vectors. by Marco Poletti · 8 years ago
- 9722c4d Optimize component construction (before normalization) by caching binding vectors instead of repeatedly destroying and reconstructing them. by Marco Poletti · 8 years ago
- 886289c Switch back to an STL hashmap for multibindings and debug-only maps, and avoid including Boost's hashmap in public headers to reduce the compile time of code using Fruit. by Marco Poletti · 8 years ago
- 31335f8 Use a custom FruitAssert macro instead of plain assert() so that client code can compile with/without NDEBUG but without the additional slowdown caused by assertions in Fruit. by Marco Poletti · 8 years ago
- 375ea5d Revert "Use custom allocators for hash sets/maps." by Marco Poletti · 8 years ago
- 802e590 Use custom allocators for hash sets/maps. by Marco Poletti · 8 years ago
- e99fdb7 Use sparsehash. by Marco Poletti · 8 years ago
- 0d0e95a Cast HybridVector to std::vector<> instead of std::vector<>&&. The latter doesn't compile on Clang. by Marco Poletti · 9 years ago
- ea234f7 Use the default constructor for NormalizedComponentStorage instead of defining one explicitly. by Marco Poletti · 9 years ago
- 16a4e81 Remove unused includes (detected by CLion). by Marco Poletti · 9 years ago
- a70a2e0 Minor changes to help CLion (and probably other IDEs) analyze the code of Fruit. by Marco Poletti · 9 years ago
- df07a49 Change the implementation of LambdaInvoker to avoid what was technically still undefined behavior (even though both GCC and Clang under Linux compiled fine). by Marco Poletti · 9 years ago
- 0d5e069 Get rid of the last per-compiler check, introducing a new FRUIT_HAS_CXA_DEMANGLE configure macro. by Marco Poletti · 9 years ago
- 66906ac Some changes towards support of additional compilers/platforms (notably Intel C++ on Linux, Apple Clang on OS X and MSVC on Windows). by Marco Poletti · 9 years ago
- f289510 Add configure-time checks on compiler and STL features, and use the results of those in macros in Fruit code, instead of checking for specific compilers and/or versions. by Marco Poletti · 9 years ago
- 44226af Allow building fruit statically by Maxwell Koo · 9 years ago
- f41d236 Remove code that was (technically) undefined behavior in LambdaInvoker (it broke strict aliasing rules). by Marco Poletti · 9 years ago
- e464713 Complete support for annotated types, with tests (and fixes for bugs that slipped in the previous commit due to lack of tests). by Marco Poletti · 9 years ago
- 4250ef6 Include cstdlib in demangle_type_name.cpp. This fixes a compilation problem on OS X, see https://github.com/google/fruit/issues/3 . by Marco Poletti · 10 years ago
- b91b406 Fix compile errors with Clang that were not reported by GCC. by Marco Poletti · 10 years ago
- 53f867e Remove unused constructor of NormalizedComponentStorage, inline the now-redundant init() method. by Marco Poletti · 10 years ago
- f106504 InjectorStorage: in the constructor from a Component, create a shallow copy instead of moving the SemistaticGraph. by Marco Poletti · 10 years ago
- 5c354a6 No longer consider fruit::Requirements<...> as one of the exposed types when determining what binding compressions to perform. Pass the list of exposed types as an std::vector instead of an std::initializer_list, allowing getTypeIdsForList to work. by Marco Poletti · 10 years ago
- d83763e Rename fruit::impl::Vector to HybridVector, use it for ComponentStorage.compressed_bindings instead for std::vector. by Marco Poletti · 10 years ago
- 979c940 Add a FixedSizeVector class and use it in FixedSizeAllocator to keep track of allocations. Avoids 1 branch per injection for types that are not trivially destructible and not externally allocated. by Marco Poletti · 10 years ago
- a85fc03 Keep track of what bindings need an allocation, to reduce the space estimate for the fixed-size allocator. by Marco Poletti · 10 years ago
- 1b2a208 Refactor the allocator construction, making the interface more high-level and adding more checks when FRUIT_EXTRA_DEBUG is enabled. by Marco Poletti · 10 years ago
- bb7442f Fix bug in binding compression in a corner case where the binding compression I->C must be undone when C is in the late bindings together with a non-I type depending on C. by Marco Poletti · 10 years ago
- 0bfbe05 Reorganize the code, notably move BindingDataNodeIter to InjectorStorage. by Marco Poletti · 10 years ago
- 2a1a581 Factor out a Vector class from ComponentStorage. by Marco Poletti · 10 years ago
- 9491d65 Switch to the lowercase_with_underscores style for variables and fields (before some used the lowerCamel case instead). by Marco Poletti · 10 years ago
- b829323 Rename singleton->object throughout, plus other minor comment fixes. by Marco Poletti · 10 years ago
- 85aea00 Rename typeRegistry->bindings, typeRegistryForMultibindings->multibindings throughout. by Marco Poletti · 10 years ago
- eedc2a5 Remove the multibindingDeps vector from ComponentStorage. Each MultibindingData stores the deps anyway. by Marco Poletti · 10 years ago
- 93372ce Inline trivial methods of ComponentStorage into component.defn.h. by Marco Poletti · 10 years ago
- 224bd9c First part of the refactoring of ComponentStorage, mostly moving logic into InjectorStorage. by Marco Poletti · 10 years ago
- 4ac3c8e Factor common code in individual bindings in component_storage.defn.h into a new constructObject() method in InjectorStorage. Now the allocator can be private. by Marco Poletti · 10 years ago
- 5c913af Split out the allocator part of InjectorStorage into a separate FixedSizeAllocator class. by Marco Poletti · 10 years ago
- 58e2ec2 First implementation of binding compression; reduces injection time by ~35% when using virtual destructors. by Marco Poletti · 10 years ago
- 050d600 Optimize SemistaticGraph using shallow copy semantics to share data with the NormalizedComponent. Decreases injection time by ~15%. by Marco Poletti · 10 years ago
- 5c1bf6d SemistaticGraph now stores internal IDs using a SemistaticGraphInternalNodeId struct. This is in preparation of the upcoming SemistaticGraph optimization. by Marco Poletti · 10 years ago
- 181cbe2 Changes in preparation of making SemistaticGraph non-copyable. by Marco Poletti · 10 years ago
- 5200558 Make InjectorStorage and NormalizedComponentStorage non-movable/copyable, in preparation of future optimizations. by Marco Poletti · 10 years ago
- 8fb03fa Move the component normalization logic into InjectorStorage, and refactor InjectorStorage to prepare for the StaticMap optimization. by Marco Poletti · 10 years ago
- 4e9594b InjectorStorage now stores the type registry (for bindings and multibindings) separately, instead of storing a NormalizedComponentStorage. This is in preparation for future optimizations. by Marco Poletti · 10 years ago
- a0eda10 Make SemistaticGraph compile in debug mode when using a type different from TypeId as key. by Marco Poletti · 10 years ago
- d09ec5b Document that the default constructor of Semistatic{Map,Graph} constructs an invalid object. Remove the default constructor of NormalizedComponentStorage. by Marco Poletti · 10 years ago
- 757c78f Move code from semistatic_map.cpp to semistatic_map.templates.h. Add a IN_FRUIT_CPP_FILE to ensure that .templates.h files are only included by Fruit cpp files. by Marco Poletti · 10 years ago
- cdcf729 The Injector constructor with 2 parameters now takes the NormalizedComponent as const& instead of value. by Marco Poletti · 10 years ago
- 7ad3862 Re-organize the files in include/fruit/impl into subdirectories. by Marco Poletti · 10 years ago
- faa258c Fix Clang compile error. by Marco Poletti · 10 years ago
- 71c36de Fix some warnings in release mode, and set debug-only compiler flags properly. by Marco Poletti · 10 years ago
- 7f35b65 Re-organize the source code. Merge component.utils.h into component_impl.h. Now using .defn files for template/inline definitions. by Marco Poletti · 10 years ago
- fbcb38b Revert "Another attempt to increase performance by having static storage in the injector." by Marco Poletti · 10 years ago
- f50f56f Another attempt to increase performance by having static storage in the injector. by Marco Poletti · 10 years ago
- b1d265c Use the run-time dependency graph to save hash table lookups. Saves 10-15% of injection time. by Marco Poletti · 10 years ago
- 633a389 Add a SemistaticGraph class and use it to re-implement NormalizedComponentStorage. This is in preparation of a following optimization, for now it's just slower. by Marco Poletti · 10 years ago
- bd971eb Rename BindingDataForMultibinding->MultibindingData, BindingDataVectorForMultibinding->NormalizedMultibindingData. by Marco Poletti · 10 years ago
- a49c9ad Store dependencies in BindingData, in preparation for the next optimization. by Marco Poletti · 10 years ago
- 2d81d25 Remove the BindingData-specific optimization from SemistaticMap (even though this decreases performance) in preparation for later optimizations. by Marco Poletti · 10 years ago
- 2050c36 SemistaticMap now uses a random seed for the hash generation instead of using seed 0. by Marco Poletti · 10 years ago
- 50291bc Slight optimization for the memory allocation in the injector, saving 1-2% of injection time. by Marco Poletti · 10 years ago
- 91d702c Remove SemistaticMap::count(), it's never used. by Marco Poletti · 10 years ago
- 4f70da2 Minor changes, simplify/remove unreachable or redundant code. by Marco Poletti · 10 years ago
- 5bac985 Drop support for functions as providers (only lambdas are supported now). De-templatize SemistaticMap, store typeInfo + is_created + create/singleton in 2 machine words. Gives a ~10% reduction in injection time. by Marco Poletti · 10 years ago
- b1e6c79 Store a vector of pairs instead of two separate vectors in SemistaticMap. This slightly improves injection performance. by Marco Poletti · 10 years ago
- 943c382 Restructure/Rewrite the metaprogramming code. Now using None as an element in lists to speed up removals. by Marco Poletti · 10 years ago
- a25a1e7 Use exit(1) instead of abort() for runtime errors. by Marco Poletti · 10 years ago
- ac0fe96 Fix compilation warnings/issues with GCC 4.9.1. by Marco Poletti · 10 years ago
- 21802c6 Inline the ensureConstructed() method, saving ~15% of injection time. by Marco Poletti · 10 years ago
- 1fd2649 getMultibindings now returns a vector instead of a set. by Marco Poletti · 10 years ago
- d9d60db Reduce the preprocessed size of fruit.h by moving big includes to .cpp files. by Marco Poletti · 10 years ago
- 3f0a568 Skip the destruction of trivially destructible types. by Marco Poletti · 10 years ago
- 06a1d1e Add a custom map implementation, which improves injection performance by ~20%. This also removes the dependency on the sparsehash library. by Marco Poletti · 10 years ago
- c207ede Use lambdas instead of inline functions for comparators; this helps the compiler inline them. by Marco Poletti · 10 years ago
- 183fe6d Avoid a copy when constructing an InjectorStorage from a NormalizedComponentStorage&&. by Marco Poletti · 10 years ago
- b289de1 Turn NormalizedComponentStorage::install() into a static method. by Marco Poletti · 10 years ago
- 42a02a1 Add the notion of NormalizedComponent, add a two-argument constructor of Injector that takes a NormalizedComponent and a Component. by Marco Poletti · 10 years ago
- 4f57c29 Remove unused function. by Marco Poletti · 10 years ago
- 3ecb041 Prepare support for NormalizedComponent: now InjectorStorage is constructed from a NormalizedComponentStorage instead of a NormalizedComponentStorage::BindingVectors. by Marco Poletti · 10 years ago
- 492b1ba Split NormalizedComponentStorage out of InjectorStorage. by Marco Poletti · 10 years ago
- 9341b25 Remove ComponentStorage::check() and InjectorStorage::check(), replace with assertions or if statements as appropriate. by Marco Poletti · 10 years ago
- 147d290 Insert the bindings in the hash table using a range insert instead of one at a time. by Marco Poletti · 10 years ago
- 4b59b0a Revert "Use sorted vectors instead of hash tables in the injector." Hash tables are slightly faster. by Marco Poletti · 10 years ago
- d00d693 Use sorted vectors instead of hash tables in the injector. by Marco Poletti · 10 years ago
- c8e80a5 Refactor the access to bindings in InjectorStorage, in preparation of the change of representation. by Marco Poletti · 10 years ago