Skip to content

Commit 2695b7a

Browse files
committed
Removed all Webcore/DOM references; made it compile
1 parent 7940c54 commit 2695b7a

File tree

6 files changed

+89
-54
lines changed

6 files changed

+89
-54
lines changed

JavaScriptCore/runtime/TypedArrays/JSArrayBuffer.cpp

Lines changed: 41 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,23 @@
2121
#include "config.h"
2222
#include "JSArrayBuffer.h"
2323

24-
#include "ExceptionCode.h"
2524
#include "JSArrayBuffer.h"
26-
#include "JSDOMBinding.h"
25+
#include "Lookup.h"
2726
#include <runtime/Error.h>
2827
#include <wtf/ArrayBuffer.h>
2928
#include <wtf/GetPtr.h>
3029

3130
using namespace JSC;
3231

33-
namespace WebCore {
32+
namespace JSC {
33+
34+
enum ParameterDefaultPolicy {
35+
DefaultIsUndefined,
36+
DefaultIsNullString
37+
};
38+
39+
#define MAYBE_MISSING_PARAMETER(exec, index, policy) (((policy) == DefaultIsNullString && (index) >= (exec)->argumentCount()) ? (JSValue()) : ((exec)->argument(index)))
40+
3441

3542
ASSERT_CLASS_FITS_IN_CELL(JSArrayBuffer);
3643
/* Hash table */
@@ -53,27 +60,28 @@ static const HashTableValue JSArrayBufferConstructorTableValues[] =
5360
static const HashTable JSArrayBufferConstructorTable = { 1, 0, JSArrayBufferConstructorTableValues, 0 };
5461
const ClassInfo JSArrayBufferConstructor::s_info = { "ArrayBufferConstructor", &Base::s_info, &JSArrayBufferConstructorTable, 0, CREATE_METHOD_TABLE(JSArrayBufferConstructor) };
5562

56-
JSArrayBufferConstructor::JSArrayBufferConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
57-
: DOMConstructorObject(structure, globalObject)
63+
JSArrayBufferConstructor::JSArrayBufferConstructor(JSGlobalObject* globalObject, Structure* structure)
64+
: InternalFunction(globalObject, structure)
5865
{
5966
}
6067

61-
void JSArrayBufferConstructor::finishCreation(ExecState* exec, JSDOMGlobalObject* globalObject)
68+
void JSArrayBufferConstructor::finishCreation(ExecState* exec, JSGlobalObject* globalObject)
6269
{
63-
Base::finishCreation(exec->globalData());
70+
JSC::JSObject * proto = JSArrayBufferPrototype::self(exec, globalObject);
71+
Base::finishCreation(exec->globalData(), Identifier(exec, proto->classInfo()->className));
6472
ASSERT(inherits(&s_info));
65-
putDirect(exec->globalData(), exec->propertyNames().prototype, JSArrayBufferPrototype::self(exec, globalObject), DontDelete | ReadOnly);
73+
putDirect(exec->globalData(), exec->propertyNames().prototype, proto, DontDelete | ReadOnly);
6674
putDirect(exec->globalData(), exec->propertyNames().length, jsNumber(1), ReadOnly | DontDelete | DontEnum);
6775
}
6876

6977
bool JSArrayBufferConstructor::getOwnPropertySlot(JSCell* cell, ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
7078
{
71-
return getStaticValueSlot<JSArrayBufferConstructor, JSDOMWrapper>(exec, &JSArrayBufferConstructorTable, jsCast<JSArrayBufferConstructor*>(cell), propertyName, slot);
79+
return getStaticFunctionSlot<InternalFunction>(exec, &JSArrayBufferConstructorTable, jsCast<JSArrayBufferConstructor*>(cell), propertyName, slot);
7280
}
7381

7482
bool JSArrayBufferConstructor::getOwnPropertyDescriptor(JSObject* object, ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor)
7583
{
76-
return getStaticValueDescriptor<JSArrayBufferConstructor, JSDOMWrapper>(exec, &JSArrayBufferConstructorTable, jsCast<JSArrayBufferConstructor*>(object), propertyName, descriptor);
84+
return getStaticFunctionDescriptor<InternalFunction>(exec, &JSArrayBufferConstructorTable, jsCast<JSArrayBufferConstructor*>(object), propertyName, descriptor);
7785
}
7886

7987
ConstructType JSArrayBufferConstructor::getConstructData(JSCell*, ConstructData& constructData)
@@ -93,14 +101,20 @@ static const HashTableValue JSArrayBufferPrototypeTableValues[] =
93101
static const HashTable JSArrayBufferPrototypeTable = { 2, 1, JSArrayBufferPrototypeTableValues, 0 };
94102
static const HashTable* getJSArrayBufferPrototypeTable(ExecState* exec)
95103
{
96-
return getHashTableForGlobalData(exec->globalData(), &JSArrayBufferPrototypeTable);
104+
ASSERT_UNUSED(exec, exec);
105+
return &JSArrayBufferPrototypeTable; // PL FIXME: should be one instance per global data, not super global
97106
}
98107

99108
const ClassInfo JSArrayBufferPrototype::s_info = { "ArrayBufferPrototype", &Base::s_info, 0, getJSArrayBufferPrototypeTable, CREATE_METHOD_TABLE(JSArrayBufferPrototype) };
100109

110+
static JSObject * globalProto = NULL;
101111
JSObject* JSArrayBufferPrototype::self(ExecState* exec, JSGlobalObject* globalObject)
102112
{
103-
return getDOMPrototype<JSArrayBuffer>(exec, globalObject);
113+
// PL FIXME: dirty hack to provide one global prototype
114+
if( !globalProto ) {
115+
globalProto = JSArrayBuffer::createPrototype(exec, globalObject);
116+
}
117+
return globalProto;
104118
}
105119

106120
bool JSArrayBufferPrototype::getOwnPropertySlot(JSCell* cell, ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
@@ -117,13 +131,14 @@ bool JSArrayBufferPrototype::getOwnPropertyDescriptor(JSObject* object, ExecStat
117131

118132
static const HashTable* getJSArrayBufferTable(ExecState* exec)
119133
{
120-
return getHashTableForGlobalData(exec->globalData(), &JSArrayBufferTable);
134+
ASSERT_UNUSED(exec, exec);
135+
return &JSArrayBufferTable;
121136
}
122137

123138
const ClassInfo JSArrayBuffer::s_info = { "ArrayBuffer", &Base::s_info, 0, getJSArrayBufferTable , CREATE_METHOD_TABLE(JSArrayBuffer) };
124139

125-
JSArrayBuffer::JSArrayBuffer(Structure* structure, JSDOMGlobalObject* globalObject, PassRefPtr<ArrayBuffer> impl)
126-
: JSDOMWrapper(structure, globalObject)
140+
JSArrayBuffer::JSArrayBuffer(Structure* structure, JSGlobalObject* globalObject, PassRefPtr<ArrayBuffer> impl)
141+
: JSNonFinalObject(globalObject->globalData(), structure)
127142
, m_impl(impl.leakRef())
128143
{
129144
}
@@ -180,9 +195,14 @@ JSValue jsArrayBufferConstructor(ExecState* exec, JSValue slotBase, const Identi
180195
return JSArrayBuffer::getConstructor(exec, domObject->globalObject());
181196
}
182197

198+
static JSObject * globalConstructor;
183199
JSValue JSArrayBuffer::getConstructor(ExecState* exec, JSGlobalObject* globalObject)
184200
{
185-
return getDOMConstructor<JSArrayBufferConstructor>(exec, jsCast<JSDOMGlobalObject*>(globalObject));
201+
if( !globalConstructor ) {
202+
JSArrayBufferConstructor * constructor = JSArrayBufferConstructor::create(exec, JSArrayBufferConstructor::createStructure(exec->globalData(), globalObject, globalObject->objectPrototype()), globalObject);
203+
globalConstructor = constructor;
204+
}
205+
return globalConstructor;
186206
}
187207

188208
EncodedJSValue JSC_HOST_CALL jsArrayBufferPrototypeFunctionSlice(ExecState* exec)
@@ -232,15 +252,16 @@ bool JSArrayBufferOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> ha
232252

233253
void JSArrayBufferOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context)
234254
{
255+
ASSERT_UNUSED(context, context);
235256
JSArrayBuffer* jsArrayBuffer = jsCast<JSArrayBuffer*>(handle.get().asCell());
236-
DOMWrapperWorld* world = static_cast<DOMWrapperWorld*>(context);
237-
uncacheWrapper(world, jsArrayBuffer->impl(), jsArrayBuffer);
238257
jsArrayBuffer->releaseImpl();
239258
}
240259

241-
JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, ArrayBuffer* impl)
260+
JSC::JSValue toJS(JSC::ExecState* exec, JSGlobalObject* globalObject, ArrayBuffer* impl)
242261
{
243-
return wrap<JSArrayBuffer>(exec, globalObject, impl);
262+
JSArrayBuffer * buf = JSArrayBuffer::create( JSArrayBuffer::createStructure(exec->globalData(), globalObject, JSArrayBufferPrototype::self(exec, globalObject)), globalObject, impl);
263+
JSC::JSCell* jsCell = reinterpret_cast<JSC::JSCell*>(buf);
264+
return jsCell;
244265
}
245266

246267
ArrayBuffer* toArrayBuffer(JSC::JSValue value)

JavaScriptCore/runtime/TypedArrays/JSArrayBuffer.h

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,20 @@
2121
#ifndef JSArrayBuffer_h
2222
#define JSArrayBuffer_h
2323

24-
#include "JSDOMBinding.h"
24+
#include "JSObject.h"
25+
#include "InternalFunction.h"
26+
2527
#include <runtime/JSGlobalObject.h>
2628
#include <runtime/JSObject.h>
2729
#include <runtime/ObjectPrototype.h>
2830
#include <wtf/ArrayBuffer.h>
2931

30-
namespace WebCore {
32+
namespace JSC {
3133

32-
class JSArrayBuffer : public JSDOMWrapper {
34+
class JSArrayBuffer : public JSNonFinalObject {
3335
public:
34-
typedef JSDOMWrapper Base;
35-
static JSArrayBuffer* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, PassRefPtr<ArrayBuffer> impl)
36+
typedef JSNonFinalObject Base;
37+
static JSArrayBuffer* create(JSC::Structure* structure, JSGlobalObject* globalObject, PassRefPtr<ArrayBuffer> impl)
3638
{
3739
JSArrayBuffer* ptr = new (NotNull, JSC::allocateCell<JSArrayBuffer>(globalObject->globalData().heap)) JSArrayBuffer(structure, globalObject, impl);
3840
ptr->finishCreation(globalObject->globalData());
@@ -60,7 +62,7 @@ class JSArrayBuffer : public JSDOMWrapper {
6062
private:
6163
ArrayBuffer* m_impl;
6264
protected:
63-
JSArrayBuffer(JSC::Structure*, JSDOMGlobalObject*, PassRefPtr<ArrayBuffer>);
65+
JSArrayBuffer(JSC::Structure*, JSGlobalObject*, PassRefPtr<ArrayBuffer>);
6466
void finishCreation(JSC::JSGlobalData&);
6567
static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags;
6668
};
@@ -70,6 +72,7 @@ class JSArrayBufferOwner : public JSC::WeakHandleOwner {
7072
virtual void finalize(JSC::Handle<JSC::Unknown>, void* context);
7173
};
7274

75+
/*
7376
inline JSC::WeakHandleOwner* wrapperOwner(DOMWrapperWorld*, ArrayBuffer*)
7477
{
7578
DEFINE_STATIC_LOCAL(JSArrayBufferOwner, jsArrayBufferOwner, ());
@@ -80,8 +83,9 @@ inline void* wrapperContext(DOMWrapperWorld* world, ArrayBuffer*)
8083
{
8184
return world;
8285
}
86+
*/
8387

84-
JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, ArrayBuffer*);
88+
JSC::JSValue toJS(JSC::ExecState*, JSGlobalObject*, ArrayBuffer*);
8589
ArrayBuffer* toArrayBuffer(JSC::JSValue);
8690

8791
class JSArrayBufferPrototype : public JSC::JSNonFinalObject {
@@ -109,16 +113,16 @@ class JSArrayBufferPrototype : public JSC::JSNonFinalObject {
109113
static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags;
110114
};
111115

112-
class JSArrayBufferConstructor : public DOMConstructorObject {
116+
class JSArrayBufferConstructor : public InternalFunction {
113117
private:
114-
JSArrayBufferConstructor(JSC::Structure*, JSDOMGlobalObject*);
115-
void finishCreation(JSC::ExecState*, JSDOMGlobalObject*);
118+
JSArrayBufferConstructor(JSGlobalObject* globalObject, Structure* structure);
119+
void finishCreation(JSC::ExecState*, JSGlobalObject*);
116120

117121
public:
118-
typedef DOMConstructorObject Base;
119-
static JSArrayBufferConstructor* create(JSC::ExecState* exec, JSC::Structure* structure, JSDOMGlobalObject* globalObject)
122+
typedef InternalFunction Base;
123+
static JSArrayBufferConstructor* create(JSC::ExecState* exec, JSC::Structure* structure, JSGlobalObject* globalObject)
120124
{
121-
JSArrayBufferConstructor* ptr = new (NotNull, JSC::allocateCell<JSArrayBufferConstructor>(*exec->heap())) JSArrayBufferConstructor(structure, globalObject);
125+
JSArrayBufferConstructor* ptr = new (NotNull, JSC::allocateCell<JSArrayBufferConstructor>(*exec->heap())) JSArrayBufferConstructor(globalObject, structure);
122126
ptr->finishCreation(exec, globalObject);
123127
return ptr;
124128
}
@@ -131,7 +135,7 @@ class JSArrayBufferConstructor : public DOMConstructorObject {
131135
return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
132136
}
133137
protected:
134-
static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::ImplementsHasInstance | DOMConstructorObject::StructureFlags;
138+
static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::ImplementsHasInstance | InternalFunction::StructureFlags;
135139
static JSC::EncodedJSValue JSC_HOST_CALL constructJSArrayBuffer(JSC::ExecState*);
136140
static JSC::ConstructType getConstructData(JSC::JSCell*, JSC::ConstructData&);
137141
};

JavaScriptCore/runtime/TypedArrays/JSArrayBufferCustom.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,10 @@
2626
#include "config.h"
2727
#include "JSArrayBuffer.h"
2828

29-
#include "ExceptionCode.h"
3029
#include <runtime/Error.h>
3130
#include <wtf/ArrayBuffer.h>
3231

33-
namespace WebCore {
34-
35-
using namespace JSC;
32+
namespace JSC {
3633

3734
EncodedJSValue JSC_HOST_CALL JSArrayBufferConstructor::constructJSArrayBuffer(ExecState* exec)
3835
{

JavaScriptCore/runtime/TypedArrays/JSArrayBufferView.cpp

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,15 @@
2121
#include "config.h"
2222
#include "JSArrayBufferView.h"
2323

24+
#include "Lookup.h"
2425
#include "JSArrayBuffer.h"
2526
#include <wtf/ArrayBuffer.h>
2627
#include <wtf/ArrayBufferView.h>
2728
#include <wtf/GetPtr.h>
2829

2930
using namespace JSC;
3031

31-
namespace WebCore {
32+
namespace JSC {
3233

3334
ASSERT_CLASS_FITS_IN_CELL(JSArrayBufferView);
3435
/* Hash table */
@@ -52,25 +53,36 @@ static const HashTableValue JSArrayBufferViewPrototypeTableValues[] =
5253
static const HashTable JSArrayBufferViewPrototypeTable = { 1, 0, JSArrayBufferViewPrototypeTableValues, 0 };
5354
static const HashTable* getJSArrayBufferViewPrototypeTable(ExecState* exec)
5455
{
55-
return getHashTableForGlobalData(exec->globalData(), &JSArrayBufferViewPrototypeTable);
56+
ASSERT_UNUSED(exec, exec);
57+
return &JSArrayBufferViewPrototypeTable; // PL FIXME: should be one instance per global data, not super global
5658
}
5759

5860
const ClassInfo JSArrayBufferViewPrototype::s_info = { "ArrayBufferViewPrototype", &Base::s_info, 0, getJSArrayBufferViewPrototypeTable, CREATE_METHOD_TABLE(JSArrayBufferViewPrototype) };
5961

62+
63+
static JSObject * globalProto = NULL;
6064
JSObject* JSArrayBufferViewPrototype::self(ExecState* exec, JSGlobalObject* globalObject)
6165
{
62-
return getDOMPrototype<JSArrayBufferView>(exec, globalObject);
66+
// PL FIXME: dirty hack to provide one global prototype
67+
if( !globalProto ) {
68+
JSGlobalData &data = exec->globalData();
69+
globalProto = JSArrayBufferViewPrototype::create(data, globalObject,
70+
JSArrayBufferViewPrototype::createStructure(data, globalObject,
71+
globalObject->objectPrototype()));
72+
}
73+
return globalProto;
6374
}
6475

6576
static const HashTable* getJSArrayBufferViewTable(ExecState* exec)
6677
{
67-
return getHashTableForGlobalData(exec->globalData(), &JSArrayBufferViewTable);
78+
ASSERT_UNUSED(exec, exec);
79+
return &JSArrayBufferViewTable;
6880
}
6981

7082
const ClassInfo JSArrayBufferView::s_info = { "ArrayBufferView", &Base::s_info, 0, getJSArrayBufferViewTable , CREATE_METHOD_TABLE(JSArrayBufferView) };
7183

72-
JSArrayBufferView::JSArrayBufferView(Structure* structure, JSDOMGlobalObject* globalObject, PassRefPtr<ArrayBufferView> impl)
73-
: JSDOMWrapper(structure, globalObject)
84+
JSArrayBufferView::JSArrayBufferView(Structure* structure, JSGlobalObject* globalObject, PassRefPtr<ArrayBufferView> impl)
85+
: JSNonFinalObject(globalObject->globalData(), structure)
7486
, m_impl(impl.leakRef())
7587
{
7688
}
@@ -159,9 +171,8 @@ bool JSArrayBufferViewOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown
159171

160172
void JSArrayBufferViewOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context)
161173
{
174+
ASSERT_UNUSED(context, context);
162175
JSArrayBufferView* jsArrayBufferView = jsCast<JSArrayBufferView*>(handle.get().asCell());
163-
DOMWrapperWorld* world = static_cast<DOMWrapperWorld*>(context);
164-
uncacheWrapper(world, jsArrayBufferView->impl(), jsArrayBufferView);
165176
jsArrayBufferView->releaseImpl();
166177
}
167178

JavaScriptCore/runtime/TypedArrays/JSArrayBufferView.h

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,17 @@
2121
#ifndef JSArrayBufferView_h
2222
#define JSArrayBufferView_h
2323

24-
#include "JSDOMBinding.h"
2524
#include <runtime/JSGlobalObject.h>
2625
#include <runtime/JSObject.h>
2726
#include <runtime/ObjectPrototype.h>
2827
#include <wtf/ArrayBufferView.h>
2928

30-
namespace WebCore {
29+
namespace JSC {
3130

32-
class JSArrayBufferView : public JSDOMWrapper {
31+
class JSArrayBufferView : public JSNonFinalObject {
3332
public:
34-
typedef JSDOMWrapper Base;
35-
static JSArrayBufferView* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, PassRefPtr<ArrayBufferView> impl)
33+
typedef JSNonFinalObject Base;
34+
static JSArrayBufferView* create(JSC::Structure* structure, JSGlobalObject* globalObject, PassRefPtr<ArrayBufferView> impl)
3635
{
3736
JSArrayBufferView* ptr = new (NotNull, JSC::allocateCell<JSArrayBufferView>(globalObject->globalData().heap)) JSArrayBufferView(structure, globalObject, impl);
3837
ptr->finishCreation(globalObject->globalData());
@@ -59,7 +58,7 @@ class JSArrayBufferView : public JSDOMWrapper {
5958
private:
6059
ArrayBufferView* m_impl;
6160
protected:
62-
JSArrayBufferView(JSC::Structure*, JSDOMGlobalObject*, PassRefPtr<ArrayBufferView>);
61+
JSArrayBufferView(JSC::Structure*, JSGlobalObject*, PassRefPtr<ArrayBufferView>);
6362
void finishCreation(JSC::JSGlobalData&);
6463
static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags;
6564
};
@@ -69,18 +68,21 @@ class JSArrayBufferViewOwner : public JSC::WeakHandleOwner {
6968
virtual void finalize(JSC::Handle<JSC::Unknown>, void* context);
7069
};
7170

71+
/*
7272
inline JSC::WeakHandleOwner* wrapperOwner(DOMWrapperWorld*, ArrayBufferView*)
7373
{
7474
DEFINE_STATIC_LOCAL(JSArrayBufferViewOwner, jsArrayBufferViewOwner, ());
7575
return &jsArrayBufferViewOwner;
7676
}
7777
78+
7879
inline void* wrapperContext(DOMWrapperWorld* world, ArrayBufferView*)
7980
{
8081
return world;
8182
}
83+
*/
8284

83-
JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, ArrayBufferView*);
85+
JSC::JSValue toJS(JSC::ExecState*, JSGlobalObject*, ArrayBufferView*);
8486
ArrayBufferView* toArrayBufferView(JSC::JSValue);
8587

8688
class JSArrayBufferViewPrototype : public JSC::JSNonFinalObject {

JavaScriptCore/runtime/TypedArrays/JSArrayBufferViewHelper.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
#include <runtime/JSValue.h>
3838
#include <wtf/ArrayBufferView.h>
3939

40-
namespace WebCore {
40+
namespace JSC {
4141

4242
template <class T>
4343
JSC::JSValue setWebGLArrayHelper(JSC::ExecState* exec, T* impl, T* (*conversionFunc)(JSC::JSValue))

0 commit comments

Comments
 (0)