Refactor some of ExtraData to use CompactVector
commit03f4b977243b9f618c892da50e9f0bfdb50b328a
authorJeremy Faller <jfaller@fb.com>
Fri, 17 Nov 2017 15:04:41 +0000 (17 07:04 -0800)
committerHhvm Bot <hhvm-bot@users.noreply.github.com>
Fri, 17 Nov 2017 15:18:09 +0000 (17 07:18 -0800)
tree3746c7b845621d7e11cfd653710c814a601e5d9b
parent14f85662c3f07aa3e7fef502450fd0d99ccb3214
Refactor some of ExtraData to use CompactVector

Summary:
Remove 32 bytes from ExtraData. No perf wins to speak of (as these types aren't used in prod). Current prod layout:

```
 {
    "HPHP::Class::ExtraData",
    [](const void* base, const void* internal) -> const char* {
      auto const diff = reinterpret_cast<const char*>(internal) -
                        reinterpret_cast<const char*>(base);
      (void)diff;
      if (0 <= diff && diff < 24) return "m_traitAliases"; // size 24
      if (24 <= diff && diff < 32) return "m_usedTraits"; // size 8
      if (32 <= diff && diff < 36) return "m_traitsBeginIdx"; // size 4
      if (36 <= diff && diff < 40) return "m_traitsEndIdx"; // size 4
      if (40 <= diff && diff < 44) return "m_instanceCtor"; // size 4
      if (44 <= diff && diff < 48) return "m_instanceDtor"; // size 4
      if (48 <= diff && diff < 104) return "m_scopedClones"; // size 56
      if (104 <= diff && diff < 112) return "m_clonesWithThisScope"; // size 8
      if (112 <= diff && diff < 120) return "m_nativeDataInfo"; // size 8
      if (120 <= diff && diff < 128) return "m_enumValues"; // size 8
      return nullptr;
    }
  },

```

alexeyt because I think he was doing similar stuff to PreClass.

Reviewed By: markw65

Differential Revision: D6297165

fbshipit-source-id: 1c476df38c20fef257dcb20853588988f01fd431
hphp/runtime/vm/class-inl.h
hphp/runtime/vm/class.cpp
hphp/runtime/vm/class.h