Commit 960c28e7 authored by ap@webkit.org's avatar ap@webkit.org

Reviewed by Darin.

        Prepare JavaScript heap for being per-thread.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@34659 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent e1450a3d
......@@ -28,6 +28,7 @@
#include "JSBase.h"
#include "APICast.h"
#include "completion.h"
#include <kjs/ExecState.h>
#include <kjs/InitializeThreading.h>
#include <kjs/interpreter.h>
......@@ -85,9 +86,21 @@ void JSGarbageCollect(JSContextRef ctx)
if (!ctx)
initializeThreading();
// It might seem that we have a context passed to this function, and can use toJS(ctx)->heap(), but the parameter is likely to be NULL,
// and it may actually be garbage for some clients (most likely, because of JSGarbageCollect being called after releasing the context).
JSLock lock;
if (!Collector::isBusy())
Collector::collect();
// FIXME: It would be good to avoid creating a JSGlobalData instance if it didn't exist for this thread yet.
Heap* heap = JSGlobalData::threadInstance().heap;
if (!heap->isBusy())
heap->collect();
// FIXME: Similarly, we shouldn't create a shared instance here.
heap = JSGlobalData::sharedInstance().heap;
if (!heap->isBusy())
heap->collect();
// FIXME: Perhaps we should trigger a second mark and sweep
// once the garbage collector is done if this is called when
// the collector is busy.
......
......@@ -470,7 +470,7 @@ JSValue* JSCallbackObject<Base>::staticFunctionGetter(ExecState* exec, const Ide
if (OpaqueJSClass::StaticFunctionsTable* staticFunctions = jsClass->staticFunctions) {
if (StaticFunctionEntry* entry = staticFunctions->get(propertyName.ustring().rep())) {
if (JSObjectCallAsFunctionCallback callAsFunction = entry->callAsFunction) {
JSObject* o = new JSCallbackFunction(exec, callAsFunction, propertyName);
JSObject* o = new (exec) JSCallbackFunction(exec, callAsFunction, propertyName);
thisObj->putDirect(propertyName, o, entry->attributes);
return o;
}
......
......@@ -162,7 +162,7 @@ JSObject* OpaqueJSClass::prototype(JSContextRef ctx)
parentPrototype = parentClass->prototype(ctx); // can be null
if (!parentPrototype)
parentPrototype = exec->dynamicGlobalObject()->objectPrototype();
cachedPrototype = new JSCallbackObject<JSObject>(exec, prototypeClass, parentPrototype, this); // set ourself as the object's private data, so it can clear our reference on destruction
cachedPrototype = new (exec) JSCallbackObject<JSObject>(exec, prototypeClass, parentPrototype, this); // set ourself as the object's private data, so it can clear our reference on destruction
}
return cachedPrototype;
}
......@@ -44,11 +44,11 @@ JSGlobalContextRef JSGlobalContextCreate(JSClassRef globalObjectClass)
JSLock lock;
if (!globalObjectClass) {
JSGlobalObject* globalObject = new JSGlobalObject;
JSGlobalObject* globalObject = new (JSGlobalObject::Shared) JSGlobalObject;
return JSGlobalContextRetain(toGlobalRef(globalObject->globalExec()));
}
JSGlobalObject* globalObject = new JSCallbackObject<JSGlobalObject>(globalObjectClass);
JSGlobalObject* globalObject = new (JSGlobalObject::Shared) JSCallbackObject<JSGlobalObject>(globalObjectClass);
JSGlobalContextRef ctx = toGlobalRef(globalObject->globalExec());
JSValue* prototype = globalObjectClass->prototype(ctx);
if (!prototype)
......
......@@ -74,13 +74,13 @@ JSObjectRef JSObjectMake(JSContextRef ctx, JSClassRef jsClass, void* data)
ExecState* exec = toJS(ctx);
if (!jsClass)
return toRef(new JSObject(exec->lexicalGlobalObject()->objectPrototype())); // slightly more efficient
return toRef(new (exec) JSObject(exec->lexicalGlobalObject()->objectPrototype())); // slightly more efficient
JSValue* jsPrototype = jsClass->prototype(ctx);
if (!jsPrototype)
jsPrototype = exec->lexicalGlobalObject()->objectPrototype();
return toRef(new JSCallbackObject<JSObject>(exec, jsClass, jsPrototype, data));
return toRef(new (exec) JSCallbackObject<JSObject>(exec, jsClass, jsPrototype, data));
}
JSObjectRef JSObjectMakeFunctionWithCallback(JSContextRef ctx, JSStringRef name, JSObjectCallAsFunctionCallback callAsFunction)
......@@ -89,7 +89,7 @@ JSObjectRef JSObjectMakeFunctionWithCallback(JSContextRef ctx, JSStringRef name,
ExecState* exec = toJS(ctx);
Identifier nameID = name ? Identifier(exec, toJS(name)) : Identifier(exec, "anonymous");
return toRef(new JSCallbackFunction(exec, callAsFunction, nameID));
return toRef(new (exec) JSCallbackFunction(exec, callAsFunction, nameID));
}
JSObjectRef JSObjectMakeConstructor(JSContextRef ctx, JSClassRef jsClass, JSObjectCallAsConstructorCallback callAsConstructor)
......@@ -101,7 +101,7 @@ JSObjectRef JSObjectMakeConstructor(JSContextRef ctx, JSClassRef jsClass, JSObje
? jsClass->prototype(ctx)
: exec->dynamicGlobalObject()->objectPrototype();
JSCallbackConstructor* constructor = new JSCallbackConstructor(exec, jsClass, callAsConstructor);
JSCallbackConstructor* constructor = new (exec) JSCallbackConstructor(exec, jsClass, callAsConstructor);
constructor->putDirect(exec->propertyNames().prototype, jsPrototype, DontEnum | DontDelete | ReadOnly);
return toRef(constructor);
}
......@@ -118,8 +118,8 @@ JSObjectRef JSObjectMakeFunction(JSContextRef ctx, JSStringRef name, unsigned pa
ArgList args;
for (unsigned i = 0; i < parameterCount; i++)
args.append(jsString(UString(toJS(parameterNames[i]))));
args.append(jsString(UString(bodyRep)));
args.append(jsString(exec, UString(toJS(parameterNames[i]))));
args.append(jsString(exec, UString(bodyRep)));
JSObject* result = exec->dynamicGlobalObject()->functionConstructor()->construct(exec, args, nameID, UString(sourceURLRep), startingLineNumber);
if (exec->hadException()) {
......
......@@ -176,17 +176,17 @@ JSValueRef JSValueMakeBoolean(JSContextRef, bool value)
return toRef(jsBoolean(value));
}
JSValueRef JSValueMakeNumber(JSContextRef, double value)
JSValueRef JSValueMakeNumber(JSContextRef ctx, double value)
{
JSLock lock;
return toRef(jsNumber(value));
return toRef(jsNumber(toJS(ctx), value));
}
JSValueRef JSValueMakeString(JSContextRef, JSStringRef string)
JSValueRef JSValueMakeString(JSContextRef ctx, JSStringRef string)
{
JSLock lock;
UString::Rep* rep = toJS(string);
return toRef(jsString(UString(rep)));
return toRef(jsString(toJS(ctx), UString(rep)));
}
bool JSValueToBoolean(JSContextRef ctx, JSValueRef value)
......
2008-06-17 Alexey Proskuryakov <ap@webkit.org>
Reviewed by Darin.
Prepare JavaScript heap for being per-thread.
* kjs/ExecState.h: Shuffle includes, making it possible to include ExecState.h in JSValue.h.
(KJS::ExecState::heap): Added an accessor.
* API/JSBase.cpp: (JSGarbageCollect): Collect both shared and per-thread heaps.
* API/JSContextRef.cpp: (JSGlobalContextCreate): When allocating JSGlobalObject, indicate
that it belongs to a shared heap.
* JavaScriptCore.xcodeproj/project.pbxproj:
* kjs/AllInOneFile.cpp:
Moved JSGlobalObject.cpp to AllInOneFile, as a build fix for inlineAllocate magic.
* VM/CodeGenerator.h: (KJS::CodeGenerator::globalExec): Added an accessor (working via
m_scopeChain).
* VM/RegisterFile.h:
(KJS::RegisterFile::mark):
* VM/RegisterFileStack.h:
(KJS::RegisterFileStack::mark):
Made these pseudo-mark functions take Heap*.
* kjs/InitializeThreading.cpp:
(KJS::initializeThreading): Initialize heap introspector.
* kjs/JSGlobalData.h: Added Heap to the structure.
* kjs/JSGlobalData.cpp:
(KJS::JSGlobalData::JSGlobalData): Initialize Heap.
(KJS::JSGlobalData::sharedInstance): Added a method to access shared global data instance
for legacy clients.
* kjs/JSGlobalObject.cpp:
(KJS::JSGlobalObject::~JSGlobalObject): Changed to work with per-thread head; fixed list
maintenance logic.
(KJS::JSGlobalObject::init): Changed to work with per-thread head.
(KJS::JSGlobalObject::put): Assert that a cross-heap operation is not being attempted.
(KJS::JSGlobalObject::reset): Pass ExecState* where now required.
(KJS::JSGlobalObject::mark): Pass the current heap to RegisterFileStack::mark.
(KJS::JSGlobalObject::operator new): Overload operator new to use per-thread or shared heap.
* kjs/JSGlobalObject.h: Removed static s_head member.
* kjs/PropertyMap.h: (KJS::PropertyMap::PropertyMap): Removed unused SavedProperty.
* kjs/collector.h: Turned Collector into an actual object with its own data, renamed to Heap.
(KJS::Heap::initializeHeapIntrospector): Added.
(KJS::Heap::heap): Added a method to determine which heap a JSValue is in, if any.
(KJS::Heap::allocate): Made non-static.
(KJS::Heap::inlineAllocateNumber): Ditto.
(KJS::Heap::markListSet): Ditto.
(KJS::Heap::cellBlock): Ditto.
(KJS::Heap::cellOffset): Ditto.
(KJS::Heap::isCellMarked): Ditto.
(KJS::Heap::markCell): Ditto.
(KJS::Heap::reportExtraMemoryCost): Ditto.
(KJS::CollectorBlock): Added a back-reference to Heap for Heap::heap() method.
(KJS::SmallCellCollectorBlock): Ditto.
* kjs/collector.cpp: Changed MIN_ARRAY_SIZE to a #define to avoid a PIC branch. Removed
main thread related machinery.
(KJS::Heap::Heap): Initialize the newly added data members.
(KJS::allocateBlock): Marked NEVER_INLINE, as this is a rare case that uses a PIC branch.
Moved static pagesize to the class to make it safely initialized.
(KJS::Heap::heapAllocate): Initialize heap back reference after a new block is allocated.
(KJS::Heap::registerThread): Removed introspector initialization, as it is now performed
in InitializeThreading.cpp.
(KJS::Heap::markOtherThreadConservatively): Assert that the "other thread" case only occurs
for legacy clients using a shared heap.
(KJS::Heap::markStackObjectsConservatively): Moved fastMallocForbid/Allow down here, since
it doesn't need to be forbidden during other GC phases.
* kjs/JSImmediate.h:
(KJS::jsUndefined):
(KJS::jsNull):
(KJS::jsBoolean):
Moved from JSvalue.h, to make these usable in files that cannot include JSValue.h (such
as list.h).
* API/JSCallbackObjectFunctions.h:
(KJS::::staticFunctionGetter):
* API/JSClassRef.cpp:
(OpaqueJSClass::prototype):
* API/JSObjectRef.cpp:
(JSObjectMake):
(JSObjectMakeFunctionWithCallback):
(JSObjectMakeConstructor):
(JSObjectMakeFunction):
* API/JSValueRef.cpp:
(JSValueMakeNumber):
(JSValueMakeString):
* JavaScriptCore.exp:
* VM/CodeGenerator.cpp:
(KJS::CodeGenerator::emitLoad):
* VM/JSPropertyNameIterator.cpp:
(KJS::JSPropertyNameIterator::create):
(KJS::JSPropertyNameIterator::next):
* VM/Machine.cpp:
(KJS::jsAddSlowCase):
(KJS::jsAdd):
(KJS::jsTypeStringForValue):
(KJS::scopeChainForCall):
(KJS::Machine::throwException):
(KJS::Machine::execute):
(KJS::Machine::privateExecute):
(KJS::Machine::retrieveArguments):
* kjs/ArrayPrototype.cpp:
(KJS::arrayProtoFuncToString):
(KJS::arrayProtoFuncToLocaleString):
(KJS::arrayProtoFuncJoin):
(KJS::arrayProtoFuncConcat):
(KJS::arrayProtoFuncPop):
(KJS::arrayProtoFuncPush):
(KJS::arrayProtoFuncShift):
(KJS::arrayProtoFuncSlice):
(KJS::arrayProtoFuncSplice):
(KJS::arrayProtoFuncUnShift):
(KJS::arrayProtoFuncFilter):
(KJS::arrayProtoFuncMap):
(KJS::arrayProtoFuncEvery):
(KJS::arrayProtoFuncForEach):
(KJS::arrayProtoFuncSome):
(KJS::arrayProtoFuncIndexOf):
(KJS::arrayProtoFuncLastIndexOf):
(KJS::ArrayConstructor::ArrayConstructor):
(KJS::ArrayConstructor::construct):
(KJS::ArrayConstructor::callAsFunction):
* kjs/BooleanObject.cpp:
(KJS::BooleanPrototype::BooleanPrototype):
(KJS::booleanProtoFuncToString):
(KJS::BooleanConstructor::BooleanConstructor):
(KJS::BooleanConstructor::construct):
* kjs/FunctionPrototype.cpp:
(KJS::FunctionPrototype::FunctionPrototype):
(KJS::functionProtoFuncToString):
(KJS::FunctionConstructor::FunctionConstructor):
(KJS::FunctionConstructor::construct):
* kjs/JSActivation.cpp:
(KJS::JSActivation::createArgumentsObject):
* kjs/JSArray.cpp:
(KJS::JSArray::JSArray):
(KJS::JSArray::lengthGetter):
* kjs/JSFunction.cpp:
(KJS::JSFunction::lengthGetter):
(KJS::JSFunction::construct):
(KJS::Arguments::Arguments):
(KJS::encode):
(KJS::decode):
(KJS::globalFuncParseInt):
(KJS::globalFuncParseFloat):
(KJS::globalFuncEscape):
(KJS::globalFuncUnescape):
(KJS::PrototypeFunction::PrototypeFunction):
(KJS::PrototypeReflexiveFunction::PrototypeReflexiveFunction):
* kjs/JSImmediate.cpp:
(KJS::JSImmediate::toObject):
* kjs/JSLock.cpp:
(KJS::JSLock::registerThread):
* kjs/JSObject.cpp:
(KJS::JSObject::put):
(KJS::JSObject::defineGetter):
(KJS::JSObject::defineSetter):
(KJS::Error::create):
* kjs/JSObject.h:
(KJS::JSObject::putDirect):
* kjs/JSString.h:
(KJS::JSString::JSString):
* kjs/JSValue.cpp:
(KJS::JSCell::operator new):
(KJS::jsString):
(KJS::jsOwnedString):
* kjs/JSValue.h:
(KJS::JSNumberCell::operator new):
(KJS::jsNumberCell):
(KJS::jsNaN):
(KJS::jsNumber):
(KJS::JSCell::marked):
(KJS::JSCell::mark):
(KJS::JSValue::toJSNumber):
* kjs/MathObject.cpp:
(KJS::MathObject::getValueProperty):
(KJS::mathProtoFuncAbs):
(KJS::mathProtoFuncACos):
(KJS::mathProtoFuncASin):
(KJS::mathProtoFuncATan):
(KJS::mathProtoFuncATan2):
(KJS::mathProtoFuncCeil):
(KJS::mathProtoFuncCos):
(KJS::mathProtoFuncExp):
(KJS::mathProtoFuncFloor):
(KJS::mathProtoFuncLog):
(KJS::mathProtoFuncMax):
(KJS::mathProtoFuncMin):
(KJS::mathProtoFuncPow):
(KJS::mathProtoFuncRandom):
(KJS::mathProtoFuncRound):
(KJS::mathProtoFuncSin):
(KJS::mathProtoFuncSqrt):
(KJS::mathProtoFuncTan):
* kjs/NumberObject.cpp:
(KJS::NumberPrototype::NumberPrototype):
(KJS::numberProtoFuncToString):
(KJS::numberProtoFuncToLocaleString):
(KJS::numberProtoFuncToFixed):
(KJS::numberProtoFuncToExponential):
(KJS::numberProtoFuncToPrecision):
(KJS::NumberConstructor::NumberConstructor):
(KJS::NumberConstructor::getValueProperty):
(KJS::NumberConstructor::construct):
(KJS::NumberConstructor::callAsFunction):
* kjs/RegExpObject.cpp:
(KJS::RegExpPrototype::RegExpPrototype):
(KJS::regExpProtoFuncToString):
(KJS::RegExpObject::getValueProperty):
(KJS::RegExpConstructor::RegExpConstructor):
(KJS::RegExpMatchesArray::fillArrayInstance):
(KJS::RegExpConstructor::arrayOfMatches):
(KJS::RegExpConstructor::getBackref):
(KJS::RegExpConstructor::getLastParen):
(KJS::RegExpConstructor::getLeftContext):
(KJS::RegExpConstructor::getRightContext):
(KJS::RegExpConstructor::getValueProperty):
(KJS::RegExpConstructor::construct):
* kjs/RegExpObject.h:
* kjs/Shell.cpp:
(GlobalObject::GlobalObject):
(functionGC):
(functionRun):
(functionReadline):
(jscmain):
* kjs/date_object.cpp:
(KJS::formatLocaleDate):
(KJS::DatePrototype::DatePrototype):
(KJS::DateConstructor::DateConstructor):
(KJS::DateConstructor::construct):
(KJS::DateConstructor::callAsFunction):
(KJS::DateFunction::DateFunction):
(KJS::DateFunction::callAsFunction):
(KJS::dateProtoFuncToString):
(KJS::dateProtoFuncToUTCString):
(KJS::dateProtoFuncToDateString):
(KJS::dateProtoFuncToTimeString):
(KJS::dateProtoFuncToLocaleString):
(KJS::dateProtoFuncToLocaleDateString):
(KJS::dateProtoFuncToLocaleTimeString):
(KJS::dateProtoFuncValueOf):
(KJS::dateProtoFuncGetTime):
(KJS::dateProtoFuncGetFullYear):
(KJS::dateProtoFuncGetUTCFullYear):
(KJS::dateProtoFuncToGMTString):
(KJS::dateProtoFuncGetMonth):
(KJS::dateProtoFuncGetUTCMonth):
(KJS::dateProtoFuncGetDate):
(KJS::dateProtoFuncGetUTCDate):
(KJS::dateProtoFuncGetDay):
(KJS::dateProtoFuncGetUTCDay):
(KJS::dateProtoFuncGetHours):
(KJS::dateProtoFuncGetUTCHours):
(KJS::dateProtoFuncGetMinutes):
(KJS::dateProtoFuncGetUTCMinutes):
(KJS::dateProtoFuncGetSeconds):
(KJS::dateProtoFuncGetUTCSeconds):
(KJS::dateProtoFuncGetMilliSeconds):
(KJS::dateProtoFuncGetUTCMilliseconds):
(KJS::dateProtoFuncGetTimezoneOffset):
(KJS::dateProtoFuncSetTime):
(KJS::setNewValueFromTimeArgs):
(KJS::setNewValueFromDateArgs):
(KJS::dateProtoFuncSetYear):
(KJS::dateProtoFuncGetYear):
* kjs/error_object.cpp:
(KJS::ErrorPrototype::ErrorPrototype):
(KJS::errorProtoFuncToString):
(KJS::ErrorConstructor::ErrorConstructor):
(KJS::ErrorConstructor::construct):
(KJS::NativeErrorPrototype::NativeErrorPrototype):
(KJS::NativeErrorConstructor::NativeErrorConstructor):
(KJS::NativeErrorConstructor::construct):
* kjs/identifier.h:
* kjs/internal.cpp:
(KJS::StringObject::create):
(KJS::JSString::lengthGetter):
(KJS::JSString::indexGetter):
(KJS::JSString::indexNumericPropertyGetter):
* kjs/interpreter.cpp:
* kjs/list.cpp:
(KJS::ArgList::slowAppend):
* kjs/list.h:
* kjs/lookup.h:
(KJS::staticFunctionGetter):
(KJS::cacheGlobalObject):
* kjs/nodes.cpp:
(KJS::Node::emitThrowError):
(KJS::StringNode::emitCode):
(KJS::ArrayNode::emitCode):
(KJS::FuncDeclNode::makeFunction):
(KJS::FuncExprNode::makeFunction):
* kjs/nodes.h:
* kjs/object_object.cpp:
(KJS::ObjectPrototype::ObjectPrototype):
(KJS::objectProtoFuncToLocaleString):
(KJS::objectProtoFuncToString):
(KJS::ObjectConstructor::ObjectConstructor):
(KJS::ObjectConstructor::construct):
* kjs/protect.h:
(KJS::gcProtect):
(KJS::gcUnprotect):
* kjs/string_object.cpp:
(KJS::StringObject::StringObject):
(KJS::StringPrototype::StringPrototype):
(KJS::replace):
(KJS::stringProtoFuncCharAt):
(KJS::stringProtoFuncCharCodeAt):
(KJS::stringProtoFuncConcat):
(KJS::stringProtoFuncIndexOf):
(KJS::stringProtoFuncLastIndexOf):
(KJS::stringProtoFuncMatch):
(KJS::stringProtoFuncSearch):
(KJS::stringProtoFuncReplace):
(KJS::stringProtoFuncSlice):
(KJS::stringProtoFuncSplit):
(KJS::stringProtoFuncSubstr):
(KJS::stringProtoFuncSubstring):
(KJS::stringProtoFuncToLowerCase):
(KJS::stringProtoFuncToUpperCase):
(KJS::stringProtoFuncToLocaleLowerCase):
(KJS::stringProtoFuncToLocaleUpperCase):
(KJS::stringProtoFuncLocaleCompare):
(KJS::stringProtoFuncBig):
(KJS::stringProtoFuncSmall):
(KJS::stringProtoFuncBlink):
(KJS::stringProtoFuncBold):
(KJS::stringProtoFuncFixed):
(KJS::stringProtoFuncItalics):
(KJS::stringProtoFuncStrike):
(KJS::stringProtoFuncSub):
(KJS::stringProtoFuncSup):
(KJS::stringProtoFuncFontcolor):
(KJS::stringProtoFuncFontsize):
(KJS::stringProtoFuncAnchor):
(KJS::stringProtoFuncLink):
(KJS::StringConstructor::StringConstructor):
(KJS::StringConstructor::construct):
(KJS::StringConstructor::callAsFunction):
(KJS::StringConstructorFunction::StringConstructorFunction):
(KJS::StringConstructorFunction::callAsFunction):
* kjs/string_object.h:
(KJS::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
* kjs/ustring.h:
Updated for the above changes.
2008-06-17 Timothy Hatcher <timothy@apple.com>
Added a type to DebuggerCallFrame so the under interface can
......
......@@ -97,6 +97,7 @@ __ZN3KJS11PropertyMap11getLocationERKNS_10IdentifierERb
__ZN3KJS11PropertyMap3putERKNS_10IdentifierEPNS_7JSValueEjb
__ZN3KJS11PropertyMapD1Ev
__ZN3KJS12DateInstance4infoE
__ZN3KJS12JSGlobalData14sharedInstanceEv
__ZN3KJS12JSGlobalData14threadInstanceEv
__ZN3KJS12PropertySlot15undefinedGetterEPNS_9ExecStateERKNS_10IdentifierERKS0_
__ZN3KJS12RegisterFile14addGlobalSlotsEm
......@@ -106,10 +107,10 @@ __ZN3KJS12StringObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_
__ZN3KJS12StringObject18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
__ZN3KJS12StringObject3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueE
__ZN3KJS12StringObject4infoE
__ZN3KJS12StringObjectC2EPNS_8JSObjectERKNS_7UStringE
__ZN3KJS12StringObjectC2EPNS_9ExecStateEPNS_8JSObjectERKNS_7UStringE
__ZN3KJS13CodeGenerator21setDumpsGeneratedCodeEb
__ZN3KJS13StatementNode6setLocEii
__ZN3KJS13jsOwnedStringERKNS_7UStringE
__ZN3KJS13jsOwnedStringEPNS_9ExecStateERKNS_7UStringE
__ZN3KJS14JSGlobalObject10globalExecEv
__ZN3KJS14JSGlobalObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSObjectE
__ZN3KJS14JSGlobalObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSObjectE
......@@ -120,6 +121,8 @@ __ZN3KJS14JSGlobalObject3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueE
__ZN3KJS14JSGlobalObject4initEPNS_8JSObjectE
__ZN3KJS14JSGlobalObject4markEv
__ZN3KJS14JSGlobalObjectD2Ev
__ZN3KJS14JSGlobalObjectnwEm
__ZN3KJS14JSGlobalObjectnwEmNS0_9SharedTagE
__ZN3KJS15JSWrapperObject4markEv
__ZN3KJS16InternalFunction11getCallDataERNS_8CallDataE
__ZN3KJS16InternalFunction4infoE
......@@ -134,6 +137,19 @@ __ZN3KJS17PrototypeFunctionC1EPNS_9ExecStateEiRKNS_10IdentifierEPFPNS_7JSValueES
__ZN3KJS17RegisterFileStack20allocateRegisterFileEmPS0_
__ZN3KJS19initializeThreadingEv
__ZN3KJS23objectProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE
__ZN3KJS4Heap14allocateNumberEm
__ZN3KJS4Heap15recordExtraCostEm
__ZN3KJS4Heap17globalObjectCountEv
__ZN3KJS4Heap20protectedObjectCountEv
__ZN3KJS4Heap23collectOnMainThreadOnlyEPNS_7JSValueE
__ZN3KJS4Heap25protectedObjectTypeCountsEv
__ZN3KJS4Heap26protectedGlobalObjectCountEv
__ZN3KJS4Heap4heapEPKNS_7JSValueE
__ZN3KJS4Heap4sizeEv
__ZN3KJS4Heap7collectEv
__ZN3KJS4Heap7protectEPNS_7JSValueE
__ZN3KJS4Heap8allocateEm
__ZN3KJS4Heap9unprotectEPNS_7JSValueE
__ZN3KJS5equalEPKNS_7UString3RepES3_
__ZN3KJS6JSCell11getCallDataERNS_8CallDataE
__ZN3KJS6JSCell16getConstructDataERNS_13ConstructDataE
......@@ -142,7 +158,7 @@ __ZN3KJS6JSCell18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
__ZN3KJS6JSCell3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueE
__ZN3KJS6JSCell3putEPNS_9ExecStateEjPNS_7JSValueE
__ZN3KJS6JSCell9getObjectEv
__ZN3KJS6JSCellnwEm
__ZN3KJS6JSCellnwEmPNS_9ExecStateE
__ZN3KJS6JSLock12DropAllLocksC1Ev
__ZN3KJS6JSLock12DropAllLocksD1Ev
__ZN3KJS6JSLock14registerThreadEv
......@@ -196,19 +212,8 @@ __ZN3KJS8JSObject9constructEPNS_9ExecStateERKNS_7ArgListERKNS_10IdentifierERKNS_
__ZN3KJS8Profiler13stopProfilingEPNS_9ExecStateERKNS_7UStringE
__ZN3KJS8Profiler14startProfilingEPNS_9ExecStateERKNS_7UStringE
__ZN3KJS8Profiler8profilerEv
__ZN3KJS8jsStringEPKc
__ZN3KJS8jsStringERKNS_7UStringE
__ZN3KJS9Collector14allocateNumberEm
__ZN3KJS9Collector15recordExtraCostEm
__ZN3KJS9Collector17globalObjectCountEv
__ZN3KJS9Collector20protectedObjectCountEv
__ZN3KJS9Collector23collectOnMainThreadOnlyEPNS_7JSValueE
__ZN3KJS9Collector25protectedObjectTypeCountsEv
__ZN3KJS9Collector26protectedGlobalObjectCountEv
__ZN3KJS9Collector4sizeEv
__ZN3KJS9Collector7collectEv
__ZN3KJS9Collector7protectEPNS_7JSValueE
__ZN3KJS9Collector9unprotectEPNS_7JSValueE
__ZN3KJS8jsStringEPNS_9ExecStateEPKc
__ZN3KJS8jsStringEPNS_9ExecStateERKNS_7UStringE
__ZN3KJSeqERKNS_7UStringEPKc
__ZN3KJSgtERKNS_7UStringES2_
__ZN3KJSltERKNS_7UStringES2_
......@@ -246,9 +251,9 @@ __ZNK3KJS14JSGlobalObject14toGlobalObjectEPNS_9ExecStateE
__ZNK3KJS16InternalFunction21implementsHasInstanceEv
__ZNK3KJS16JSVariableObject16isVariableObjectEv
__ZNK3KJS16JSVariableObject21getPropertyAttributesEPNS_9ExecStateERKNS_10IdentifierERj
__ZNK3KJS17DebuggerCallFrame4typeEv
__ZNK3KJS17DebuggerCallFrame10thisObjectEv
__ZNK3KJS17DebuggerCallFrame12functionNameEv
__ZNK3KJS17DebuggerCallFrame4typeEv
__ZNK3KJS17DebuggerCallFrame8evaluateERKNS_7UStringERPNS_7JSValueE
__ZNK3KJS4Node8toStringEv
__ZNK3KJS6JSCell12toThisObjectEPNS_9ExecStateE
......
......@@ -102,7 +102,6 @@
14D797800DAC3307001A9F05 /* RegisterFileStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 14D7977E0DAC3307001A9F05 /* RegisterFileStack.h */; settings = {ATTRIBUTES = (Private, ); }; };
14D797810DAC3307001A9F05 /* RegisterFileStack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14D7977F0DAC3307001A9F05 /* RegisterFileStack.cpp */; };
14DA81900D99FD2000B0A4FB /* JSActivation.h in Headers */ = {isa = PBXBuildFile; fileRef = 14DA818E0D99FD2000B0A4FB /* JSActivation.h */; };
14DE0D690D02431400AACCA2 /* JSGlobalObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14DE0D680D02431400AACCA2 /* JSGlobalObject.cpp */; };
14E0FF120DBAAED00007C0AB /* Machine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 149B15E70D81F986009CB8C7 /* Machine.cpp */; settings = {COMPILER_FLAGS = "-fno-tree-pre"; }; };
14F252570D08DD8D004ECFFF /* JSVariableObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 14F252560D08DD8D004ECFFF /* JSVariableObject.h */; settings = {ATTRIBUTES = (Private, ); }; };
14F252610D08DF2F004ECFFF /* JSVariableObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14F252600D08DF2F004ECFFF /* JSVariableObject.cpp */; };
......@@ -1539,7 +1538,6 @@
140B7D1D0DC69AF7009C42B8 /* JSActivation.cpp in Sources */,
1440FCE40A51E46B0005F061 /* JSClassRef.cpp in Sources */,