Use std::unordered_map in ResourceManager.

The hashed query performs significantly faster than std::map.
This improves performance in applications which use Bind* often.

Also use the same scheme for the Context-managed resources.

BUG=angleproject:1333

Change-Id: I8a1f25d80e060c62dab1f86005e1bc4df1c06dba
Reviewed-on: https://chromium-review.googlesource.com/331387
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/ResourceManager.h b/src/libANGLE/ResourceManager.h
index fad47f6..4845e39 100644
--- a/src/libANGLE/ResourceManager.h
+++ b/src/libANGLE/ResourceManager.h
@@ -15,8 +15,6 @@
 #include "libANGLE/angletypes.h"
 #include "libANGLE/HandleAllocator.h"
 
-#include <map>
-
 namespace rx
 {
 class ImplFactory;
@@ -82,31 +80,24 @@
     rx::ImplFactory *mFactory;
     std::size_t mRefCount;
 
-    typedef std::map<GLuint, Buffer*> BufferMap;
-    BufferMap mBufferMap;
+    ResourceMap<Buffer> mBufferMap;
     HandleAllocator mBufferHandleAllocator;
 
-    typedef std::map<GLuint, Shader*> ShaderMap;
-    ShaderMap mShaderMap;
+    ResourceMap<Shader> mShaderMap;
 
-    typedef std::map<GLuint, Program*> ProgramMap;
-    ProgramMap mProgramMap;
+    ResourceMap<Program> mProgramMap;
     HandleAllocator mProgramShaderHandleAllocator;
 
-    typedef std::map<GLuint, Texture*> TextureMap;
-    TextureMap mTextureMap;
+    ResourceMap<Texture> mTextureMap;
     HandleAllocator mTextureHandleAllocator;
 
-    typedef std::map<GLuint, Renderbuffer*> RenderbufferMap;
-    RenderbufferMap mRenderbufferMap;
+    ResourceMap<Renderbuffer> mRenderbufferMap;
     HandleAllocator mRenderbufferHandleAllocator;
 
-    typedef std::map<GLuint, Sampler*> SamplerMap;
-    SamplerMap mSamplerMap;
+    ResourceMap<Sampler> mSamplerMap;
     HandleAllocator mSamplerHandleAllocator;
 
-    typedef std::map<GLuint, FenceSync*> FenceMap;
-    FenceMap mFenceSyncMap;
+    ResourceMap<FenceSync> mFenceSyncMap;
     HandleAllocator mFenceSyncHandleAllocator;
 };