Optimize newInstanceRaw by fully initializing ObjectData attributes
Summary:
The ObjectData constructor used by newInstanceRaw always initalizes
flags to 0, and shortly after we explicitly store the compile-time
flags value to m_aux16, if it's not zero. This costs an extra store
in the nonzero flags case.
Optimize by adding newInstanceRawAttr, which passes a compile-time
immediate flags value to the ObjectData constructor, which combines
it with other header fields into a single store.
Eliminate the no-flags-init constructor; the newInstanceRaw
overloaded functions all call the full NoInit constructor now.
But, split the full NoInit{} constructor into two variations;
NoInit{} still asserts that there are zero properties, while
InitRaw{} doesn't; the latter is for the cases where the caller
takes care of property-initialization.
Reviewed By: alexeyt
Differential Revision:
D5766580
fbshipit-source-id:
e6da845fcffbd1babc9c2f1c80da38ed4f5ae9ea