[JSC] Optimize layout of AccessCase / ProxyableAccessCase to reduce size of ProxyableAccessCase
https://bugs.webkit.org/show_bug.cgi?id=187465

Reviewed by Keith Miller.

ProxyableAccessCase is allocated so frequently and it is persisted so long. Reducing the size
of ProxyableAccessCase can reduce the footprint of many web sites including nytimes.com.

This patch uses a bit complicated layout to reduce ProxyableAccessCase. We add unused bool member
in AccessCase's padding, and use it in ProxyableAccessCase. By doing so, we can reduce the size
of ProxyableAccessCase from 56 to 48. And it also reduces the size of GetterSetterAccessCase
from 104 to 96 since it inherits ProxyableAccessCase.

* bytecode/AccessCase.h:
(JSC::AccessCase::viaProxy const):
(JSC::AccessCase::AccessCase):
* bytecode/ProxyableAccessCase.cpp:
(JSC::ProxyableAccessCase::ProxyableAccessCase):
* bytecode/ProxyableAccessCase.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@233644 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/JavaScriptCore/bytecode/ProxyableAccessCase.cpp b/Source/JavaScriptCore/bytecode/ProxyableAccessCase.cpp
index b31a31f..0f28513 100644
--- a/Source/JavaScriptCore/bytecode/ProxyableAccessCase.cpp
+++ b/Source/JavaScriptCore/bytecode/ProxyableAccessCase.cpp
@@ -33,9 +33,9 @@
 ProxyableAccessCase::ProxyableAccessCase(VM& vm, JSCell* owner, AccessType accessType, PropertyOffset offset, Structure* structure,
     const ObjectPropertyConditionSet& conditionSet, bool viaProxy, WatchpointSet* additionalSet, std::unique_ptr<PolyProtoAccessChain> prototypeAccessChain)
     : Base(vm, owner, accessType, offset, structure, conditionSet, WTFMove(prototypeAccessChain))
-    , m_viaProxy(viaProxy)
     , m_additionalSet(additionalSet)
 {
+    m_viaProxy = viaProxy;
 }
 
 std::unique_ptr<AccessCase> ProxyableAccessCase::create(VM& vm, JSCell* owner, AccessType type, PropertyOffset offset, Structure* structure, const ObjectPropertyConditionSet& conditionSet, bool viaProxy, WatchpointSet* additionalSet, std::unique_ptr<PolyProtoAccessChain> prototypeAccessChain)