From 192cff5da4fedc44707e34c9a7e0dc8ddc4e5eb7 Mon Sep 17 00:00:00 2001 From: Andrew Gallagher Date: Wed, 8 Aug 2012 12:05:18 -0700 Subject: [PATCH] folly::dynamic: use std::vector instead of folly::fbvector Summary: It appears that std::unordered_map is no longer relocatable in gcc-4.7. Use std::vector instead, until fbvector supports non- relocatable types. Test Plan: Built and ran facebar tests under gcc-4.7. Also ran folly unittests. Reviewed By: andrei.alexandrescu@fb.com FB internal diff: D543099 --- folly/dynamic-inl.h | 8 ++++++-- folly/dynamic.h | 5 ++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/folly/dynamic-inl.h b/folly/dynamic-inl.h index 4a7c3c54..94ddea4c 100644 --- a/folly/dynamic-inl.h +++ b/folly/dynamic-inl.h @@ -586,12 +586,16 @@ inline std::size_t dynamic::erase(dynamic const& key) { } inline dynamic::const_iterator dynamic::erase(const_iterator it) { - return get().erase(it); + auto& arr = get(); + return get().erase(arr.begin() + (it - arr.begin())); } inline dynamic::const_iterator dynamic::erase(const_iterator first, const_iterator last) { - return get().erase(first, last); + auto& arr = get(); + return get().erase( + arr.begin() + (first - arr.begin()), + arr.begin() + (last - arr.begin())); } inline dynamic::const_key_iterator dynamic::erase(const_key_iterator it) { diff --git a/folly/dynamic.h b/folly/dynamic.h index 6a5fe0bd..3defcfaf 100644 --- a/folly/dynamic.h +++ b/folly/dynamic.h @@ -70,11 +70,11 @@ #include #include #include +#include #include #include #include "folly/Traits.h" -#include "folly/FBVector.h" #include "folly/FBString.h" namespace folly { @@ -83,7 +83,6 @@ namespace folly { struct dynamic; struct TypeError; -template<> FOLLY_ASSUME_RELOCATABLE(dynamic); ////////////////////////////////////////////////////////////////////// @@ -108,7 +107,7 @@ struct dynamic : private boost::operators { * Object item iterators dereference as pairs of (key, value). */ private: - typedef fbvector Array; + typedef std::vector Array; public: typedef Array::const_iterator const_iterator; struct const_key_iterator; -- 2.34.1