4 typedef __SIZE_TYPE__ size_t;
6 inline void* operator new(std::size_t, void* __p) throw() {
10 struct CollectorCell { };
11 template<typename T> class PassRefPtr {
13 T* releaseRef() const { }
15 template <typename T> class NonNullPassRefPtr {
17 template <class U> NonNullPassRefPtr(const PassRefPtr<U>& o)
18 : m_ptr(o.releaseRef()) { }
26 static void storeVPtrs();
28 class JSCell : public Noncopyable {
29 friend class JSObject;
30 friend class JSGlobalData;
33 class JSObject : public JSCell {
35 explicit JSObject(NonNullPassRefPtr<Structure>);
36 static PassRefPtr<Structure> createStructure(JSValue prototype) { }
38 class JSByteArray : public JSObject {
39 friend class JSGlobalData;
40 enum VPtrStealingHackType { VPtrStealingHack };
41 JSByteArray(VPtrStealingHackType)
42 : JSObject(createStructure(jsNull())), m_classInfo(0) { }
43 const ClassInfo* m_classInfo;
45 void JSGlobalData::storeVPtrs() {
47 void* storage = &cell;
48 JSCell* jsByteArray = new (storage) JSByteArray(JSByteArray::VPtrStealingHack);
49 jsByteArray->~JSCell();