diff options
author | Jason Barron <jbarron@trolltech.com> | 2009-08-21 07:23:33 (GMT) |
---|---|---|
committer | Jason Barron <jbarron@trolltech.com> | 2009-08-21 07:23:33 (GMT) |
commit | 45357546c29240b95300f392084a2fe901073d85 (patch) | |
tree | aca89043c1bd80a3a7515402ee0fbb55b9cbf6ee /src/3rdparty | |
parent | 2e645960930442e895f887f1ef5e226d14eabcc7 (diff) | |
parent | f11fc8f62558543dac1eca9d52a4801196c55221 (diff) | |
download | Qt-45357546c29240b95300f392084a2fe901073d85.zip Qt-45357546c29240b95300f392084a2fe901073d85.tar.gz Qt-45357546c29240b95300f392084a2fe901073d85.tar.bz2 |
Merge commit 'qt/master'
Conflicts:
configure.exe
examples/examples.pro
qmake/Makefile.unix
qmake/Makefile.win32
qmake/Makefile.win32-g++
qmake/Makefile.win32-g++-sh
qmake/qmake.pro
src/script/api/qscriptable.h
src/script/api/qscriptclasspropertyiterator.h
src/script/api/qscriptcontext.h
src/script/api/qscriptengineagent.cpp
src/script/api/qscriptstring.cpp
src/script/api/qscriptstring.h
src/script/api/qscriptvalueiterator.cpp
src/script/api/qscriptvalueiterator.h
src/script/qscriptclass.cpp
src/script/qscriptcontext.cpp
src/script/qscriptengine.cpp
src/script/qscriptengine_p.cpp
src/script/qscriptvalue.cpp
src/script/qscriptvalue_p.h
src/script/qscriptvalueimplfwd_p.h
src/script/script.pro
src/src.pro
tests/auto/auto.pro
tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp
tools/configure/configureapp.cpp
Diffstat (limited to 'src/3rdparty')
159 files changed, 1092 insertions, 381 deletions
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObject.h b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObject.h index 9d22ad9..4360baa 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObject.h +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObject.h @@ -61,12 +61,12 @@ private: virtual void put(ExecState*, const Identifier&, JSValue, PutPropertySlot&); - virtual bool deleteProperty(ExecState*, const Identifier&); - virtual bool deleteProperty(ExecState*, unsigned); + virtual bool deleteProperty(ExecState*, const Identifier&, bool checkDontDelete = true); + virtual bool deleteProperty(ExecState*, unsigned, bool checkDontDelete = true); virtual bool hasInstance(ExecState* exec, JSValue value, JSValue proto); - virtual void getPropertyNames(ExecState*, PropertyNameArray&); + virtual void getPropertyNames(ExecState*, PropertyNameArray&, unsigned listedAttributes = Structure::Prototype); virtual double toNumber(ExecState*) const; virtual UString toString(ExecState*) const; diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObjectFunctions.h b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObjectFunctions.h index 987c59f..669b3cd 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObjectFunctions.h +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObjectFunctions.h @@ -224,7 +224,7 @@ void JSCallbackObject<Base>::put(ExecState* exec, const Identifier& propertyName } template <class Base> -bool JSCallbackObject<Base>::deleteProperty(ExecState* exec, const Identifier& propertyName) +bool JSCallbackObject<Base>::deleteProperty(ExecState* exec, const Identifier& propertyName, bool checkDontDelete) { JSContextRef ctx = toRef(exec); JSObjectRef thisRef = toRef(this); @@ -262,13 +262,13 @@ bool JSCallbackObject<Base>::deleteProperty(ExecState* exec, const Identifier& p } } - return Base::deleteProperty(exec, propertyName); + return Base::deleteProperty(exec, propertyName, checkDontDelete); } template <class Base> -bool JSCallbackObject<Base>::deleteProperty(ExecState* exec, unsigned propertyName) +bool JSCallbackObject<Base>::deleteProperty(ExecState* exec, unsigned propertyName, bool checkDontDelete) { - return deleteProperty(exec, Identifier::from(exec, propertyName)); + return deleteProperty(exec, Identifier::from(exec, propertyName), checkDontDelete); } template <class Base> @@ -372,7 +372,7 @@ JSValue JSCallbackObject<Base>::call(ExecState* exec, JSObject* functionObject, } template <class Base> -void JSCallbackObject<Base>::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSCallbackObject<Base>::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { JSContextRef execRef = toRef(exec); JSObjectRef thisRef = toRef(this); @@ -380,7 +380,7 @@ void JSCallbackObject<Base>::getPropertyNames(ExecState* exec, PropertyNameArray for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) { if (JSObjectGetPropertyNamesCallback getPropertyNames = jsClass->getPropertyNames) { JSLock::DropAllLocks dropAllLocks(exec); - getPropertyNames(execRef, thisRef, toRef(&propertyNames)); + getPropertyNames(execRef, thisRef, toRef(&propertyNames), listedAttributes); } if (OpaqueJSClassStaticValuesTable* staticValues = jsClass->staticValues(exec)) { @@ -406,7 +406,7 @@ void JSCallbackObject<Base>::getPropertyNames(ExecState* exec, PropertyNameArray } } - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } template <class Base> diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.h b/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.h index 3e8b0eb..86921bd 100644 --- a/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.h +++ b/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.h @@ -187,6 +187,7 @@ typedef bool @param ctx The execution context to use. @param object The JSObject whose property names are being collected. @param accumulator A JavaScript property name accumulator in which to accumulate the names of object's properties. +@param flag Specify which property should be included @discussion If you named your function GetPropertyNames, you would declare it like this: void GetPropertyNames(JSContextRef ctx, JSObjectRef object, JSPropertyNameAccumulatorRef propertyNames); @@ -196,7 +197,7 @@ Property name accumulators are used by JSObjectCopyPropertyNames and JavaScript Use JSPropertyNameAccumulatorAddName to add property names to accumulator. A class's getPropertyNames callback only needs to provide the names of properties that the class vends through a custom getProperty or setProperty callback. Other properties, including statically declared properties, properties vended by other classes, and properties belonging to object's prototype, are added independently. */ typedef void -(*JSObjectGetPropertyNamesCallback) (JSContextRef ctx, JSObjectRef object, JSPropertyNameAccumulatorRef propertyNames); +(*JSObjectGetPropertyNamesCallback) (JSContextRef ctx, JSObjectRef object, JSPropertyNameAccumulatorRef propertyNames, unsigned flag); /*! @typedef JSObjectCallAsFunctionCallback diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri index d65095d..85645be 100644 --- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri +++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri @@ -216,7 +216,8 @@ SOURCES += \ wtf/DateMath.cpp \ wtf/FastMalloc.cpp \ wtf/Threading.cpp \ - wtf/qt/MainThreadQt.cpp + wtf/qt/MainThreadQt.cpp \ + parser/SourcePoolQt.cpp !contains(DEFINES, ENABLE_SINGLE_THREADED=1) { SOURCES += wtf/qt/ThreadingQt.cpp diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp index 0cb3813..4b943c2 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp @@ -1087,7 +1087,8 @@ void CodeBlock::dump(ExecState* exec, const Vector<Instruction>::const_iterator& int debugHookID = (++it)->u.operand; int firstLine = (++it)->u.operand; int lastLine = (++it)->u.operand; - printf("[%4d] debug\t\t %s, %d, %d\n", location, debugHookName(debugHookID), firstLine, lastLine); + int column = (++it)->u.operand; + printf("[%4d] debug\t\t %s, %d, %d, %d\n", location, debugHookName(debugHookID), firstLine, lastLine, column); break; } case op_profile_will_call: { diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h index 2d1ca98..4baa0be 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h @@ -167,7 +167,7 @@ namespace JSC { macro(op_jsr, 3) \ macro(op_sret, 2) \ \ - macro(op_debug, 4) \ + macro(op_debug, 5) \ macro(op_profile_will_call, 2) \ macro(op_profile_did_call, 2) \ \ diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp b/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp index 15261ee..ce5518f 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp @@ -1602,7 +1602,7 @@ void BytecodeGenerator::emitPopScope() m_dynamicScopeDepth--; } -void BytecodeGenerator::emitDebugHook(DebugHookID debugHookID, int firstLine, int lastLine) +void BytecodeGenerator::emitDebugHook(DebugHookID debugHookID, int firstLine, int lastLine, int column) { if (!m_shouldEmitDebugHooks) return; @@ -1610,6 +1610,7 @@ void BytecodeGenerator::emitDebugHook(DebugHookID debugHookID, int firstLine, in instructions().append(debugHookID); instructions().append(firstLine); instructions().append(lastLine); + instructions().append(column); } void BytecodeGenerator::pushFinallyContext(Label* target, RegisterID* retAddrDst) diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.h b/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.h index 54d0289..f7f7e1c 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.h +++ b/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.h @@ -324,7 +324,7 @@ namespace JSC { RegisterID* emitPushScope(RegisterID* scope); void emitPopScope(); - void emitDebugHook(DebugHookID, int firstLine, int lastLine); + void emitDebugHook(DebugHookID, int firstLine, int lastLine, int column ); int scopeDepth() { return m_dynamicScopeDepth + m_finallyDepth; } bool hasFinaliser() { return m_finallyDepth != 0; } diff --git a/src/3rdparty/webkit/JavaScriptCore/debugger/Debugger.h b/src/3rdparty/webkit/JavaScriptCore/debugger/Debugger.h index 98d0935..1ed39ec 100644 --- a/src/3rdparty/webkit/JavaScriptCore/debugger/Debugger.h +++ b/src/3rdparty/webkit/JavaScriptCore/debugger/Debugger.h @@ -22,11 +22,11 @@ #ifndef Debugger_h #define Debugger_h +#include <debugger/DebuggerCallFrame.h> #include "Protect.h" namespace JSC { - class DebuggerCallFrame; class ExecState; class JSGlobalObject; class SourceCode; @@ -40,15 +40,62 @@ namespace JSC { void attach(JSGlobalObject*); virtual void detach(JSGlobalObject*); +#if PLATFORM(QT) +#ifdef QT_BUILD_SCRIPT_LIB + virtual void scriptUnload(qint64 id) + { + UNUSED_PARAM(id); + }; + virtual void scriptLoad(qint64 id, const UString &program, + const UString &fileName, int baseLineNumber) + { + UNUSED_PARAM(id); + UNUSED_PARAM(program); + UNUSED_PARAM(fileName); + UNUSED_PARAM(baseLineNumber); + }; + virtual void contextPush() {}; + virtual void contextPop() {}; + + virtual void evaluateStart(intptr_t sourceID) + { + UNUSED_PARAM(sourceID); + } + virtual void evaluateStop(const JSC::JSValue& returnValue, intptr_t sourceID) + { + UNUSED_PARAM(sourceID); + UNUSED_PARAM(returnValue); + } + + virtual void exceptionThrow(const JSC::DebuggerCallFrame& frame, intptr_t sourceID, bool hasHandler) + { + UNUSED_PARAM(frame); + UNUSED_PARAM(sourceID); + UNUSED_PARAM(hasHandler); + }; + virtual void exceptionCatch(const JSC::DebuggerCallFrame& frame, intptr_t sourceID) + { + UNUSED_PARAM(frame); + UNUSED_PARAM(sourceID); + }; + + virtual void functionExit(const JSC::JSValue& returnValue, intptr_t sourceID) + { + UNUSED_PARAM(returnValue); + UNUSED_PARAM(sourceID); + }; +#endif +#endif + virtual void sourceParsed(ExecState*, const SourceCode&, int errorLine, const UString& errorMsg) = 0; virtual void exception(const DebuggerCallFrame&, intptr_t sourceID, int lineno) = 0; - virtual void atStatement(const DebuggerCallFrame&, intptr_t sourceID, int lineno) = 0; + virtual void atStatement(const DebuggerCallFrame&, intptr_t sourceID, int lineno, int column) = 0; virtual void callEvent(const DebuggerCallFrame&, intptr_t sourceID, int lineno) = 0; virtual void returnEvent(const DebuggerCallFrame&, intptr_t sourceID, int lineno) = 0; virtual void willExecuteProgram(const DebuggerCallFrame&, intptr_t sourceID, int lineno) = 0; virtual void didExecuteProgram(const DebuggerCallFrame&, intptr_t sourceID, int lineno) = 0; - virtual void didReachBreakpoint(const DebuggerCallFrame&, intptr_t sourceID, int lineno) = 0; + virtual void didReachBreakpoint(const DebuggerCallFrame&, intptr_t sourceID, int lineno, int column) = 0; private: HashSet<JSGlobalObject*> m_globalObjects; diff --git a/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.cpp b/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.cpp index 4b2568f..c1815c8 100644 --- a/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.cpp @@ -65,14 +65,14 @@ void DebuggerActivation::putWithAttributes(ExecState* exec, const Identifier& pr m_activation->putWithAttributes(exec, propertyName, value, attributes); } -bool DebuggerActivation::deleteProperty(ExecState* exec, const Identifier& propertyName) +bool DebuggerActivation::deleteProperty(ExecState* exec, const Identifier& propertyName, bool checkDontDelete) { - return m_activation->deleteProperty(exec, propertyName); + return m_activation->deleteProperty(exec, propertyName, checkDontDelete); } -void DebuggerActivation::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void DebuggerActivation::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { - m_activation->getPropertyNames(exec, propertyNames); + m_activation->getPropertyNames(exec, propertyNames, listedAttributes); } bool DebuggerActivation::getPropertyAttributes(JSC::ExecState* exec, const Identifier& propertyName, unsigned& attributes) const diff --git a/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.h b/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.h index 9e1f9f5..7c9f7d1 100644 --- a/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.h +++ b/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.h @@ -41,8 +41,8 @@ namespace JSC { virtual bool getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&); virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&); virtual void putWithAttributes(ExecState*, const Identifier& propertyName, JSValue, unsigned attributes); - virtual bool deleteProperty(ExecState*, const Identifier& propertyName); - virtual void getPropertyNames(ExecState*, PropertyNameArray&); + virtual bool deleteProperty(ExecState*, const Identifier& propertyName, bool checkDontDelete = true); + virtual void getPropertyNames(ExecState*, PropertyNameArray&, unsigned listedAttributes = Structure::Prototype); virtual bool getPropertyAttributes(ExecState*, const Identifier& propertyName, unsigned& attributes) const; virtual void defineGetter(ExecState*, const Identifier& propertyName, JSObject* getterFunction); virtual void defineSetter(ExecState*, const Identifier& propertyName, JSObject* setterFunction); diff --git a/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerCallFrame.h b/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerCallFrame.h index 9d377ef..5984fab 100644 --- a/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerCallFrame.h +++ b/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerCallFrame.h @@ -56,6 +56,9 @@ namespace JSC { JSObject* thisObject() const; JSValue evaluate(const UString&, JSValue& exception) const; JSValue exception() const { return m_exception; } +#if QT_BUILD_SCRIPT_LIB + CallFrame* callFrame() const { return m_callFrame; } +#endif private: CallFrame* m_callFrame; diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.cpp b/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.cpp index 94b9654..06c6e38 100644 --- a/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.cpp @@ -139,7 +139,7 @@ static inline bool allowAutomaticSemicolon(JSC::Lexer&, int); #define AUTO_SEMICOLON do { if (!allowAutomaticSemicolon(*LEXER, yychar)) YYABORT; } while (0) #define SET_EXCEPTION_LOCATION(node, start, divot, end) node->setExceptionSourceCode((divot), (divot) - (start), (end) - (divot)) -#define DBG(l, s, e) (l)->setLoc((s).first_line, (e).last_line) +#define DBG(l, s, e) (l)->setLoc((s).first_line, (e).last_line, (s).first_column + 1) using namespace JSC; using namespace std; diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrame.h b/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrame.h index 2d677ce..75de082 100644 --- a/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrame.h +++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrame.h @@ -37,7 +37,7 @@ namespace JSC { // Passed as the first argument to most functions. class ExecState : private Register { public: - JSFunction* callee() const { return this[RegisterFile::Callee].function(); } + JSObject* callee() const { return this[RegisterFile::Callee].object(); } CodeBlock* codeBlock() const { return this[RegisterFile::CodeBlock].Register::codeBlock(); } ScopeChainNode* scopeChain() const { return this[RegisterFile::ScopeChain].Register::scopeChain(); } int argumentCount() const { return this[RegisterFile::ArgumentCount].i(); } @@ -110,7 +110,7 @@ namespace JSC { void setScopeChain(ScopeChainNode* scopeChain) { this[RegisterFile::ScopeChain] = scopeChain; } ALWAYS_INLINE void init(CodeBlock* codeBlock, Instruction* vPC, ScopeChainNode* scopeChain, - CallFrame* callerFrame, int returnValueRegister, int argc, JSFunction* function) + CallFrame* callerFrame, int returnValueRegister, int argc, JSObject* callee) { ASSERT(callerFrame); // Use noCaller() rather than 0 for the outer host call frame caller. @@ -120,7 +120,7 @@ namespace JSC { this[RegisterFile::ReturnPC] = vPC; // This is either an Instruction* or a pointer into JIT generated code stored as an Instruction*. this[RegisterFile::ReturnValueRegister] = returnValueRegister; setArgumentCount(argc); // original argument count (for the sake of the "arguments" object) - setCallee(function); + setCallee(callee); setCalleeArguments(0); } @@ -136,7 +136,7 @@ namespace JSC { private: void setArgumentCount(int count) { this[RegisterFile::ArgumentCount] = count; } - void setCallee(JSFunction* callee) { this[RegisterFile::Callee] = callee; } + void setCallee(JSObject* callee) { this[RegisterFile::Callee] = callee; } void setCodeBlock(CodeBlock* codeBlock) { this[RegisterFile::CodeBlock] = codeBlock; } static const intptr_t HostCallFrameFlag = 1; diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp b/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp index e4eebb2..c78466e 100644 --- a/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp @@ -65,6 +65,14 @@ #include "JIT.h" #endif +#if ENABLE(ASSEMBLER) +#include "AssemblerBuffer.h" +#endif + +#ifdef QT_BUILD_SCRIPT_LIB +#include "bridge/qscriptobject_p.h" +#endif + using namespace std; namespace JSC { @@ -510,9 +518,9 @@ NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSV exception = createNotAnObjectError(callFrame, static_cast<JSNotAnObjectErrorStub*>(exception), bytecodeOffset, codeBlock); exceptionValue = exception; } else { - if (!exception->hasProperty(callFrame, Identifier(callFrame, "line")) && + if (!exception->hasProperty(callFrame, Identifier(callFrame, JSC_ERROR_LINENUMBER_PROPERTYNAME)) && !exception->hasProperty(callFrame, Identifier(callFrame, "sourceId")) && - !exception->hasProperty(callFrame, Identifier(callFrame, "sourceURL")) && + !exception->hasProperty(callFrame, Identifier(callFrame, JSC_ERROR_FILENAME_PROPERTYNAME)) && !exception->hasProperty(callFrame, Identifier(callFrame, expressionBeginOffsetPropertyName)) && !exception->hasProperty(callFrame, Identifier(callFrame, expressionCaretOffsetPropertyName)) && !exception->hasProperty(callFrame, Identifier(callFrame, expressionEndOffsetPropertyName))) { @@ -521,16 +529,16 @@ NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSV int endOffset = 0; int divotPoint = 0; int line = codeBlock->expressionRangeForBytecodeOffset(callFrame, bytecodeOffset, divotPoint, startOffset, endOffset); - exception->putWithAttributes(callFrame, Identifier(callFrame, "line"), jsNumber(callFrame, line), ReadOnly | DontDelete); + exception->putWithAttributes(callFrame, Identifier(callFrame, JSC_ERROR_LINENUMBER_PROPERTYNAME), jsNumber(callFrame, line), ReadOnly | DontDelete); // We only hit this path for error messages and throw statements, which don't have a specific failure position // So we just give the full range of the error/throw statement. exception->putWithAttributes(callFrame, Identifier(callFrame, expressionBeginOffsetPropertyName), jsNumber(callFrame, divotPoint - startOffset), ReadOnly | DontDelete); exception->putWithAttributes(callFrame, Identifier(callFrame, expressionEndOffsetPropertyName), jsNumber(callFrame, divotPoint + endOffset), ReadOnly | DontDelete); } else - exception->putWithAttributes(callFrame, Identifier(callFrame, "line"), jsNumber(callFrame, codeBlock->lineNumberForBytecodeOffset(callFrame, bytecodeOffset)), ReadOnly | DontDelete); + exception->putWithAttributes(callFrame, Identifier(callFrame, JSC_ERROR_LINENUMBER_PROPERTYNAME), jsNumber(callFrame, codeBlock->lineNumberForBytecodeOffset(callFrame, bytecodeOffset)), ReadOnly | DontDelete); exception->putWithAttributes(callFrame, Identifier(callFrame, "sourceId"), jsNumber(callFrame, codeBlock->ownerNode()->sourceID()), ReadOnly | DontDelete); - exception->putWithAttributes(callFrame, Identifier(callFrame, "sourceURL"), jsOwnedString(callFrame, codeBlock->ownerNode()->sourceURL()), ReadOnly | DontDelete); + exception->putWithAttributes(callFrame, Identifier(callFrame, JSC_ERROR_FILENAME_PROPERTYNAME), jsOwnedString(callFrame, codeBlock->ownerNode()->sourceURL()), ReadOnly | DontDelete); } if (exception->isWatchdogException()) { @@ -542,7 +550,8 @@ NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSV } } - if (Debugger* debugger = callFrame->dynamicGlobalObject()->debugger()) { + Debugger* debugger = callFrame->dynamicGlobalObject()->debugger(); + if (debugger) { DebuggerCallFrame debuggerCallFrame(callFrame, exceptionValue); debugger->exception(debuggerCallFrame, codeBlock->ownerNode()->sourceID(), codeBlock->lineNumberForBytecodeOffset(callFrame, bytecodeOffset)); } @@ -567,10 +576,18 @@ NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSV HandlerInfo* handler = 0; while (!(handler = codeBlock->handlerForBytecodeOffset(bytecodeOffset))) { - if (!unwindCallFrame(callFrame, exceptionValue, bytecodeOffset, codeBlock)) + if (!unwindCallFrame(callFrame, exceptionValue, bytecodeOffset, codeBlock)) { +#ifdef QT_BUILD_SCRIPT_LIB + if (debugger) + debugger->exceptionThrow(DebuggerCallFrame(callFrame, exceptionValue), codeBlock->ownerNode()->sourceID(),false); +#endif return 0; + } } - +#ifdef QT_BUILD_SCRIPT_LIB + if (debugger) + debugger->exceptionThrow(DebuggerCallFrame(callFrame, exceptionValue), codeBlock->ownerNode()->sourceID(),true); +#endif // Now unwind the scope chain within the exception handler's call frame. ScopeChainNode* scopeChain = callFrame->scopeChain(); @@ -870,7 +887,7 @@ JSValue Interpreter::execute(EvalNode* evalNode, CallFrame* callFrame, JSObject* return result; } -NEVER_INLINE void Interpreter::debug(CallFrame* callFrame, DebugHookID debugHookID, int firstLine, int lastLine) +NEVER_INLINE void Interpreter::debug(CallFrame* callFrame, DebugHookID debugHookID, int firstLine, int lastLine, int column) { Debugger* debugger = callFrame->dynamicGlobalObject()->debugger(); if (!debugger) @@ -884,7 +901,7 @@ NEVER_INLINE void Interpreter::debug(CallFrame* callFrame, DebugHookID debugHook debugger->returnEvent(callFrame, callFrame->codeBlock()->ownerNode()->sourceID(), lastLine); return; case WillExecuteStatement: - debugger->atStatement(callFrame, callFrame->codeBlock()->ownerNode()->sourceID(), firstLine); + debugger->atStatement(callFrame, callFrame->codeBlock()->ownerNode()->sourceID(), firstLine, column); return; case WillExecuteProgram: debugger->willExecuteProgram(callFrame, callFrame->codeBlock()->ownerNode()->sourceID(), firstLine); @@ -893,7 +910,7 @@ NEVER_INLINE void Interpreter::debug(CallFrame* callFrame, DebugHookID debugHook debugger->didExecuteProgram(callFrame, callFrame->codeBlock()->ownerNode()->sourceID(), lastLine); return; case DidReachBreakpoint: - debugger->didReachBreakpoint(callFrame, callFrame->codeBlock()->ownerNode()->sourceID(), lastLine); + debugger->didReachBreakpoint(callFrame, callFrame->codeBlock()->ownerNode()->sourceID(), lastLine, column); return; } } @@ -1127,7 +1144,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi Instruction* vPC = callFrame->codeBlock()->instructions().begin(); Profiler** enabledProfilerReference = Profiler::enabledProfilerReference(); - unsigned tickCount = globalData->timeoutChecker.ticksUntilNextCheck(); + unsigned tickCount = globalData->timeoutChecker->ticksUntilNextCheck(); #define CHECK_FOR_EXCEPTION() \ do { \ @@ -1143,11 +1160,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi #define CHECK_FOR_TIMEOUT() \ if (!--tickCount) { \ - if (globalData->timeoutChecker.didTimeOut(callFrame)) { \ + if (globalData->timeoutChecker->didTimeOut(callFrame)) { \ exceptionValue = jsNull(); \ goto vm_throw; \ } \ - tickCount = globalData->timeoutChecker.ticksUntilNextCheck(); \ + tickCount = globalData->timeoutChecker->ticksUntilNextCheck(); \ } #if ENABLE(OPCODE_SAMPLING) @@ -3062,7 +3079,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi if (callType == CallTypeHost) { ScopeChainNode* scopeChain = callFrame->scopeChain(); CallFrame* newCallFrame = CallFrame::create(callFrame->registers() + registerOffset); - newCallFrame->init(0, vPC + 5, scopeChain, callFrame, dst, argCount, 0); + newCallFrame->init(0, vPC + 5, scopeChain, callFrame, dst, argCount, asObject(v)); Register* thisRegister = newCallFrame->registers() - RegisterFile::CallFrameHeaderSize - argCount; ArgList args(thisRegister + 1, argCount - 1); @@ -3104,7 +3121,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi exceptionValue = createStackOverflowError(callFrame); goto vm_throw; } - int32_t expectedParams = callFrame->callee()->body()->parameterCount(); + int32_t expectedParams = static_cast<JSFunction*>(callFrame->callee())->body()->parameterCount(); int32_t inplaceArgs = min(argCount, expectedParams); int32_t i = 0; Register* argStore = callFrame->registers() + argsOffset; @@ -3216,7 +3233,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi if (callType == CallTypeHost) { ScopeChainNode* scopeChain = callFrame->scopeChain(); CallFrame* newCallFrame = CallFrame::create(callFrame->registers() + registerOffset); - newCallFrame->init(0, vPC + 5, scopeChain, callFrame, dst, argCount, 0); + newCallFrame->init(0, vPC + 5, scopeChain, callFrame, dst, argCount, asObject(v)); Register* thisRegister = newCallFrame->registers() - RegisterFile::CallFrameHeaderSize - argCount; ArgList args(thisRegister + 1, argCount - 1); @@ -3295,17 +3312,27 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi register base to those of the calling function. */ +#ifdef QT_BUILD_SCRIPT_LIB + Debugger* debugger = callFrame->dynamicGlobalObject()->debugger(); + intptr_t sourceId = callFrame->codeBlock()->source()->asID(); +#endif + int result = (++vPC)->u.operand; if (callFrame->codeBlock()->needsFullScopeChain()) callFrame->scopeChain()->deref(); JSValue returnValue = callFrame->r(result).jsValue(); +#ifdef QT_BUILD_SCRIPT_LIB + if (debugger) { + debugger->functionExit(returnValue, sourceId); + } +#endif vPC = callFrame->returnPC(); int dst = callFrame->returnValueRegister(); callFrame = callFrame->callerFrame(); - + if (callFrame->hasHostCallFrameFlag()) return returnValue; @@ -3448,8 +3475,12 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi structure = asObject(prototype)->inheritorID(); else structure = callDataScopeChain->globalObject()->emptyObjectStructure(); +#ifdef QT_BUILD_SCRIPT_LIB + // ### world-class hack + QScriptObject* newObject = new (globalData) QScriptObject(structure); +#else JSObject* newObject = new (globalData) JSObject(structure); - +#endif callFrame->r(thisRegister) = JSValue(newObject); // "this" value CallFrame* previousCallFrame = callFrame; @@ -3475,8 +3506,9 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi ArgList args(callFrame->registers() + thisRegister + 1, argCount - 1); ScopeChainNode* scopeChain = callFrame->scopeChain(); + CallFrame* newCallFrame = CallFrame::create(callFrame->registers() + registerOffset); - newCallFrame->init(0, vPC + 7, scopeChain, callFrame, dst, argCount, 0); + newCallFrame->init(0, vPC + 7, scopeChain, callFrame, dst, argCount, asObject(v)); JSValue returnValue; { @@ -3647,6 +3679,16 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi */ ASSERT(exceptionValue); ASSERT(!globalData->exception); + +#ifdef QT_BUILD_SCRIPT_LIB + CodeBlock* codeBlock = callFrame->codeBlock(); + Debugger* debugger = callFrame->dynamicGlobalObject()->debugger(); + if (debugger) { + DebuggerCallFrame debuggerCallFrame(callFrame, exceptionValue); + debugger->exceptionCatch(debuggerCallFrame, codeBlock->ownerNode()->sourceID()); + } +#endif + int ex = (++vPC)->u.operand; callFrame->r(ex) = exceptionValue; exceptionValue = JSValue(); @@ -3787,7 +3829,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi NEXT_INSTRUCTION(); } DEFINE_OPCODE(op_debug) { - /* debug debugHookID(n) firstLine(n) lastLine(n) + /* debug debugHookID(n) firstLine(n) lastLine(n) columnNumber(n) Notifies the debugger of the current state of execution. This opcode is only generated while the debugger is attached. @@ -3795,8 +3837,9 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi int debugHookID = (++vPC)->u.operand; int firstLine = (++vPC)->u.operand; int lastLine = (++vPC)->u.operand; + int column = (++vPC)->u.operand; - debug(callFrame, static_cast<DebugHookID>(debugHookID), firstLine, lastLine); + debug(callFrame, static_cast<DebugHookID>(debugHookID), firstLine, lastLine, column); ++vPC; NEXT_INSTRUCTION(); diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.h b/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.h index 5331d92..69f83cf 100644 --- a/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.h +++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.h @@ -110,7 +110,7 @@ namespace JSC { NEVER_INLINE JSValue callEval(CallFrame*, RegisterFile*, Register* argv, int argc, int registerOffset, JSValue& exceptionValue); NEVER_INLINE HandlerInfo* throwException(CallFrame*&, JSValue&, unsigned bytecodeOffset, bool); - NEVER_INLINE void debug(CallFrame*, DebugHookID, int firstLine, int lastLine); + NEVER_INLINE void debug(CallFrame*, DebugHookID, int firstLine, int lastLine, int column); private: enum ExecutionFlag { Normal, InitializeAndReturn }; diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/Register.h b/src/3rdparty/webkit/JavaScriptCore/interpreter/Register.h index 31f0c8b..6d01eb7 100644 --- a/src/3rdparty/webkit/JavaScriptCore/interpreter/Register.h +++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/Register.h @@ -40,7 +40,6 @@ namespace JSC { class CodeBlock; class ExecState; class JSActivation; - class JSFunction; class JSPropertyNameIterator; class ScopeChainNode; @@ -73,7 +72,7 @@ namespace JSC { Register(JSActivation*); Register(CallFrame*); Register(CodeBlock*); - Register(JSFunction*); + Register(JSObject*); Register(JSPropertyNameIterator*); Register(ScopeChainNode*); Register(Instruction*); @@ -82,7 +81,7 @@ namespace JSC { Arguments* arguments() const; CallFrame* callFrame() const; CodeBlock* codeBlock() const; - JSFunction* function() const; + JSObject* object() const; JSPropertyNameIterator* propertyNameIterator() const; ScopeChainNode* scopeChain() const; Instruction* vPC() const; @@ -96,7 +95,7 @@ namespace JSC { Arguments* arguments; CallFrame* callFrame; CodeBlock* codeBlock; - JSFunction* function; + JSObject* object; JSPropertyNameIterator* propertyNameIterator; ScopeChainNode* scopeChain; Instruction* vPC; @@ -152,9 +151,9 @@ namespace JSC { u.codeBlock = codeBlock; } - ALWAYS_INLINE Register::Register(JSFunction* function) + ALWAYS_INLINE Register::Register(JSObject* object) { - u.function = function; + u.object = object; } ALWAYS_INLINE Register::Register(Instruction* vPC) @@ -211,9 +210,9 @@ namespace JSC { return u.codeBlock; } - ALWAYS_INLINE JSFunction* Register::function() const + ALWAYS_INLINE JSObject* Register::object() const { - return u.function; + return u.object; } ALWAYS_INLINE JSPropertyNameIterator* Register::propertyNameIterator() const diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.cpp b/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.cpp index cfcf1d3..06ddefc 100644 --- a/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.cpp @@ -38,7 +38,7 @@ RegisterFile::~RegisterFile() #elif HAVE(VIRTUALALLOC) VirtualFree(m_buffer, 0, MEM_RELEASE); #else - #error "Don't know how to release virtual memory on this platform." + fastFree(m_buffer); #endif } diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.h b/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.h index d46bdc9..5a34d11 100644 --- a/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.h +++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.h @@ -204,8 +204,8 @@ namespace JSC { CRASH(); } m_commitEnd = reinterpret_cast<Register*>(reinterpret_cast<char*>(m_buffer) + committedSize); - #else - #error "Don't know how to reserve virtual memory on this platform." + #else // Neither MMAP nor VIRTUALALLOC - use fastMalloc instead + m_buffer = static_cast<Register*>(fastMalloc(bufferLength)); #endif m_start = m_buffer + maxGlobals; m_end = m_start; diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.cpp b/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.cpp index 5049477..40d2182 100644 --- a/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.cpp @@ -684,14 +684,14 @@ DEFINE_STUB_FUNCTION(int, timeout_check) STUB_INIT_STACK_FRAME(stackFrame); JSGlobalData* globalData = stackFrame.globalData; - TimeoutChecker& timeoutChecker = globalData->timeoutChecker; + TimeoutChecker* timeoutChecker = globalData->timeoutChecker; - if (timeoutChecker.didTimeOut(stackFrame.callFrame)) { + if (timeoutChecker->didTimeOut(stackFrame.callFrame)) { globalData->exception = createInterruptedExecutionException(globalData); VM_THROW_EXCEPTION_AT_END(); } - return timeoutChecker.ticksUntilNextCheck(); + return timeoutChecker->ticksUntilNextCheck(); } DEFINE_STUB_FUNCTION(void, register_file_check) @@ -2705,8 +2705,13 @@ DEFINE_STUB_FUNCTION(void, op_debug) int debugHookID = stackFrame.args[0].int32(); int firstLine = stackFrame.args[1].int32(); int lastLine = stackFrame.args[2].int32(); +#ifdef QT_BUILD_SCRIPT_LIB + int column = stackFrame.args[3].int32(); +#else + int column = -1; +#endif - stackFrame.globalData->interpreter->debug(callFrame, static_cast<DebugHookID>(debugHookID), firstLine, lastLine); + stackFrame.globalData->interpreter->debug(callFrame, static_cast<DebugHookID>(debugHookID), firstLine, lastLine, column); } DEFINE_STUB_FUNCTION(EncodedJSValue, vm_throw) diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Grammar.y b/src/3rdparty/webkit/JavaScriptCore/parser/Grammar.y index 354c786..a3bf1fe 100644 --- a/src/3rdparty/webkit/JavaScriptCore/parser/Grammar.y +++ b/src/3rdparty/webkit/JavaScriptCore/parser/Grammar.y @@ -62,7 +62,7 @@ static inline bool allowAutomaticSemicolon(JSC::Lexer&, int); #define AUTO_SEMICOLON do { if (!allowAutomaticSemicolon(*LEXER, yychar)) YYABORT; } while (0) #define SET_EXCEPTION_LOCATION(node, start, divot, end) node->setExceptionSourceCode((divot), (divot) - (start), (end) - (divot)) -#define DBG(l, s, e) (l)->setLoc((s).first_line, (e).last_line) +#define DBG(l, s, e) (l)->setLoc((s).first_line, (e).last_line, (s).first_column + 1) using namespace JSC; using namespace std; diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.cpp b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.cpp index 8e89c18..c36763c 100644 --- a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.cpp @@ -59,6 +59,7 @@ static const UChar byteOrderMark = 0xFEFF; Lexer::Lexer(JSGlobalData* globalData) : m_isReparsing(false) , m_globalData(globalData) + , m_startColumnNumberCorrection(0) , m_keywordTable(JSC::mainTable) { m_buffer8.reserveInitialCapacity(initialReadBufferCapacity); @@ -201,6 +202,7 @@ void Lexer::shiftLineTerminator() else shift1(); + m_startColumnNumberCorrection = currentOffset(); ++m_lineNumber; } @@ -293,11 +295,15 @@ start: int startOffset = currentOffset(); if (m_current == -1) { +#ifndef QT_BUILD_SCRIPT_LIB /* the parser takes cate about automatic semicolon. + this might add incorrect semicolons */ + //m_delimited and m_isReparsing are now useless if (!m_terminator && !m_delimited && !m_isReparsing) { // automatic semicolon insertion if program incomplete token = ';'; goto doneSemicolon; } +#endif return 0; } @@ -893,11 +899,11 @@ doneString: // Fall through into returnToken. returnToken: { - int lineNumber = m_lineNumber; - llocp->first_line = lineNumber; - llocp->last_line = lineNumber; - llocp->first_column = startOffset; - llocp->last_column = currentOffset(); + llocp->first_line = m_lineNumber; + llocp->last_line = m_lineNumber; + + llocp->first_column = startOffset - m_startColumnNumberCorrection; + llocp->last_column = currentOffset() - m_startColumnNumberCorrection; m_lastToken = token; return token; diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h index 2583162..0ef6dd4 100644 --- a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h +++ b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h @@ -87,6 +87,10 @@ namespace JSC { static const size_t initialIdentifierTableCapacity = 64; int m_lineNumber; + // this variable is supposed to keep index of last new line character ('\n' or '\r\n'or '\n\r'...) + // it is importent to calculate correct first_column in parser + int m_startColumnNumberCorrection; + Vector<char> m_buffer8; Vector<UChar> m_buffer16; diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/NodeConstructors.h b/src/3rdparty/webkit/JavaScriptCore/parser/NodeConstructors.h index 780a624..c256190 100644 --- a/src/3rdparty/webkit/JavaScriptCore/parser/NodeConstructors.h +++ b/src/3rdparty/webkit/JavaScriptCore/parser/NodeConstructors.h @@ -63,6 +63,7 @@ namespace JSC { inline StatementNode::StatementNode(JSGlobalData* globalData) : Node(globalData) , m_lastLine(-1) + , m_column(-1) { } diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp index 6c0d1af..9d9fe72 100644 --- a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp @@ -83,10 +83,11 @@ RegisterID* ThrowableExpressionData::emitThrowError(BytecodeGenerator& generator // ------------------------------ StatementNode -------------------------------- -void StatementNode::setLoc(int firstLine, int lastLine) +void StatementNode::setLoc(int firstLine, int lastLine, int column) { m_line = firstLine; m_lastLine = lastLine; + m_column = column; } // ------------------------------ SourceElements -------------------------------- @@ -1225,7 +1226,7 @@ RegisterID* ConstDeclNode::emitBytecode(BytecodeGenerator& generator, RegisterID RegisterID* ConstStatementNode::emitBytecode(BytecodeGenerator& generator, RegisterID*) { - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); return generator.emitNode(m_next); } @@ -1250,7 +1251,7 @@ RegisterID* BlockNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds RegisterID* EmptyStatementNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) { - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); return dst; } @@ -1258,7 +1259,7 @@ RegisterID* EmptyStatementNode::emitBytecode(BytecodeGenerator& generator, Regis RegisterID* DebuggerStatementNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) { - generator.emitDebugHook(DidReachBreakpoint, firstLine(), lastLine()); + generator.emitDebugHook(DidReachBreakpoint, firstLine(), lastLine(), column()); return dst; } @@ -1267,7 +1268,7 @@ RegisterID* DebuggerStatementNode::emitBytecode(BytecodeGenerator& generator, Re RegisterID* ExprStatementNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) { ASSERT(m_expr); - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); return generator.emitNode(dst, m_expr); } @@ -1276,7 +1277,7 @@ RegisterID* ExprStatementNode::emitBytecode(BytecodeGenerator& generator, Regist RegisterID* VarStatementNode::emitBytecode(BytecodeGenerator& generator, RegisterID*) { ASSERT(m_expr); - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); return generator.emitNode(m_expr); } @@ -1284,7 +1285,7 @@ RegisterID* VarStatementNode::emitBytecode(BytecodeGenerator& generator, Registe RegisterID* IfNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) { - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); RefPtr<Label> afterThen = generator.newLabel(); @@ -1302,7 +1303,7 @@ RegisterID* IfNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) RegisterID* IfElseNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) { - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); RefPtr<Label> beforeElse = generator.newLabel(); RefPtr<Label> afterElse = generator.newLabel(); @@ -1332,12 +1333,14 @@ RegisterID* DoWhileNode::emitBytecode(BytecodeGenerator& generator, RegisterID* RefPtr<Label> topOfLoop = generator.newLabel(); generator.emitLabel(topOfLoop.get()); - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); RefPtr<RegisterID> result = generator.emitNode(dst, m_statement); generator.emitLabel(scope->continueTarget()); - generator.emitDebugHook(WillExecuteStatement, m_expr->lineNo(), m_expr->lineNo()); +#ifndef QT_BUILD_SCRIPT_LIB + generator.emitDebugHook(WillExecuteStatement, m_expr->lineNo(), m_expr->lineNo(), column()); +#endif RegisterID* cond = generator.emitNode(m_expr); generator.emitJumpIfTrue(cond, topOfLoop.get()); @@ -1350,7 +1353,9 @@ RegisterID* DoWhileNode::emitBytecode(BytecodeGenerator& generator, RegisterID* RegisterID* WhileNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) { RefPtr<LabelScope> scope = generator.newLabelScope(LabelScope::Loop); - +#ifdef QT_BUILD_SCRIPT_LIB + generator.emitDebugHook(WillExecuteStatement, m_expr->lineNo(), m_expr->lineNo(), column()); +#endif generator.emitJump(scope->continueTarget()); RefPtr<Label> topOfLoop = generator.newLabel(); @@ -1359,7 +1364,9 @@ RegisterID* WhileNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds generator.emitNode(dst, m_statement); generator.emitLabel(scope->continueTarget()); - generator.emitDebugHook(WillExecuteStatement, m_expr->lineNo(), m_expr->lineNo()); +#ifndef QT_BUILD_SCRIPT_LIB + generator.emitDebugHook(WillExecuteStatement, m_expr->lineNo(), m_expr->lineNo(), column()); +#endif RegisterID* cond = generator.emitNode(m_expr); generator.emitJumpIfTrue(cond, topOfLoop.get()); @@ -1378,7 +1385,7 @@ RegisterID* ForNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) RefPtr<LabelScope> scope = generator.newLabelScope(LabelScope::Loop); - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); if (m_expr1) generator.emitNode(generator.ignoredResult(), m_expr1); @@ -1392,7 +1399,9 @@ RegisterID* ForNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) RefPtr<RegisterID> result = generator.emitNode(dst, m_statement); generator.emitLabel(scope->continueTarget()); - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); +#ifndef QT_BUILD_SCRIPT_LIB + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); +#endif if (m_expr3) generator.emitNode(generator.ignoredResult(), m_expr3); @@ -1418,7 +1427,7 @@ RegisterID* ForInNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds RefPtr<Label> continueTarget = generator.newLabel(); - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); if (m_init) generator.emitNode(generator.ignoredResult(), m_init); @@ -1466,7 +1475,9 @@ RegisterID* ForInNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds generator.emitLabel(scope->continueTarget()); generator.emitNextPropertyName(propertyName, iter.get(), loopStart.get()); - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); +#ifndef QT_BUILD_SCRIPT_LIB + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); +#endif generator.emitLabel(scope->breakTarget()); return dst; } @@ -1476,7 +1487,7 @@ RegisterID* ForInNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds // ECMA 12.7 RegisterID* ContinueNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) { - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); LabelScope* scope = generator.continueTarget(m_ident); @@ -1494,7 +1505,7 @@ RegisterID* ContinueNode::emitBytecode(BytecodeGenerator& generator, RegisterID* // ECMA 12.8 RegisterID* BreakNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) { - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); LabelScope* scope = generator.breakTarget(m_ident); @@ -1511,7 +1522,7 @@ RegisterID* BreakNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds RegisterID* ReturnNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) { - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); if (generator.codeType() != FunctionCode) return emitThrowError(generator, SyntaxError, "Invalid return statement."); @@ -1528,7 +1539,7 @@ RegisterID* ReturnNode::emitBytecode(BytecodeGenerator& generator, RegisterID* d generator.emitJumpScopes(l0.get(), 0); generator.emitLabel(l0.get()); } - generator.emitDebugHook(WillLeaveCallFrame, firstLine(), lastLine()); + generator.emitDebugHook(WillLeaveCallFrame, firstLine(), lastLine(), column()); return generator.emitReturn(r0); } @@ -1536,7 +1547,7 @@ RegisterID* ReturnNode::emitBytecode(BytecodeGenerator& generator, RegisterID* d RegisterID* WithNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) { - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); RefPtr<RegisterID> scope = generator.newTemporary(); generator.emitNode(scope.get(), m_expr); // scope must be protected until popped @@ -1695,7 +1706,7 @@ RegisterID* CaseBlockNode::emitBytecodeForBlock(BytecodeGenerator& generator, Re RegisterID* SwitchNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) { - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); RefPtr<LabelScope> scope = generator.newLabelScope(LabelScope::Switch); @@ -1710,7 +1721,7 @@ RegisterID* SwitchNode::emitBytecode(BytecodeGenerator& generator, RegisterID* d RegisterID* LabelNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) { - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); if (generator.breakTarget(m_name)) return emitThrowError(generator, SyntaxError, "Duplicate label: %s.", m_name); @@ -1726,7 +1737,7 @@ RegisterID* LabelNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds RegisterID* ThrowNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) { - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); if (dst == generator.ignoredResult()) dst = 0; @@ -1740,7 +1751,9 @@ RegisterID* ThrowNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds RegisterID* TryNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) { - generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine()); +#ifndef QT_BUILD_SCRIPT_LIB + generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); +#endif RefPtr<Label> tryStartLabel = generator.newLabel(); RefPtr<Label> tryEndLabel = generator.newLabel(); @@ -1875,13 +1888,13 @@ PassRefPtr<ProgramNode> ProgramNode::create(JSGlobalData* globalData, SourceElem RegisterID* ProgramNode::emitBytecode(BytecodeGenerator& generator, RegisterID*) { - generator.emitDebugHook(WillExecuteProgram, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteProgram, firstLine(), lastLine(), column()); RefPtr<RegisterID> dstRegister = generator.newTemporary(); generator.emitLoad(dstRegister.get(), jsUndefined()); statementListEmitCode(children(), generator, dstRegister.get()); - generator.emitDebugHook(DidExecuteProgram, firstLine(), lastLine()); + generator.emitDebugHook(DidExecuteProgram, firstLine(), lastLine(), column()); generator.emitEnd(dstRegister.get()); return 0; } @@ -1930,13 +1943,13 @@ PassRefPtr<EvalNode> EvalNode::create(JSGlobalData* globalData, SourceElements* RegisterID* EvalNode::emitBytecode(BytecodeGenerator& generator, RegisterID*) { - generator.emitDebugHook(WillExecuteProgram, firstLine(), lastLine()); + generator.emitDebugHook(WillExecuteProgram, firstLine(), lastLine(), column()); RefPtr<RegisterID> dstRegister = generator.newTemporary(); generator.emitLoad(dstRegister.get(), jsUndefined()); statementListEmitCode(children(), generator, dstRegister.get()); - generator.emitDebugHook(DidExecuteProgram, firstLine(), lastLine()); + generator.emitDebugHook(DidExecuteProgram, firstLine(), lastLine(), column()); generator.emitEnd(dstRegister.get()); return 0; } @@ -1996,6 +2009,9 @@ inline FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData) , m_parameters(0) , m_parameterCount(0) { +#ifdef QT_BUILD_SCRIPT_LIB + sourceToken = globalData->scriptpool->objectRegister(); +#endif } inline FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& sourceCode, CodeFeatures features, int numConstants) @@ -2003,10 +2019,16 @@ inline FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData, SourceElemen , m_parameters(0) , m_parameterCount(0) { +#ifdef QT_BUILD_SCRIPT_LIB + sourceToken = globalData->scriptpool->objectRegister(); +#endif } FunctionBodyNode::~FunctionBodyNode() { +#ifdef QT_BUILD_SCRIPT_LIB + if (sourceToken) delete sourceToken; +#endif for (size_t i = 0; i < m_parameterCount; ++i) m_parameters[i].~Identifier(); fastFree(m_parameters); @@ -2116,7 +2138,7 @@ CodeBlock& FunctionBodyNode::bytecodeForExceptionInfoReparse(ScopeChainNode* sco RegisterID* FunctionBodyNode::emitBytecode(BytecodeGenerator& generator, RegisterID*) { - generator.emitDebugHook(DidEnterCallFrame, firstLine(), lastLine()); + generator.emitDebugHook(DidEnterCallFrame, firstLine(), lastLine(), column()); statementListEmitCode(children(), generator, generator.ignoredResult()); if (children().size() && children().last()->isBlock()) { BlockNode* blockNode = static_cast<BlockNode*>(children().last()); @@ -2125,7 +2147,7 @@ RegisterID* FunctionBodyNode::emitBytecode(BytecodeGenerator& generator, Registe } RegisterID* r0 = generator.emitLoad(0, jsUndefined()); - generator.emitDebugHook(WillLeaveCallFrame, firstLine(), lastLine()); + generator.emitDebugHook(WillLeaveCallFrame, firstLine(), lastLine(), column()); generator.emitReturn(r0); return 0; } diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h index 84e8b95..185cede 100644 --- a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h +++ b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h @@ -36,6 +36,10 @@ #include <wtf/MathExtras.h> #include <wtf/OwnPtr.h> +#ifdef QT_BUILD_SCRIPT_LIB +#include "SourcePoolQt.h" +#endif + namespace JSC { class ArgumentListNode; @@ -191,9 +195,10 @@ namespace JSC { public: StatementNode(JSGlobalData*); - void setLoc(int line0, int line1); + void setLoc(int line0, int line1, int column); int firstLine() const { return lineNo(); } int lastLine() const { return m_lastLine; } + int column() const { return m_column; } virtual bool isEmptyStatement() const { return false; } virtual bool isReturnNode() const { return false; } @@ -203,6 +208,7 @@ namespace JSC { private: int m_lastLine; + int m_column; }; class NullNode : public ExpressionNode { @@ -1605,6 +1611,9 @@ namespace JSC { Identifier* m_parameters; size_t m_parameterCount; OwnPtr<CodeBlock> m_code; +#ifdef QT_BUILD_SCRIPT_LIB + SourcePool::SourcePoolToken* sourceToken; +#endif }; class FuncExprNode : public ExpressionNode, public ParserArenaRefCounted { diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Parser.h b/src/3rdparty/webkit/JavaScriptCore/parser/Parser.h index 373dc00..5a182a6 100644 --- a/src/3rdparty/webkit/JavaScriptCore/parser/Parser.h +++ b/src/3rdparty/webkit/JavaScriptCore/parser/Parser.h @@ -76,7 +76,8 @@ namespace JSC { *m_source, m_features, m_numConstants); - result->setLoc(m_source->firstLine(), m_lastLine); + int column = m_source->startOffset(); //is it good way to find column number? + result->setLoc(m_source->firstLine(), m_lastLine, column); } m_arena.reset(); @@ -103,7 +104,8 @@ namespace JSC { *m_source, oldParsedNode->features(), m_numConstants); - result->setLoc(m_source->firstLine(), m_lastLine); + int column = m_source->startOffset(); //is it good way to find column number? + result->setLoc(m_source->firstLine(), m_lastLine, column); } m_arena.reset(); diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/SourceCode.h b/src/3rdparty/webkit/JavaScriptCore/parser/SourceCode.h index 84360b8..305b804 100644 --- a/src/3rdparty/webkit/JavaScriptCore/parser/SourceCode.h +++ b/src/3rdparty/webkit/JavaScriptCore/parser/SourceCode.h @@ -47,7 +47,11 @@ namespace JSC { : m_provider(provider) , m_startChar(0) , m_endChar(m_provider->length()) +#ifdef QT_BUILD_SCRIPT_LIB + , m_firstLine(firstLine) +#else , m_firstLine(std::max(firstLine, 1)) +#endif { } @@ -55,7 +59,11 @@ namespace JSC { : m_provider(provider) , m_startChar(start) , m_endChar(end) +#ifdef QT_BUILD_SCRIPT_LIB + , m_firstLine(firstLine) +#else , m_firstLine(std::max(firstLine, 1)) +#endif { } diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/SourcePoolQt.cpp b/src/3rdparty/webkit/JavaScriptCore/parser/SourcePoolQt.cpp new file mode 100644 index 0000000..4fc859f --- /dev/null +++ b/src/3rdparty/webkit/JavaScriptCore/parser/SourcePoolQt.cpp @@ -0,0 +1,109 @@ +/* + Copyright (C) 2008, 2009 Nokia Corporation and/or its subsidiary(-ies) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "config.h" +#include "SourcePoolQt.h" + + +#ifdef QT_BUILD_SCRIPT_LIB + +#include "SourceCode.h" +#include "Debugger.h" + + +namespace JSC { + + void SourcePool::startEvaluating(const SourceCode& source) + { + int id = source.provider()->asID(); + + codes.insert(id,source.toString()); + + currentScript.push(id); + scriptRef.insert(id,ScriptActivCount()); + + if (debug) + debug->scriptLoad(id,source.toString(),source.provider()->url(),source.firstLine()); + } + + + void SourcePool::stopEvaluating(const SourceCode& source) + { + int id = source.provider()->asID(); + currentScript.pop(); + + if (scriptRef.contains(id)) { + ScriptActivCount info = scriptRef.take(id); + if (info.getCount()) { + //we can't remove info from scriptRef + info.isActive = false; + scriptRef.insert(id,info); + } else { + //we are unloading source code + if (debug) + debug->scriptUnload(id); + } + } + } + + SourcePool::SourcePoolToken* SourcePool::objectRegister() + { + if (currentScript.isEmpty()) { + return 0; + } + + int id = currentScript.top(); + + SourcePoolToken* token = new SourcePoolToken(id,this); + + ScriptActivCount info = scriptRef.take(id); + + info.incCount(); + scriptRef.insert(id,info); + return token; + } + + void SourcePool::objectUnregister(const SourcePool::SourcePoolToken *token) + { + int id = token->id; + + ScriptActivCount info = scriptRef.take(id); + info.decCount(); + if (info.isActive) { + scriptRef.insert(id,info); + } else { + if (info.getCount() == 0) { + //remove from scriptRef (script is not active and there is no objects connected) + if(debug) + debug->scriptUnload(id); + } else { + scriptRef.insert(id,info); + } + } + + } + + + void SourcePool::setDebugger(JSC::Debugger *debugger) { this->debug = debugger; } + Debugger* SourcePool::debugger() { return debug; } + +} //namespace JSC + + +#endif //QT_BUILD_SCRIPT_LIB diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/SourcePoolQt.h b/src/3rdparty/webkit/JavaScriptCore/parser/SourcePoolQt.h new file mode 100644 index 0000000..baed3ba --- /dev/null +++ b/src/3rdparty/webkit/JavaScriptCore/parser/SourcePoolQt.h @@ -0,0 +1,91 @@ +/* + Copyright (C) 2008, 2009 Nokia Corporation and/or its subsidiary(-ies) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ +#ifndef SOURCEPOOL_H +#define SOURCEPOOL_H + +#ifdef QT_BUILD_SCRIPT_LIB + +#include "qhash.h" +#include "qstack.h" +#include "qdebug.h" +#include <stdint.h> + +namespace JSC { + + class SourceCode; + class Debugger; + + class SourcePool + { + class ScriptActivCount + { + int count; + public: + void incCount() + { + count++; + }; + void decCount() + { + count--; + }; + int getCount() const + { + return count; + }; + bool isActive; + ScriptActivCount() : count(0), isActive(true) {} + }; + QStack<intptr_t> currentScript; + QHash<unsigned, ScriptActivCount> scriptRef; + QHash<int, QString> codes; //debug + Debugger *debug; + + friend class SourcePoolToken; + public: + class SourcePoolToken + { + unsigned id; + SourcePool *ptr; + SourcePoolToken(unsigned scriptId, SourcePool *scriptPool) : id(scriptId),ptr(scriptPool) {} + SourcePoolToken(const SourcePoolToken&) : id(0), ptr(0) {} //private - do not use - will crash + public: + ~SourcePoolToken() { ptr->objectUnregister(this); } + friend class SourcePool; + }; + + SourcePool() : debug(0) {} + + void startEvaluating(const SourceCode& source); + void stopEvaluating(const SourceCode& source); + SourcePoolToken* objectRegister(); + + void setDebugger(Debugger *debugger); + Debugger* debugger(); + + private: + void objectUnregister(const SourcePoolToken *token); + }; + +} //namespace JSC + + +#endif //QT_BUILD_SCRIPT_LIB + +#endif // SOURCEPOOL_H diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.cpp index f867fe8..7cb4fe9 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.cpp @@ -227,7 +227,7 @@ void Arguments::put(ExecState* exec, const Identifier& propertyName, JSValue val JSObject::put(exec, propertyName, value, slot); } -bool Arguments::deleteProperty(ExecState* exec, unsigned i) +bool Arguments::deleteProperty(ExecState* exec, unsigned i, bool checkDontDelete) { if (i < d->numArguments) { if (!d->deletedArguments) { @@ -240,10 +240,10 @@ bool Arguments::deleteProperty(ExecState* exec, unsigned i) } } - return JSObject::deleteProperty(exec, Identifier(exec, UString::from(i))); + return JSObject::deleteProperty(exec, Identifier(exec, UString::from(i)), checkDontDelete); } -bool Arguments::deleteProperty(ExecState* exec, const Identifier& propertyName) +bool Arguments::deleteProperty(ExecState* exec, const Identifier& propertyName, bool checkDontDelete) { bool isArrayIndex; unsigned i = propertyName.toArrayIndex(&isArrayIndex); @@ -268,7 +268,17 @@ bool Arguments::deleteProperty(ExecState* exec, const Identifier& propertyName) return true; } - return JSObject::deleteProperty(exec, propertyName); + return JSObject::deleteProperty(exec, propertyName, checkDontDelete); +} + +bool Arguments::getPropertyAttributes(ExecState* exec, const Identifier& propertyName, unsigned& attributes) const +{ + if ((propertyName == exec->propertyNames().length) + || (propertyName == exec->propertyNames().callee)) { + attributes = DontEnum; + return true; + } + return JSObject::getPropertyAttributes(exec, propertyName, attributes); } } // namespace JSC diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.h b/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.h index 72697eb..dc54dac 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.h @@ -45,7 +45,7 @@ namespace JSC { OwnArrayPtr<bool> deletedArguments; Register extraArgumentsFixedBuffer[4]; - JSFunction* callee; + JSObject* callee; bool overrodeLength : 1; bool overrodeCallee : 1; }; @@ -87,13 +87,14 @@ namespace JSC { } private: - void getArgumentsData(CallFrame*, JSFunction*&, ptrdiff_t& firstParameterIndex, Register*& argv, int& argc); + void getArgumentsData(CallFrame*, JSObject*&, ptrdiff_t& firstParameterIndex, Register*& argv, int& argc); virtual bool getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&); virtual bool getOwnPropertySlot(ExecState*, unsigned propertyName, PropertySlot&); virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&); virtual void put(ExecState*, unsigned propertyName, JSValue, PutPropertySlot&); - virtual bool deleteProperty(ExecState*, const Identifier& propertyName); - virtual bool deleteProperty(ExecState*, unsigned propertyName); + virtual bool deleteProperty(ExecState*, const Identifier& propertyName, bool checkDontDelete = true); + virtual bool deleteProperty(ExecState*, unsigned propertyName, bool checkDontDelete = true); + virtual bool getPropertyAttributes(ExecState*, const Identifier& propertyName, unsigned& attributes) const; virtual const ClassInfo* classInfo() const { return &info; } @@ -110,12 +111,17 @@ namespace JSC { return static_cast<Arguments*>(asObject(value)); } - ALWAYS_INLINE void Arguments::getArgumentsData(CallFrame* callFrame, JSFunction*& function, ptrdiff_t& firstParameterIndex, Register*& argv, int& argc) + ALWAYS_INLINE void Arguments::getArgumentsData(CallFrame* callFrame, JSObject*& callee, ptrdiff_t& firstParameterIndex, Register*& argv, int& argc) { - function = callFrame->callee(); - - CodeBlock* codeBlock = &function->body()->generatedBytecode(); - int numParameters = codeBlock->m_numParameters; + callee = callFrame->callee(); + + int numParameters; + if (callee->isObject(&JSFunction::info)) { + CodeBlock* codeBlock = &JSC::asFunction(callee)->body()->generatedBytecode(); + numParameters = codeBlock->m_numParameters; + } else { + numParameters = 0; + } argc = callFrame->argumentCount(); if (argc <= numParameters) @@ -131,13 +137,16 @@ namespace JSC { : JSObject(callFrame->lexicalGlobalObject()->argumentsStructure()) , d(new ArgumentsData) { - JSFunction* callee; + JSObject* callee; ptrdiff_t firstParameterIndex; Register* argv; int numArguments; getArgumentsData(callFrame, callee, firstParameterIndex, argv, numArguments); - d->numParameters = callee->body()->parameterCount(); + if (callee->isObject(&JSFunction::info)) + d->numParameters = JSC::asFunction(callee)->body()->parameterCount(); + else + d->numParameters = 0; d->firstParameterIndex = firstParameterIndex; d->numArguments = numArguments; @@ -168,7 +177,8 @@ namespace JSC { : JSObject(callFrame->lexicalGlobalObject()->argumentsStructure()) , d(new ArgumentsData) { - ASSERT(!callFrame->callee()->body()->parameterCount()); + if (callFrame->callee() && callFrame->callee()->isObject(&JSC::JSFunction::info)) + ASSERT(!asFunction(callFrame->callee())->body()->parameterCount()); unsigned numArguments = callFrame->argumentCount() - 1; @@ -183,6 +193,8 @@ namespace JSC { extraArguments = d->extraArgumentsFixedBuffer; Register* argv = callFrame->registers() - RegisterFile::CallFrameHeaderSize - numArguments - 1; + if (callFrame->callee() && !callFrame->callee()->isObject(&JSC::JSFunction::info)) + ++argv; // ### off-by-one issue with native functions for (unsigned i = 0; i < numArguments; ++i) extraArguments[i] = argv[i]; diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/CallData.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/CallData.cpp index 62e42fe..c89ebf8 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/CallData.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/CallData.cpp @@ -27,9 +27,32 @@ #include "CallData.h" #include "JSFunction.h" +#include "JSGlobalObject.h" + +#ifdef QT_BUILD_SCRIPT_LIB +#include "Debugger.h" +#include "DebuggerCallFrame.h" +#endif namespace JSC { +#ifdef QT_BUILD_SCRIPT_LIB +JSValue JSC::NativeFuncWrapper::operator() (ExecState* exec, JSObject* jsobj, JSValue thisValue, const ArgList& argList) const +{ + Debugger* debugger = exec->lexicalGlobalObject()->debugger(); + if (debugger) + debugger->callEvent(DebuggerCallFrame(exec), -1, -1); + + JSValue returnValue = ptr(exec, jsobj, thisValue, argList); + + if (debugger) + debugger->functionExit(returnValue, -1); + + return returnValue; +} +#endif + + JSValue call(ExecState* exec, JSValue functionObject, CallType callType, const CallData& callData, JSValue thisValue, const ArgList& args) { if (callType == CallTypeHost) diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/CallData.h b/src/3rdparty/webkit/JavaScriptCore/runtime/CallData.h index d5b0172..541779c 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/CallData.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/CallData.h @@ -48,9 +48,35 @@ namespace JSC { typedef JSValue (JSC_HOST_CALL *NativeFunction)(ExecState*, JSObject*, JSValue thisValue, const ArgList&); - union CallData { +#ifdef QT_BUILD_SCRIPT_LIB + class NativeFuncWrapper + { + NativeFunction ptr; + public: + inline NativeFuncWrapper& operator=(NativeFunction func) + { + ptr = func; + return *this; + } + inline operator NativeFunction() const {return ptr;} + inline operator bool() const {return ptr;} + + JSValue operator()(ExecState* exec, JSObject* jsobj, JSValue thisValue, const ArgList& argList) const; + }; +#endif + +#if defined(QT_BUILD_SCRIPT_LIB) && PLATFORM(SOLARIS) + struct +#else + union +#endif + CallData { struct { +#ifndef QT_BUILD_SCRIPT_LIB NativeFunction function; +#else + NativeFuncWrapper function; +#endif } native; struct { FunctionBodyNode* functionBody; diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp index bc5582c..dddd83d 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp @@ -1167,6 +1167,10 @@ bool Heap::collect() markStackObjectsConservatively(); markProtectedObjects(); +#if QT_BUILD_SCRIPT_LIB + if (m_globalData->clientData) + m_globalData->clientData->mark(); +#endif if (m_markListSet && m_markListSet->size()) MarkedArgumentBuffer::markLists(*m_markListSet); if (m_globalData->exception && !m_globalData->exception.marked()) diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Completion.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Completion.cpp index b8b1581..04c9a2e 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/Completion.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Completion.cpp @@ -31,6 +31,11 @@ #include "Debugger.h" #include <stdio.h> +#ifdef QT_BUILD_SCRIPT_LIB +#include "DebuggerCallFrame.h" +#include "SourcePoolQt.h" +#endif + #if !PLATFORM(WIN_OS) #include <unistd.h> #endif @@ -54,12 +59,15 @@ Completion evaluate(ExecState* exec, ScopeChain& scopeChain, const SourceCode& s { JSLock lock(exec); + intptr_t sourceId = source.provider()->asID(); int errLine; UString errMsg; RefPtr<ProgramNode> programNode = exec->globalData().parser->parse<ProgramNode>(exec, exec->dynamicGlobalObject()->debugger(), source, &errLine, &errMsg); - if (!programNode) - return Completion(Throw, Error::create(exec, SyntaxError, errMsg, errLine, source.provider()->asID(), source.provider()->url())); + if (!programNode) { + JSValue error = Error::create(exec, SyntaxError, errMsg, errLine, sourceId, source.provider()->url()); + return Completion(Throw, error); + } JSObject* thisObj = (!thisValue || thisValue.isUndefinedOrNull()) ? exec->dynamicGlobalObject() : thisValue.toObject(exec); @@ -71,6 +79,7 @@ Completion evaluate(ExecState* exec, ScopeChain& scopeChain, const SourceCode& s return Completion(Interrupted, exception); return Completion(Throw, exception); } + return Completion(Normal, result); } diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.cpp index 7ee59d7..3dfc918 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.cpp @@ -28,15 +28,38 @@ #include "JSFunction.h" + +#ifdef QT_BUILD_SCRIPT_LIB +#include "Debugger.h" +#include "DebuggerCallFrame.h" +#include "JSGlobalObject.h" +#endif + namespace JSC { -JSObject* construct(ExecState* exec, JSValue object, ConstructType constructType, const ConstructData& constructData, const ArgList& args) +#ifdef QT_BUILD_SCRIPT_LIB +JSObject* JSC::NativeConstrWrapper::operator() (ExecState* exec, JSObject* jsobj, const ArgList& argList) const +{ + Debugger* debugger = exec->lexicalGlobalObject()->debugger(); + if (debugger) + debugger->callEvent(DebuggerCallFrame(exec), -1, -1); + + JSObject* returnValue = ptr(exec, jsobj, argList); + + if ((debugger) && (callDebuggerFunctionExit)) + debugger->functionExit(JSValue(returnValue), -1); + + return returnValue; +} +#endif + +JSObject* construct(ExecState* exec, JSValue callee, ConstructType constructType, const ConstructData& constructData, const ArgList& args) { if (constructType == ConstructTypeHost) - return constructData.native.function(exec, asObject(object), args); + return constructData.native.function(exec, asObject(callee), args); ASSERT(constructType == ConstructTypeJS); // FIXME: Can this be done more efficiently using the constructData? - return asFunction(object)->construct(exec, args); + return asFunction(callee)->construct(exec, args); } } // namespace JSC diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.h b/src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.h index 9d580d5..477399c 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.h @@ -46,9 +46,42 @@ namespace JSC { typedef JSObject* (*NativeConstructor)(ExecState*, JSObject*, const ArgList&); - union ConstructData { +#ifdef QT_BUILD_SCRIPT_LIB + class NativeConstrWrapper + { + NativeConstructor ptr; + //Hack. If this variable is true and if debugger is attached at the end of + //operator() execution functionExit event will be created (in most cases it will be default) + //This variable was created because of FunctionWrapper::proxyCall method that change result + //on fly. Event shuld be created with original value so the method should call it itself. + bool callDebuggerFunctionExit; + public: + inline NativeConstrWrapper& operator=(NativeConstructor func) + { + callDebuggerFunctionExit = true; + ptr = func; + return *this; + } + inline operator NativeConstructor() const {return ptr;} + inline operator bool() const {return ptr;} + + inline void doNotCallDebuggerFunctionExit() {callDebuggerFunctionExit = false;} + JSObject* operator()(ExecState*, JSObject*, const ArgList&) const; + }; +#endif + +#if defined(QT_BUILD_SCRIPT_LIB) && PLATFORM(SOLARIS) + struct +#else + union +#endif + ConstructData { struct { +#ifndef QT_BUILD_SCRIPT_LIB NativeConstructor function; +#else + NativeConstrWrapper function; +#endif } native; struct { FunctionBodyNode* functionBody; diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Error.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Error.cpp index db1d8cc..1aa9034 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/Error.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Error.cpp @@ -83,11 +83,11 @@ JSObject* Error::create(ExecState* exec, ErrorType type, const UString& message, JSObject* error = construct(exec, constructor, constructType, constructData, args); if (lineNumber != -1) - error->putWithAttributes(exec, Identifier(exec, "line"), jsNumber(exec, lineNumber), ReadOnly | DontDelete); + error->putWithAttributes(exec, Identifier(exec, JSC_ERROR_LINENUMBER_PROPERTYNAME), jsNumber(exec, lineNumber), ReadOnly | DontDelete); if (sourceID != -1) error->putWithAttributes(exec, Identifier(exec, "sourceId"), jsNumber(exec, sourceID), ReadOnly | DontDelete); if (!sourceURL.isNull()) - error->putWithAttributes(exec, Identifier(exec, "sourceURL"), jsString(exec, sourceURL), ReadOnly | DontDelete); + error->putWithAttributes(exec, Identifier(exec, JSC_ERROR_FILENAME_PROPERTYNAME), jsString(exec, sourceURL), ReadOnly | DontDelete); return error; } diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Error.h b/src/3rdparty/webkit/JavaScriptCore/runtime/Error.h index adf7fdf..fb864ee 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/Error.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Error.h @@ -60,6 +60,14 @@ namespace JSC { JSObject* throwError(ExecState*, ErrorType, const char* message); JSObject* throwError(ExecState*, ErrorType); +#ifdef QT_BUILD_SCRIPT_LIB +# define JSC_ERROR_FILENAME_PROPERTYNAME "fileName" +# define JSC_ERROR_LINENUMBER_PROPERTYNAME "lineNumber" +#else +# define JSC_ERROR_FILENAME_PROPERTYNAME "sourceURL" +# define JSC_ERROR_LINENUMBER_PROPERTYNAME "line" +#endif + } // namespace JSC #endif // Error_h diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionPrototype.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionPrototype.cpp index 9ba2144..ff8e57b 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionPrototype.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionPrototype.cpp @@ -98,7 +98,11 @@ JSValue JSC_HOST_CALL functionProtoFuncToString(ExecState* exec, JSObject*, JSVa return jsString(exec, "function " + function->name(&exec->globalData()) + "() {\n [native code]\n}"); } +#ifdef QT_BUILD_SCRIPT_LIB //same error message as in the old engine, and in mozilla + return throwError(exec, TypeError, "Function.prototype.toString called on incompatible object"); +#else return throwError(exec, TypeError); +#endif } JSValue JSC_HOST_CALL functionProtoFuncApply(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args) diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.cpp index 3bef263..184a9cb 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.cpp @@ -133,12 +133,12 @@ void JSActivation::putWithAttributes(ExecState* exec, const Identifier& property JSObject::putWithAttributes(exec, propertyName, value, attributes, true, slot); } -bool JSActivation::deleteProperty(ExecState* exec, const Identifier& propertyName) +bool JSActivation::deleteProperty(ExecState* exec, const Identifier& propertyName, bool checkDontDelete) { if (propertyName == exec->propertyNames().arguments) return false; - return Base::deleteProperty(exec, propertyName); + return Base::deleteProperty(exec, propertyName, checkDontDelete); } JSObject* JSActivation::toThisObject(ExecState* exec) const diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.h index c183dac..b48ef25 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.h @@ -57,7 +57,7 @@ namespace JSC { virtual void put(ExecState*, const Identifier&, JSValue, PutPropertySlot&); virtual void putWithAttributes(ExecState*, const Identifier&, JSValue, unsigned attributes); - virtual bool deleteProperty(ExecState*, const Identifier& propertyName); + virtual bool deleteProperty(ExecState*, const Identifier& propertyName, bool checkDontDelete = true); virtual JSObject* toThisObject(ExecState*) const; diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.cpp index 296ac9d..a8207e3 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.cpp @@ -375,20 +375,20 @@ NEVER_INLINE void JSArray::putSlowCase(ExecState* exec, unsigned i, JSValue valu checkConsistency(); } -bool JSArray::deleteProperty(ExecState* exec, const Identifier& propertyName) +bool JSArray::deleteProperty(ExecState* exec, const Identifier& propertyName, bool checkDontDelete) { bool isArrayIndex; unsigned i = propertyName.toArrayIndex(&isArrayIndex); if (isArrayIndex) - return deleteProperty(exec, i); + return deleteProperty(exec, i, checkDontDelete); if (propertyName == exec->propertyNames().length) return false; - return JSObject::deleteProperty(exec, propertyName); + return JSObject::deleteProperty(exec, propertyName, checkDontDelete); } -bool JSArray::deleteProperty(ExecState* exec, unsigned i) +bool JSArray::deleteProperty(ExecState* exec, unsigned i, bool checkDontDelete) { checkConsistency(); @@ -422,12 +422,12 @@ bool JSArray::deleteProperty(ExecState* exec, unsigned i) checkConsistency(); if (i > MAX_ARRAY_INDEX) - return deleteProperty(exec, Identifier::from(exec, i)); + return deleteProperty(exec, Identifier::from(exec, i), checkDontDelete); return false; } -void JSArray::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSArray::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { // FIXME: Filling PropertyNameArray with an identifier for every integer // is incredibly inefficient for large arrays. We need a different approach, @@ -447,7 +447,7 @@ void JSArray::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames propertyNames.add(Identifier::from(exec, it->first)); } - JSObject::getPropertyNames(exec, propertyNames); + JSObject::getPropertyNames(exec, propertyNames, listedAttributes); } bool JSArray::increaseVectorLength(unsigned newLength) diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.h index ea490d8..73e1711 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.h @@ -85,9 +85,9 @@ namespace JSC { protected: virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&); - virtual bool deleteProperty(ExecState*, const Identifier& propertyName); - virtual bool deleteProperty(ExecState*, unsigned propertyName); - virtual void getPropertyNames(ExecState*, PropertyNameArray&); + virtual bool deleteProperty(ExecState*, const Identifier& propertyName, bool checkDontDelete = true); + virtual bool deleteProperty(ExecState*, unsigned propertyName, bool checkDontDelete = true); + virtual void getPropertyNames(ExecState*, PropertyNameArray&, unsigned listedAttributes = Structure::Prototype); virtual void mark(); void* lazyCreationData(); diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.cpp index 2a5e72f..d00b69c 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.cpp @@ -85,12 +85,12 @@ void JSByteArray::put(ExecState* exec, unsigned propertyName, JSValue value) setIndex(exec, propertyName, value); } -void JSByteArray::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSByteArray::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { unsigned length = m_storage->length(); for (unsigned i = 0; i < length; ++i) propertyNames.add(Identifier::from(exec, i)); - JSObject::getPropertyNames(exec, propertyNames); + JSObject::getPropertyNames(exec, propertyNames, listedAttributes); } } diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.h index 57374e0..c43c3ea 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.h @@ -81,7 +81,7 @@ namespace JSC { virtual void put(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValue, JSC::PutPropertySlot&); virtual void put(JSC::ExecState*, unsigned propertyName, JSC::JSValue); - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = Structure::Prototype); virtual const ClassInfo* classInfo() const { return m_classInfo; } static const ClassInfo s_defaultInfo; diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.cpp index 8cf7943..10a91f7 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.cpp @@ -167,14 +167,14 @@ void JSCell::put(ExecState* exec, unsigned identifier, JSValue value) toObject(exec)->put(exec, identifier, value); } -bool JSCell::deleteProperty(ExecState* exec, const Identifier& identifier) +bool JSCell::deleteProperty(ExecState* exec, const Identifier& identifier, bool checkDontDelete) { - return toObject(exec)->deleteProperty(exec, identifier); + return toObject(exec)->deleteProperty(exec, identifier, checkDontDelete); } -bool JSCell::deleteProperty(ExecState* exec, unsigned identifier) +bool JSCell::deleteProperty(ExecState* exec, unsigned identifier, bool checkDontDelete) { - return toObject(exec)->deleteProperty(exec, identifier); + return toObject(exec)->deleteProperty(exec, identifier, checkDontDelete); } JSObject* JSCell::toThisObject(ExecState* exec) const diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.h index 32aa22b..4743baf 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.h @@ -90,8 +90,8 @@ namespace JSC { virtual const ClassInfo* classInfo() const; virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&); virtual void put(ExecState*, unsigned propertyName, JSValue); - virtual bool deleteProperty(ExecState*, const Identifier& propertyName); - virtual bool deleteProperty(ExecState*, unsigned propertyName); + virtual bool deleteProperty(ExecState*, const Identifier& propertyName, bool checkDontDelete = true); + virtual bool deleteProperty(ExecState*, unsigned propertyName, bool checkDontDelete = true); virtual JSObject* toThisObject(ExecState*) const; virtual UString toThisString(ExecState*) const; diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.cpp index b79074f..c8e137e 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.cpp @@ -176,13 +176,13 @@ void JSFunction::put(ExecState* exec, const Identifier& propertyName, JSValue va Base::put(exec, propertyName, value, slot); } -bool JSFunction::deleteProperty(ExecState* exec, const Identifier& propertyName) +bool JSFunction::deleteProperty(ExecState* exec, const Identifier& propertyName, bool checkDontDelete) { if (isHostFunction()) - return Base::deleteProperty(exec, propertyName); + return Base::deleteProperty(exec, propertyName, checkDontDelete); if (propertyName == exec->propertyNames().arguments || propertyName == exec->propertyNames().length) return false; - return Base::deleteProperty(exec, propertyName); + return Base::deleteProperty(exec, propertyName, checkDontDelete); } // ECMA 13.2.2 [[Construct]] diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.h index b27e515..5ddd97c 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.h @@ -56,7 +56,7 @@ namespace JSC { virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&); virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&); - virtual bool deleteProperty(ExecState*, const Identifier& propertyName); + virtual bool deleteProperty(ExecState*, const Identifier& propertyName, bool checkDontDelete = true); JSObject* construct(ExecState*, const ArgList&); JSValue call(ExecState*, JSValue thisValue, const ArgList&); diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.cpp index ff728e8..85d881e 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.cpp @@ -134,6 +134,7 @@ JSGlobalData::JSGlobalData(bool isShared, const VPtrSet& vptrSet) #if ENABLE(JIT) , jitStubs(this) #endif + , timeoutChecker(new TimeoutChecker) , heap(this) , initializingLazyNumericCompareFunction(false) , head(0) @@ -141,6 +142,9 @@ JSGlobalData::JSGlobalData(bool isShared, const VPtrSet& vptrSet) , scopeNodeBeingReparsed(0) , firstStringifierToMark(0) { +#ifdef QT_BUILD_SCRIPT_LIB + scriptpool = new SourcePool(); +#endif #if PLATFORM(MAC) startProfilerServerIfNeeded(); #endif @@ -176,6 +180,7 @@ JSGlobalData::~JSGlobalData() delete parser; delete lexer; + delete timeoutChecker; deleteAllValues(opaqueJSClassData); @@ -185,6 +190,10 @@ JSGlobalData::~JSGlobalData() deleteIdentifierTable(identifierTable); delete clientData; +#ifdef QT_BUILD_SCRIPT_LIB + if (scriptpool) + delete scriptpool; +#endif } PassRefPtr<JSGlobalData> JSGlobalData::create(bool isShared) diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.h index 96a3c2c..fb557af 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.h @@ -39,6 +39,10 @@ #include <wtf/HashMap.h> #include <wtf/RefCounted.h> +#ifdef QT_BUILD_SCRIPT_LIB +#include "SourcePoolQt.h" +#endif + struct OpaqueJSClass; struct OpaqueJSClassContextData; @@ -65,6 +69,9 @@ namespace JSC { public: struct ClientData { virtual ~ClientData() = 0; +#ifdef QT_BUILD_SCRIPT_LIB + virtual void mark() {} +#endif }; static bool sharedInstanceExists(); @@ -118,10 +125,13 @@ namespace JSC { Lexer* lexer; Parser* parser; Interpreter* interpreter; +#ifdef QT_BUILD_SCRIPT_LIB + SourcePool* scriptpool; +#endif #if ENABLE(JIT) JITThunks jitStubs; #endif - TimeoutChecker timeoutChecker; + TimeoutChecker* timeoutChecker; Heap heap; JSValue exception; diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.cpp index c56b84b..55286d3 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.cpp @@ -307,12 +307,12 @@ void JSGlobalObject::reset(JSValue prototype) putDirectFunctionWithoutTransition(Identifier(exec, "Date"), dateConstructor, DontEnum); putDirectFunctionWithoutTransition(Identifier(exec, "RegExp"), d()->regExpConstructor, DontEnum); putDirectFunctionWithoutTransition(Identifier(exec, "Error"), d()->errorConstructor, DontEnum); - putDirectFunctionWithoutTransition(Identifier(exec, "EvalError"), d()->evalErrorConstructor); - putDirectFunctionWithoutTransition(Identifier(exec, "RangeError"), d()->rangeErrorConstructor); - putDirectFunctionWithoutTransition(Identifier(exec, "ReferenceError"), d()->referenceErrorConstructor); - putDirectFunctionWithoutTransition(Identifier(exec, "SyntaxError"), d()->syntaxErrorConstructor); - putDirectFunctionWithoutTransition(Identifier(exec, "TypeError"), d()->typeErrorConstructor); - putDirectFunctionWithoutTransition(Identifier(exec, "URIError"), d()->URIErrorConstructor); + putDirectFunctionWithoutTransition(Identifier(exec, "EvalError"), d()->evalErrorConstructor, DontEnum); + putDirectFunctionWithoutTransition(Identifier(exec, "RangeError"), d()->rangeErrorConstructor, DontEnum); + putDirectFunctionWithoutTransition(Identifier(exec, "ReferenceError"), d()->referenceErrorConstructor, DontEnum); + putDirectFunctionWithoutTransition(Identifier(exec, "SyntaxError"), d()->syntaxErrorConstructor, DontEnum); + putDirectFunctionWithoutTransition(Identifier(exec, "TypeError"), d()->typeErrorConstructor, DontEnum); + putDirectFunctionWithoutTransition(Identifier(exec, "URIError"), d()->URIErrorConstructor, DontEnum); // Set global values. GlobalPropertyInfo staticGlobals[] = { @@ -340,8 +340,10 @@ void JSGlobalObject::reset(JSValue prototype) putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "encodeURI"), globalFuncEncodeURI), DontEnum); putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "encodeURIComponent"), globalFuncEncodeURIComponent), DontEnum); #ifndef NDEBUG +#ifndef QT_BUILD_SCRIPT_LIB putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "jscprint"), globalFuncJSCPrint), DontEnum); #endif +#endif resetPrototype(prototype); } diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.h index 7ab759d..dc11fee 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.h @@ -30,6 +30,10 @@ #include <wtf/HashSet.h> #include <wtf/OwnPtr.h> +#ifdef QT_BUILD_SCRIPT_LIB +#include "SourcePoolQt.h" +#endif + namespace JSC { class ArrayPrototype; @@ -226,7 +230,13 @@ namespace JSC { unsigned profileGroup() const { return d()->profileGroup; } Debugger* debugger() const { return d()->debugger; } - void setDebugger(Debugger* debugger) { d()->debugger = debugger; } + void setDebugger(Debugger* debugger) + { +#ifdef QT_BUILD_SCRIPT_LIB + globalData()->scriptpool->setDebugger(debugger); +#endif + d()->debugger = debugger; + } virtual bool supportsProfiling() const { return false; } diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.h index 706396e..e7d7847 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.h @@ -130,7 +130,11 @@ namespace JSC { */ class JSImmediate { +#ifdef QT_BUILD_SCRIPT_LIB + public: // QtScript needs isImmediate() and from() functions +#else private: +#endif friend class JIT; friend class JSValue; friend class JSFastMath; diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.cpp index 937dc2b..fb9cfe8 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.cpp @@ -116,7 +116,7 @@ bool JSNotAnObject::deleteProperty(ExecState* exec, unsigned) return false; } -void JSNotAnObject::getPropertyNames(ExecState* exec, PropertyNameArray&) +void JSNotAnObject::getPropertyNames(ExecState* exec, PropertyNameArray&, unsigned) { ASSERT_UNUSED(exec, exec->hadException() && exec->exception() == m_exception); } diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.h index a8e36bd..0aca63b 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.h @@ -87,7 +87,7 @@ namespace JSC { virtual bool deleteProperty(ExecState*, const Identifier& propertyName); virtual bool deleteProperty(ExecState*, unsigned propertyName); - virtual void getPropertyNames(ExecState*, PropertyNameArray&); + virtual void getPropertyNames(ExecState*, PropertyNameArray&, unsigned listedAttributes = Structure::Prototype); JSNotAnObjectErrorStub* m_exception; }; diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSONObject.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSONObject.cpp index 2f02b1d..bbbe3af 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSONObject.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSONObject.cpp @@ -394,7 +394,7 @@ Stringifier::StringifyResult Stringifier::appendStringifiedValue(StringBuilder& return StringifySucceeded; // If this is the outermost call, then loop to handle everything on the holder stack. - TimeoutChecker localTimeoutChecker(m_exec->globalData().timeoutChecker); + TimeoutChecker localTimeoutChecker(*m_exec->globalData().timeoutChecker); localTimeoutChecker.reset(); unsigned tickCount = localTimeoutChecker.ticksUntilNextCheck(); do { diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.cpp index 415c25d..ded842d 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.cpp @@ -204,12 +204,12 @@ bool JSObject::hasProperty(ExecState* exec, unsigned propertyName) const } // ECMA 8.6.2.5 -bool JSObject::deleteProperty(ExecState* exec, const Identifier& propertyName) +bool JSObject::deleteProperty(ExecState* exec, const Identifier& propertyName, bool checkDontDelete) { unsigned attributes; JSCell* specificValue; if (m_structure->get(propertyName, attributes, specificValue) != WTF::notFound) { - if ((attributes & DontDelete)) + if ((attributes & DontDelete) && checkDontDelete) return false; removeDirect(propertyName); return true; @@ -217,7 +217,7 @@ bool JSObject::deleteProperty(ExecState* exec, const Identifier& propertyName) // Look in the static hashtable of properties const HashEntry* entry = findPropertyHashEntry(exec, propertyName); - if (entry && entry->attributes() & DontDelete) + if (entry && (entry->attributes() & DontDelete) && checkDontDelete) return false; // this builtin property can't be deleted // FIXME: Should the code here actually do some deletion? @@ -230,9 +230,9 @@ bool JSObject::hasOwnProperty(ExecState* exec, const Identifier& propertyName) c return const_cast<JSObject*>(this)->getOwnPropertySlot(exec, propertyName, slot); } -bool JSObject::deleteProperty(ExecState* exec, unsigned propertyName) +bool JSObject::deleteProperty(ExecState* exec, unsigned propertyName, bool checkDontDelete) { - return deleteProperty(exec, Identifier::from(exec, propertyName)); + return deleteProperty(exec, Identifier::from(exec, propertyName), checkDontDelete); } static ALWAYS_INLINE JSValue callDefaultValueFunction(ExecState* exec, const JSObject* object, const Identifier& propertyName) @@ -447,9 +447,9 @@ bool JSObject::getPropertySpecificValue(ExecState*, const Identifier& propertyNa return false; } -void JSObject::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSObject::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { - m_structure->getEnumerablePropertyNames(exec, propertyNames, this); + m_structure->getPropertyNames(exec, propertyNames, this, listedAttributes); } bool JSObject::toBoolean(ExecState*) const @@ -524,7 +524,12 @@ NEVER_INLINE void JSObject::fillGetterPropertySlot(PropertySlot& slot, JSValue* Structure* JSObject::createInheritorID() { +#ifdef QT_BUILD_SCRIPT_LIB + // ### QtScript needs the hasOwnProperty() calls etc. for QScriptObject + m_inheritorID = Structure::create(this, TypeInfo(ObjectType, ImplementsHasInstance)); +#else m_inheritorID = JSObject::createStructure(this); +#endif return m_inheritorID.get(); } diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.h index db47ac7..15b7957 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.h @@ -110,14 +110,13 @@ namespace JSC { bool hasProperty(ExecState*, unsigned propertyName) const; bool hasOwnProperty(ExecState*, const Identifier& propertyName) const; - virtual bool deleteProperty(ExecState*, const Identifier& propertyName); - virtual bool deleteProperty(ExecState*, unsigned propertyName); + virtual bool deleteProperty(ExecState*, const Identifier& propertyName, bool checkDontDelete = true); + virtual bool deleteProperty(ExecState*, unsigned propertyName, bool checkDontDelete = true); virtual JSValue defaultValue(ExecState*, PreferredPrimitiveType) const; virtual bool hasInstance(ExecState*, JSValue, JSValue prototypeProperty); - - virtual void getPropertyNames(ExecState*, PropertyNameArray&); + virtual void getPropertyNames(ExecState*, PropertyNameArray&, unsigned listedAttributes = Structure::Prototype); virtual JSValue toPrimitive(ExecState*, PreferredPrimitiveType = NoPreference) const; virtual bool getPrimitiveNumber(ExecState*, double& number, JSValue& value); diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSString.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSString.cpp index 86f95e0..e1fc66d 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSString.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSString.cpp @@ -112,6 +112,21 @@ bool JSString::getOwnPropertySlot(ExecState* exec, unsigned propertyName, Proper return JSString::getOwnPropertySlot(exec, Identifier::from(exec, propertyName), slot); } +bool JSString::getStringPropertyAttributes(ExecState* exec, const Identifier& propertyName, unsigned& attributes) const +{ + if (propertyName == exec->propertyNames().length) { + attributes = DontEnum | DontDelete | ReadOnly; + return true; + } + bool isStrictUInt32; + unsigned i = propertyName.toStrictUInt32(&isStrictUInt32); + if (isStrictUInt32 && i < static_cast<unsigned>(m_value.size())) { + attributes = DontDelete | ReadOnly; + return true; + } + return false; +} + JSString* jsString(JSGlobalData* globalData, const UString& s) { int size = s.size(); diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSString.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSString.h index 900c565..6db9322 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSString.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSString.h @@ -87,6 +87,8 @@ namespace JSC { bool getStringPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&); bool getStringPropertySlot(ExecState*, unsigned propertyName, PropertySlot&); + bool getStringPropertyAttributes(ExecState*, const Identifier& propertyName, unsigned&) const; + bool canGetIndex(unsigned i) { return i < static_cast<unsigned>(m_value.size()); } JSString* getIndex(JSGlobalData*, unsigned); diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSVariableObject.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSVariableObject.cpp index a36cefa..78993b6 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSVariableObject.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSVariableObject.cpp @@ -33,23 +33,23 @@ namespace JSC { -bool JSVariableObject::deleteProperty(ExecState* exec, const Identifier& propertyName) +bool JSVariableObject::deleteProperty(ExecState* exec, const Identifier& propertyName, bool checkDontDelete) { if (symbolTable().contains(propertyName.ustring().rep())) return false; - return JSObject::deleteProperty(exec, propertyName); + return JSObject::deleteProperty(exec, propertyName, checkDontDelete); } -void JSVariableObject::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSVariableObject::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { SymbolTable::const_iterator end = symbolTable().end(); for (SymbolTable::const_iterator it = symbolTable().begin(); it != end; ++it) { - if (!(it->second.getAttributes() & DontEnum)) + if ((listedAttributes & Structure::NonEnumerable) || !(it->second.getAttributes() & DontEnum)) propertyNames.add(Identifier(exec, it->first.get())); } - JSObject::getPropertyNames(exec, propertyNames); + JSObject::getPropertyNames(exec, propertyNames, listedAttributes); } bool JSVariableObject::getPropertyAttributes(ExecState* exec, const Identifier& propertyName, unsigned& attributes) const diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSVariableObject.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSVariableObject.h index b969da5..310efb1 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSVariableObject.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSVariableObject.h @@ -48,8 +48,8 @@ namespace JSC { virtual void putWithAttributes(ExecState*, const Identifier&, JSValue, unsigned attributes) = 0; - virtual bool deleteProperty(ExecState*, const Identifier&); - virtual void getPropertyNames(ExecState*, PropertyNameArray&); + virtual bool deleteProperty(ExecState*, const Identifier&, bool checkDontDelete = true); + virtual void getPropertyNames(ExecState*, PropertyNameArray&, unsigned listedAttributes = Structure::Prototype); virtual bool isVariableObject() const; virtual bool isDynamicScope() const = 0; diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/NativeErrorPrototype.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/NativeErrorPrototype.cpp index 84190a0..650a0fd 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/NativeErrorPrototype.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/NativeErrorPrototype.cpp @@ -30,7 +30,11 @@ namespace JSC { ASSERT_CLASS_FITS_IN_CELL(NativeErrorPrototype); NativeErrorPrototype::NativeErrorPrototype(ExecState* exec, PassRefPtr<Structure> structure, const UString& name, const UString& message) +#ifdef QT_BUILD_SCRIPT_LIB + : ErrorInstance(structure) +#else : JSObject(structure) +#endif { putDirect(exec->propertyNames().name, jsString(exec, name), 0); putDirect(exec->propertyNames().message, jsString(exec, message), 0); diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/NativeErrorPrototype.h b/src/3rdparty/webkit/JavaScriptCore/runtime/NativeErrorPrototype.h index 77bfe8a..48a9d7e 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/NativeErrorPrototype.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/NativeErrorPrototype.h @@ -22,10 +22,19 @@ #define NativeErrorPrototype_h #include "JSObject.h" +#ifdef QT_BUILD_SCRIPT_LIB +#include "ErrorInstance.h" +#endif namespace JSC { - class NativeErrorPrototype : public JSObject { + class NativeErrorPrototype : +#ifdef QT_BUILD_SCRIPT_LIB //According to ECMAScript Specification 15.11.7, errors must have the "Error" class + public ErrorInstance +#else + public JSObject +#endif + { public: NativeErrorPrototype(ExecState*, PassRefPtr<Structure>, const UString& name, const UString& message); }; diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExp.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExp.cpp index 7dd4a8f..b366b58 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExp.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExp.cpp @@ -72,12 +72,35 @@ inline RegExp::RegExp(JSGlobalData* globalData, const UString& pattern, const US { // NOTE: The global flag is handled on a case-by-case basis by functions like // String::match and RegExpObject::match. +#ifndef QT_BUILD_SCRIPT_LIB if (flags.find('g') != -1) m_flagBits |= Global; if (flags.find('i') != -1) m_flagBits |= IgnoreCase; if (flags.find('m') != -1) m_flagBits |= Multiline; +#else //Invalid flags should throw a SyntaxError (ECMA Script 15.10.4.1) + static const char flagError[] = "invalid regular expression flag"; + for (int i = 0; i < flags.size(); i++) { + switch (flags.data()[i]) { + case 'g': + m_flagBits |= Global; + break; + case 'i': + m_flagBits |= IgnoreCase; + break; + case 'm': + m_flagBits |= Multiline; + break; + default: + m_constructionError = flagError; +#if !ENABLE(YARR) + m_regExp = 0; +#endif + return; + } + } +#endif compile(globalData); } diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpMatchesArray.h b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpMatchesArray.h index 9ae18b9..cbba85a 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpMatchesArray.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpMatchesArray.h @@ -58,25 +58,25 @@ namespace JSC { JSArray::put(exec, propertyName, v); } - virtual bool deleteProperty(ExecState* exec, const Identifier& propertyName) + virtual bool deleteProperty(ExecState* exec, const Identifier& propertyName, bool checkDontDelete = true) { if (lazyCreationData()) fillArrayInstance(exec); - return JSArray::deleteProperty(exec, propertyName); + return JSArray::deleteProperty(exec, propertyName, checkDontDelete); } - virtual bool deleteProperty(ExecState* exec, unsigned propertyName) + virtual bool deleteProperty(ExecState* exec, unsigned propertyName, bool checkDontDelete = true) { if (lazyCreationData()) fillArrayInstance(exec); - return JSArray::deleteProperty(exec, propertyName); + return JSArray::deleteProperty(exec, propertyName, checkDontDelete); } - virtual void getPropertyNames(ExecState* exec, PropertyNameArray& arr) + virtual void getPropertyNames(ExecState* exec, PropertyNameArray& arr, unsigned listedAttributes) { if (lazyCreationData()) fillArrayInstance(exec); - JSArray::getPropertyNames(exec, arr); + JSArray::getPropertyNames(exec, arr, listedAttributes); } void fillArrayInstance(ExecState*); diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpPrototype.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpPrototype.cpp index b1ab889..e507016 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpPrototype.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpPrototype.cpp @@ -106,6 +106,10 @@ JSValue JSC_HOST_CALL regExpProtoFuncToString(ExecState* exec, JSObject*, JSValu } UString result = "/" + asRegExpObject(thisValue)->get(exec, exec->propertyNames().source).toString(exec); +#ifdef QT_BUILD_SCRIPT_LIB + if (result.size() == 1) + result.append("(?:)"); +#endif result.append('/'); if (asRegExpObject(thisValue)->get(exec, exec->propertyNames().global).toBoolean(exec)) result.append('g'); diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.cpp index fb44498..4745a98 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.cpp @@ -68,19 +68,30 @@ void StringObject::put(ExecState* exec, const Identifier& propertyName, JSValue JSObject::put(exec, propertyName, value, slot); } -bool StringObject::deleteProperty(ExecState* exec, const Identifier& propertyName) +bool StringObject::deleteProperty(ExecState* exec, const Identifier& propertyName, bool checkDontDelete) { if (propertyName == exec->propertyNames().length) return false; - return JSObject::deleteProperty(exec, propertyName); + bool isStrictUInt32; + unsigned i = propertyName.toStrictUInt32(&isStrictUInt32); + if (isStrictUInt32 && internalValue()->canGetIndex(i)) + return false; + return JSObject::deleteProperty(exec, propertyName, checkDontDelete); } -void StringObject::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void StringObject::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { int size = internalValue()->value().size(); for (int i = 0; i < size; ++i) propertyNames.add(Identifier(exec, UString::from(i))); - return JSObject::getPropertyNames(exec, propertyNames); + return JSObject::getPropertyNames(exec, propertyNames, listedAttributes); +} + +bool StringObject::getPropertyAttributes(ExecState* exec, const Identifier& propertyName, unsigned& attributes) const +{ + if (internalValue()->getStringPropertyAttributes(exec, propertyName, attributes)) + return true; + return JSObject::getPropertyAttributes(exec, propertyName, attributes); } UString StringObject::toString(ExecState*) const diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.h b/src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.h index ea3a045..fdeb2c1 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.h @@ -37,8 +37,9 @@ namespace JSC { virtual bool getOwnPropertySlot(ExecState*, unsigned propertyName, PropertySlot&); virtual void put(ExecState* exec, const Identifier& propertyName, JSValue, PutPropertySlot&); - virtual bool deleteProperty(ExecState*, const Identifier& propertyName); - virtual void getPropertyNames(ExecState*, PropertyNameArray&); + virtual bool deleteProperty(ExecState*, const Identifier& propertyName, bool checkDontDelete = true); + virtual void getPropertyNames(ExecState*, PropertyNameArray&, unsigned listedAttributes = Structure::Prototype); + virtual bool getPropertyAttributes(ExecState*, const Identifier& propertyName, unsigned& attributes) const; virtual const ClassInfo* classInfo() const { return &info; } static const JS_EXPORTDATA ClassInfo info; diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.cpp index 5dfd919..9f6b0c3 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.cpp @@ -285,9 +285,9 @@ void Structure::materializePropertyMap() } } -void Structure::getEnumerablePropertyNames(ExecState* exec, PropertyNameArray& propertyNames, JSObject* baseObject) +void Structure::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, JSObject* baseObject, unsigned listedAttributes) { - bool shouldCache = propertyNames.shouldCache() && !(propertyNames.size() || m_isDictionary); + bool shouldCache = propertyNames.shouldCache() && !(propertyNames.size() || m_isDictionary) && (listedAttributes & Prototype); if (shouldCache && m_cachedPropertyNameArrayData) { if (m_cachedPropertyNameArrayData->cachedPrototypeChain() == prototypeChain(exec)) { @@ -296,11 +296,13 @@ void Structure::getEnumerablePropertyNames(ExecState* exec, PropertyNameArray& p } clearEnumerationCache(); } + bool includeNonEnumerable = false; + if (listedAttributes & NonEnumerable) + includeNonEnumerable = true; + getNamesFromPropertyTable(propertyNames, includeNonEnumerable); + getNamesFromClassInfoTable(exec, baseObject->classInfo(), propertyNames, includeNonEnumerable); - getEnumerableNamesFromPropertyTable(propertyNames); - getEnumerableNamesFromClassInfoTable(exec, baseObject->classInfo(), propertyNames); - - if (m_prototype.isObject()) { + if ((listedAttributes & Prototype) && m_prototype.isObject()) { propertyNames.setShouldCache(false); // No need for our prototypes to waste memory on caching, since they're not being enumerated directly. asObject(m_prototype)->getPropertyNames(exec, propertyNames); } @@ -1008,7 +1010,7 @@ static int comparePropertyMapEntryIndices(const void* a, const void* b) return 0; } -void Structure::getEnumerableNamesFromPropertyTable(PropertyNameArray& propertyNames) +void Structure::getNamesFromPropertyTable(PropertyNameArray& propertyNames, bool includeNonEnumerable) { materializePropertyMapIfNecessary(); if (!m_propertyTable) @@ -1019,7 +1021,8 @@ void Structure::getEnumerableNamesFromPropertyTable(PropertyNameArray& propertyN int i = 0; unsigned entryCount = m_propertyTable->keyCount + m_propertyTable->deletedSentinelCount; for (unsigned k = 1; k <= entryCount; k++) { - if (m_propertyTable->entries()[k].key && !(m_propertyTable->entries()[k].attributes & DontEnum)) { + if (m_propertyTable->entries()[k].key + && (includeNonEnumerable || !(m_propertyTable->entries()[k].attributes & DontEnum))) { PropertyMapEntry* value = &m_propertyTable->entries()[k]; int j; for (j = i - 1; j >= 0 && a[j]->index > value->index; --j) @@ -1046,7 +1049,8 @@ void Structure::getEnumerableNamesFromPropertyTable(PropertyNameArray& propertyN PropertyMapEntry** p = sortedEnumerables.data(); unsigned entryCount = m_propertyTable->keyCount + m_propertyTable->deletedSentinelCount; for (unsigned i = 1; i <= entryCount; i++) { - if (m_propertyTable->entries()[i].key && !(m_propertyTable->entries()[i].attributes & DontEnum)) + if (m_propertyTable->entries()[i].key + && (includeNonEnumerable || !(m_propertyTable->entries()[i].attributes & DontEnum))) *p++ = &m_propertyTable->entries()[i]; } @@ -1065,7 +1069,7 @@ void Structure::getEnumerableNamesFromPropertyTable(PropertyNameArray& propertyN } } -void Structure::getEnumerableNamesFromClassInfoTable(ExecState* exec, const ClassInfo* classInfo, PropertyNameArray& propertyNames) +void Structure::getNamesFromClassInfoTable(ExecState* exec, const ClassInfo* classInfo, PropertyNameArray& propertyNames, bool includeNonEnumerable) { // Add properties from the static hashtables of properties for (; classInfo; classInfo = classInfo->parentClass) { @@ -1078,7 +1082,7 @@ void Structure::getEnumerableNamesFromClassInfoTable(ExecState* exec, const Clas int hashSizeMask = table->compactSize - 1; const HashEntry* entry = table->table; for (int i = 0; i <= hashSizeMask; ++i, ++entry) { - if (entry->key() && !(entry->attributes() & DontEnum)) + if (entry->key() && (includeNonEnumerable || !(entry->attributes() & DontEnum))) propertyNames.add(entry->key()); } } diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.h b/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.h index 866999d..0de03a3 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.h @@ -50,6 +50,11 @@ namespace JSC { class Structure : public RefCounted<Structure> { public: + enum ListedAttribute { + NonEnumerable = 1 << 1, + Prototype = 1 << 2 + }; + friend class JIT; static PassRefPtr<Structure> create(JSValue prototype, const TypeInfo& typeInfo) { @@ -106,7 +111,7 @@ namespace JSC { return get(propertyName._ustring.rep(), attributes, specificValue); } - void getEnumerablePropertyNames(ExecState*, PropertyNameArray&, JSObject*); + void getPropertyNames(ExecState*, PropertyNameArray&, JSObject*, unsigned listedAttributes = Prototype); bool hasGetterSetterProperties() const { return m_hasGetterSetterProperties; } void setHasGetterSetterProperties(bool hasGetterSetterProperties) { m_hasGetterSetterProperties = hasGetterSetterProperties; } @@ -121,8 +126,8 @@ namespace JSC { size_t put(const Identifier& propertyName, unsigned attributes, JSCell* specificValue); size_t remove(const Identifier& propertyName); - void getEnumerableNamesFromPropertyTable(PropertyNameArray&); - void getEnumerableNamesFromClassInfoTable(ExecState*, const ClassInfo*, PropertyNameArray&); + void getNamesFromPropertyTable(PropertyNameArray&, bool includeNonEnumerable = false); + void getNamesFromClassInfoTable(ExecState*, const ClassInfo*, PropertyNameArray&, bool includeNonEnumerable = false); void expandPropertyMapHashTable(); void rehashPropertyMapHashTable(); diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.cpp index 30ba6e9..045a33a 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.cpp @@ -56,8 +56,8 @@ namespace JSC { // Number of ticks before the first timeout check is done. static const int ticksUntilFirstCheck = 1024; -// Number of milliseconds between each timeout check. -static const int intervalBetweenChecks = 1000; +// Default number of milliseconds between each timeout check. +static const int defaultIntervalBetweenChecks = 1000; // Returns the time the current thread has spent executing, in milliseconds. static inline unsigned getCPUTime() @@ -104,10 +104,15 @@ static inline unsigned getCPUTime() TimeoutChecker::TimeoutChecker() : m_timeoutInterval(0) , m_startCount(0) + , m_intervalBetweenChecks(defaultIntervalBetweenChecks) { reset(); } +TimeoutChecker::~TimeoutChecker() +{ +} + void TimeoutChecker::reset() { m_ticksUntilNextCheck = ticksUntilFirstCheck; @@ -135,7 +140,7 @@ bool TimeoutChecker::didTimeOut(ExecState* exec) // Adjust the tick threshold so we get the next checkTimeout call in the // interval specified in intervalBetweenChecks. - m_ticksUntilNextCheck = static_cast<unsigned>((static_cast<float>(intervalBetweenChecks) / timeDiff) * m_ticksUntilNextCheck); + m_ticksUntilNextCheck = static_cast<unsigned>((static_cast<float>(m_intervalBetweenChecks) / timeDiff) * m_ticksUntilNextCheck); // If the new threshold is 0 reset it to the default threshold. This can happen if the timeDiff is higher than the // preferred script check time interval. if (m_ticksUntilNextCheck == 0) diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.h b/src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.h index 7bfa6d0..1680d6d 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.h @@ -38,8 +38,10 @@ namespace JSC { class TimeoutChecker { public: TimeoutChecker(); + virtual ~TimeoutChecker(); void setTimeoutInterval(unsigned timeoutInterval) { m_timeoutInterval = timeoutInterval; } + void setCheckInterval(unsigned checkInterval) { if (checkInterval) m_intervalBetweenChecks = checkInterval; } unsigned ticksUntilNextCheck() { return m_ticksUntilNextCheck; } @@ -58,7 +60,7 @@ namespace JSC { void reset(); - bool didTimeOut(ExecState*); + virtual bool didTimeOut(ExecState*); private: unsigned m_timeoutInterval; @@ -66,6 +68,7 @@ namespace JSC { unsigned m_timeExecuting; unsigned m_startCount; unsigned m_ticksUntilNextCheck; + unsigned m_intervalBetweenChecks; }; } // namespace JSC diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/UString.h b/src/3rdparty/webkit/JavaScriptCore/runtime/UString.h index f2572a9..0a53c50 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/UString.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/UString.h @@ -77,6 +77,7 @@ namespace JSC { friend class JIT; public: + typedef CrossThreadRefCounted<OwnFastMallocPtr<UChar> > SharedUChar; struct BaseString; struct Rep : Noncopyable { @@ -364,6 +365,19 @@ namespace JSC { return m_rep->reserveCapacity(capacity); } +#if PLATFORM(QT) + operator QString() const + { + return QString(reinterpret_cast<const QChar*>(this->data()), this->size()); + } + + UString(const QString& str) + { + *this = JSC::UString(reinterpret_cast<const UChar*>(str.constData()), str.length()); + } +#endif + + private: void expandCapacity(int requiredLength); void expandPreCapacity(int requiredPreCap); @@ -531,6 +545,20 @@ namespace JSC { return capacityDelta; } +#if PLATFORM(QT) + + inline UString operator+(const char* s1, const UString& s2) + { + return operator+(UString(s1), s2); + } + + inline UString operator+(const UString& s1, const char* s2) + { + return operator+(s1, UString(s2)); + } + +#endif + struct IdentifierRepHash : PtrHash<RefPtr<JSC::UString::Rep> > { static unsigned hash(const RefPtr<JSC::UString::Rep>& key) { return key->computedHash(); } static unsigned hash(JSC::UString::Rep* key) { return key->computedHash(); } diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.cpp index 819ed9a..54daf23 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.cpp @@ -72,7 +72,10 @@ static void vprintf_stderr_common(const char* format, va_list args) CFRelease(cfFormat); } else #elif COMPILER(MSVC) && !defined(WINCEBASIC) - if (IsDebuggerPresent()) { +# if !defined(_WIN32_WCE) || (_WIN32_WCE >= 0x600) + if (IsDebuggerPresent()) +# endif + { size_t size = 1024; do { diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.h b/src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.h index 59efd84..1be7455 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.h +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.h @@ -144,7 +144,11 @@ void WTFLogVerbose(const char* file, int line, const char* function, WTFLogChann #if ASSERT_DISABLED #define ASSERT(assertion) ((void)0) +#if COMPILER(MSVC7) +#define ASSERT_WITH_MESSAGE(assertion) ((void)0) +#else #define ASSERT_WITH_MESSAGE(assertion, ...) ((void)0) +#endif /* COMPILER(MSVC7) */ #define ASSERT_NOT_REACHED() ((void)0) #define ASSERT_UNUSED(variable, assertion) ((void)variable) @@ -199,7 +203,7 @@ while (0) /* FATAL */ -#if FATAL_DISABLED +#if FATAL_DISABLED && !COMPILER(MSVC7) #define FATAL(...) ((void)0) #elif COMPILER(MSVC7) #define FATAL() ((void)0) @@ -212,7 +216,7 @@ while (0) /* LOG_ERROR */ -#if ERROR_DISABLED +#if ERROR_DISABLED && !COMPILER(MSVC7) #define LOG_ERROR(...) ((void)0) #elif COMPILER(MSVC7) #define LOG_ERROR() ((void)0) @@ -222,7 +226,7 @@ while (0) /* LOG */ -#if LOG_DISABLED +#if LOG_DISABLED && !COMPILER(MSVC7) #define LOG(channel, ...) ((void)0) #elif COMPILER(MSVC7) #define LOG() ((void)0) @@ -234,7 +238,7 @@ while (0) /* LOG_VERBOSE */ -#if LOG_DISABLED +#if LOG_DISABLED && !COMPILER(MSVC7) #define LOG_VERBOSE(channel, ...) ((void)0) #elif COMPILER(MSVC7) #define LOG_VERBOSE(channel) ((void)0) diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h b/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h index c7a5be9..e531a63 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h @@ -94,6 +94,20 @@ #define WTF_PLATFORM_SOLARIS 1 #endif +/* PLATFORM(AIX) */ +/* Operating system level dependencies for AIX that should be used */ +/* regardless of operating environment */ +#if defined(_AIX) +#define WTF_PLATFORM_AIX 1 +#endif + +/* PLATFORM(HPUX) */ +/* Operating system level dependencies for HP-UX that should be used */ +/* regardless of operating environment */ +#if defined(hpux) || defined(__hpux) +#define WTF_PLATFORM_HPUX 1 +#endif + #if defined (__SYMBIAN32__) /* we are cross-compiling, it is not really windows */ #undef WTF_PLATFORM_WIN_OS @@ -123,10 +137,12 @@ || PLATFORM(FREEBSD) \ || PLATFORM(SYMBIAN) \ || PLATFORM(NETBSD) \ + || PLATFORM(SOLARIS) \ + || PLATFORM(HPUX) \ || defined(unix) \ || defined(__unix) \ || defined(__unix__) \ - || defined(_AIX) \ + || PLATFORM(AIX) \ || defined(__QNXNTO__) #define WTF_PLATFORM_UNIX 1 #endif @@ -343,6 +359,24 @@ #define WTF_COMPILER_WINSCW 1 #endif +/* COMPILER(SUNCC) */ +/* This is the Sun CC compiler, also known as Sun Studio or Sun Pro */ +#if defined(__SUNPRO_CC) || defined(__SUNPRO_C) +#define WTF_COMPILER_SUNCC 1 +#endif + +/* COMPILER(XLC) */ +/* IBM Visual Age C/C++ compiler, a.k.a. xlC */ +#if defined(__xlC__) +#define WTF_COMPILER_XLC 1 +#endif + +/* COMPILER(ACC) */ +/* HP's aC++/ANSI C compiler, a.k.a. aCC */ +#if defined(__HP_aCC) +#define WTF_COMPILER_ACC +#endif + #if (PLATFORM(IPHONE) || PLATFORM(MAC) || PLATFORM(WIN)) && !defined(ENABLE_JSC_MULTIPLE_THREADS) #define ENABLE_JSC_MULTIPLE_THREADS 1 #endif diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/Vector.h b/src/3rdparty/webkit/JavaScriptCore/wtf/Vector.h index 7cba4e4..bff770c 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/Vector.h +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/Vector.h @@ -45,7 +45,7 @@ namespace WTF { #define WTF_ALIGN_OF(type) __alignof(type) #define WTF_ALIGNED(variable_type, variable, n) __declspec(align(n)) variable_type variable #else - #error WTF_ALIGN macros need alignment control. + #define WTF_ALIGN_OF(type) 0 #endif #if COMPILER(GCC) && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 303) @@ -54,6 +54,7 @@ namespace WTF { typedef char AlignedBufferChar; #endif + #ifdef WTF_ALIGNED template <size_t size, size_t alignment> struct AlignedBuffer; template <size_t size> struct AlignedBuffer<size, 1> { AlignedBufferChar buffer[size]; }; template <size_t size> struct AlignedBuffer<size, 2> { WTF_ALIGNED(AlignedBufferChar, buffer[size], 2); }; @@ -62,6 +63,17 @@ namespace WTF { template <size_t size> struct AlignedBuffer<size, 16> { WTF_ALIGNED(AlignedBufferChar, buffer[size], 16); }; template <size_t size> struct AlignedBuffer<size, 32> { WTF_ALIGNED(AlignedBufferChar, buffer[size], 32); }; template <size_t size> struct AlignedBuffer<size, 64> { WTF_ALIGNED(AlignedBufferChar, buffer[size], 64); }; + #else + template <size_t size, size_t> struct AlignedBuffer + { + AlignedBufferChar oversizebuffer[size + 64]; + AlignedBufferChar *buffer; + inline AlignedBuffer() : buffer(oversizebuffer) + { + buffer += 64 - (reinterpret_cast<size_t>(buffer) & 0x3f); + } + }; + #endif template <bool needsDestruction, typename T> class VectorDestructor; diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSClipboardCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSClipboardCustom.cpp index 78dca49..73946c8 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSClipboardCustom.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSClipboardCustom.cpp @@ -59,7 +59,7 @@ JSValue JSClipboard::types(ExecState* exec) const MarkedArgumentBuffer list; HashSet<String>::const_iterator end = types.end(); for (HashSet<String>::const_iterator it = types.begin(); it != end; ++it) - list.append(jsString(exec, UString(*it))); + list.append(jsString(exec, it->operator UString())); return constructArray(exec, list); } diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.cpp index 6abed99..e28fd8f 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.cpp @@ -72,9 +72,9 @@ void JSCustomPositionCallback::handleEvent(Geoposition* geoposition, bool& raise MarkedArgumentBuffer args; args.append(toJS(exec, deprecatedGlobalObjectForPrototype(exec), geoposition)); - globalObject->globalData()->timeoutChecker.start(); + globalObject->globalData()->timeoutChecker->start(); call(exec, function, callType, callData, m_callback, args); - globalObject->globalData()->timeoutChecker.stop(); + globalObject->globalData()->timeoutChecker->stop(); if (exec->hadException()) { reportCurrentException(exec); diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionErrorCallback.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionErrorCallback.cpp index cda5738..dbe46e2 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionErrorCallback.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionErrorCallback.cpp @@ -72,9 +72,9 @@ void JSCustomPositionErrorCallback::handleEvent(PositionError* positionError) MarkedArgumentBuffer args; args.append(toJS(exec, deprecatedGlobalObjectForPrototype(exec), positionError)); - globalObject->globalData()->timeoutChecker.start(); + globalObject->globalData()->timeoutChecker->start(); call(exec, function, callType, callData, m_callback, args); - globalObject->globalData()->timeoutChecker.stop(); + globalObject->globalData()->timeoutChecker->stop(); if (exec->hadException()) reportCurrentException(exec); diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementCallback.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementCallback.cpp index d0943de..a2b5c83 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementCallback.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementCallback.cpp @@ -78,9 +78,9 @@ void JSCustomSQLStatementCallback::handleEvent(SQLTransaction* transaction, SQLR args.append(toJS(exec, deprecatedGlobalObjectForPrototype(exec), transaction)); args.append(toJS(exec, deprecatedGlobalObjectForPrototype(exec), resultSet)); - globalObject->globalData()->timeoutChecker.start(); + globalObject->globalData()->timeoutChecker->start(); call(exec, function, callType, callData, m_callback, args); - globalObject->globalData()->timeoutChecker.stop(); + globalObject->globalData()->timeoutChecker->stop(); if (exec->hadException()) { reportCurrentException(exec); diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp index 6c831ac..c7c467f 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp @@ -82,12 +82,12 @@ bool JSCustomSQLStatementErrorCallback::handleEvent(SQLTransaction* transaction, args.append(toJS(exec, deprecatedGlobalObjectForPrototype(exec), error)); JSValue result; - globalObject->globalData()->timeoutChecker.start(); + globalObject->globalData()->timeoutChecker->start(); if (handleEventCallType != CallTypeNone) result = call(exec, handleEventFunction, handleEventCallType, handleEventCallData, m_callback, args); else result = call(exec, m_callback, callbackCallType, callbackCallData, m_callback, args); - globalObject->globalData()->timeoutChecker.stop(); + globalObject->globalData()->timeoutChecker->stop(); if (exec->hadException()) { reportCurrentException(exec); diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionCallback.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionCallback.cpp index 3d42f81..ca7f069 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionCallback.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionCallback.cpp @@ -120,12 +120,12 @@ void JSCustomSQLTransactionCallback::handleEvent(SQLTransaction* transaction, bo MarkedArgumentBuffer args; args.append(toJS(exec, deprecatedGlobalObjectForPrototype(exec), transaction)); - globalObject->globalData()->timeoutChecker.start(); + globalObject->globalData()->timeoutChecker->start(); if (handleEventCallType != CallTypeNone) call(exec, handleEventFunction, handleEventCallType, handleEventCallData, m_data->callback(), args); else call(exec, m_data->callback(), callbackCallType, callbackCallData, m_data->callback(), args); - globalObject->globalData()->timeoutChecker.stop(); + globalObject->globalData()->timeoutChecker->stop(); if (exec->hadException()) { reportCurrentException(exec); diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp index 2d41bb8..1c6de7f 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp @@ -77,9 +77,9 @@ void JSCustomSQLTransactionErrorCallback::handleEvent(SQLError* error) MarkedArgumentBuffer args; args.append(toJS(exec, deprecatedGlobalObjectForPrototype(exec), error)); - globalObject->globalData()->timeoutChecker.start(); + globalObject->globalData()->timeoutChecker->start(); call(exec, function, callType, callData, m_callback, args); - globalObject->globalData()->timeoutChecker.stop(); + globalObject->globalData()->timeoutChecker->stop(); if (exec->hadException()) reportCurrentException(exec); diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.cpp index b4e525b..2273ff0 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.cpp @@ -73,9 +73,9 @@ void JSCustomVoidCallback::handleEvent() MarkedArgumentBuffer args; - globalObject->globalData()->timeoutChecker.start(); + globalObject->globalData()->timeoutChecker->start(); call(exec, function, callType, callData, m_callback, args); - globalObject->globalData()->timeoutChecker.stop(); + globalObject->globalData()->timeoutChecker->stop(); if (exec->hadException()) reportCurrentException(exec); diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.cpp index 4476be5..55e6481 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.cpp @@ -95,9 +95,9 @@ String JSCustomXPathNSResolver::lookupNamespaceURI(const String& prefix) MarkedArgumentBuffer args; args.append(jsString(exec, prefix)); - globalObject->globalData()->timeoutChecker.start(); + globalObject->globalData()->timeoutChecker->start(); JSValue retval = call(exec, function, callType, callData, m_customResolver, args); - globalObject->globalData()->timeoutChecker.stop(); + globalObject->globalData()->timeoutChecker->stop(); String result; if (exec->hadException()) diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.cpp index df6068a..cf81f54 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.cpp @@ -166,7 +166,7 @@ JSGlobalData* JSDOMWindowBase::commonJSGlobalData() static JSGlobalData* globalData; if (!globalData) { globalData = JSGlobalData::createLeaked().releaseRef(); - globalData->timeoutChecker.setTimeoutInterval(10000); // 10 seconds + globalData->timeoutChecker->setTimeoutInterval(10000); // 10 seconds } return globalData; diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.cpp index 33ac7bb..93eae74 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.cpp @@ -290,20 +290,20 @@ void JSDOMWindow::put(ExecState* exec, const Identifier& propertyName, JSValue v Base::put(exec, propertyName, value, slot); } -bool JSDOMWindow::deleteProperty(ExecState* exec, const Identifier& propertyName) +bool JSDOMWindow::deleteProperty(ExecState* exec, const Identifier& propertyName, bool checkDontDelete) { // Only allow deleting properties by frames in the same origin. if (!allowsAccessFrom(exec)) return false; - return Base::deleteProperty(exec, propertyName); + return Base::deleteProperty(exec, propertyName, checkDontDelete); } -void JSDOMWindow::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSDOMWindow::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { // Only allow the window to enumerated by frames in the same origin. if (!allowsAccessFrom(exec)) return; - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } bool JSDOMWindow::getPropertyAttributes(ExecState* exec, const Identifier& propertyName, unsigned& attributes) const diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.cpp index 1bf478b..ec31721 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.cpp @@ -98,14 +98,14 @@ void JSDOMWindowShell::putWithAttributes(ExecState* exec, const Identifier& prop m_window->putWithAttributes(exec, propertyName, value, attributes); } -bool JSDOMWindowShell::deleteProperty(ExecState* exec, const Identifier& propertyName) +bool JSDOMWindowShell::deleteProperty(ExecState* exec, const Identifier& propertyName, bool checkDontDelete) { - return m_window->deleteProperty(exec, propertyName); + return m_window->deleteProperty(exec, propertyName, checkDontDelete); } -void JSDOMWindowShell::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSDOMWindowShell::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { - m_window->getPropertyNames(exec, propertyNames); + m_window->getPropertyNames(exec, propertyNames, listedAttributes); } bool JSDOMWindowShell::getPropertyAttributes(JSC::ExecState* exec, const Identifier& propertyName, unsigned& attributes) const diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.h b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.h index 6f21892..87b63fc 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.h +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.h @@ -69,8 +69,8 @@ namespace WebCore { virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&); virtual void put(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValue, JSC::PutPropertySlot&); virtual void putWithAttributes(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValue, unsigned attributes); - virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier& propertyName); - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier& propertyName, bool checkDontDelete = true); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); virtual bool getPropertyAttributes(JSC::ExecState*, const JSC::Identifier& propertyName, unsigned& attributes) const; virtual void defineGetter(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* getterFunction); virtual void defineSetter(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* setterFunction); diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSEventListener.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSEventListener.cpp index a659d3e..c7797be 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSEventListener.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSEventListener.cpp @@ -121,7 +121,7 @@ void JSEventListener::handleEvent(Event* event, bool isWindowEvent) JSValue retval; if (handleEventFunction) { - globalObject->globalData()->timeoutChecker.start(); + globalObject->globalData()->timeoutChecker->start(); retval = call(exec, handleEventFunction, callType, callData, jsFunction, args); } else { JSValue thisValue; @@ -129,10 +129,10 @@ void JSEventListener::handleEvent(Event* event, bool isWindowEvent) thisValue = globalObject->toThisObject(exec); else thisValue = toJS(exec, globalObject, event->currentTarget()); - globalObject->globalData()->timeoutChecker.start(); + globalObject->globalData()->timeoutChecker->start(); retval = call(exec, jsFunction, callType, callData, thisValue, args); } - globalObject->globalData()->timeoutChecker.stop(); + globalObject->globalData()->timeoutChecker->stop(); globalObject->setCurrentEvent(savedEvent); @@ -187,9 +187,9 @@ bool JSEventListener::reportError(const String& message, const String& url, int JSValue thisValue = globalObject->toThisObject(exec); - globalObject->globalData()->timeoutChecker.start(); + globalObject->globalData()->timeoutChecker->start(); JSValue returnValue = call(exec, jsFunction, callType, callData, thisValue, args); - globalObject->globalData()->timeoutChecker.stop(); + globalObject->globalData()->timeoutChecker->stop(); // If an error occurs while handling the script error, it should be bubbled up. if (exec->hadException()) { diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHistoryCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSHistoryCustom.cpp index a3b15e1..86b7df7 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSHistoryCustom.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHistoryCustom.cpp @@ -100,20 +100,20 @@ bool JSHistory::putDelegate(ExecState* exec, const Identifier&, JSValue, PutProp return false; } -bool JSHistory::deleteProperty(ExecState* exec, const Identifier& propertyName) +bool JSHistory::deleteProperty(ExecState* exec, const Identifier& propertyName, bool checkDontDelete) { // Only allow deleting by frames in the same origin. if (!allowsAccessFromFrame(exec, impl()->frame())) return false; - return Base::deleteProperty(exec, propertyName); + return Base::deleteProperty(exec, propertyName, checkDontDelete); } -void JSHistory::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSHistory::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { // Only allow the history object to enumerated by frames in the same origin. if (!allowsAccessFromFrame(exec, impl()->frame())) return; - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } } // namespace WebCore diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSLazyEventListener.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSLazyEventListener.cpp index 7caff2b..f4758e4 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSLazyEventListener.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSLazyEventListener.cpp @@ -97,7 +97,7 @@ void JSLazyEventListener::parseCode() const ExecState* exec = m_globalObject->globalExec(); MarkedArgumentBuffer args; - UString sourceURL(executionContext->url().string()); + UString sourceURL(executionContext->url().string().operator UString()); args.append(jsNontrivialString(exec, m_eventParameterName)); args.append(jsString(exec, m_code)); diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSLocationCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSLocationCustom.cpp index e4f1653..4fcf548 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSLocationCustom.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSLocationCustom.cpp @@ -120,20 +120,20 @@ bool JSLocation::putDelegate(ExecState* exec, const Identifier& propertyName, JS return false; } -bool JSLocation::deleteProperty(ExecState* exec, const Identifier& propertyName) +bool JSLocation::deleteProperty(ExecState* exec, const Identifier& propertyName, bool checkDontDelete) { // Only allow deleting by frames in the same origin. if (!allowsAccessFromFrame(exec, impl()->frame())) return false; - return Base::deleteProperty(exec, propertyName); + return Base::deleteProperty(exec, propertyName, checkDontDelete); } -void JSLocation::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSLocation::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { // Only allow the location object to enumerated by frames in the same origin. if (!allowsAccessFromFrame(exec, impl()->frame())) return; - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } void JSLocation::defineGetter(ExecState* exec, const Identifier& propertyName, JSObject* getterFunction) diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSQuarantinedObjectWrapper.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSQuarantinedObjectWrapper.cpp index ad1e556..3ca0dd4 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSQuarantinedObjectWrapper.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSQuarantinedObjectWrapper.cpp @@ -160,12 +160,12 @@ void JSQuarantinedObjectWrapper::put(ExecState* exec, unsigned identifier, JSVal transferExceptionToExecState(exec); } -bool JSQuarantinedObjectWrapper::deleteProperty(ExecState* exec, const Identifier& identifier) +bool JSQuarantinedObjectWrapper::deleteProperty(ExecState* exec, const Identifier& identifier, bool checkDontDelete) { if (!allowsDeleteProperty()) return false; - bool result = m_unwrappedObject->deleteProperty(unwrappedExecState(), identifier); + bool result = m_unwrappedObject->deleteProperty(unwrappedExecState(), identifier, checkDontDelete); transferExceptionToExecState(exec); @@ -268,12 +268,12 @@ CallType JSQuarantinedObjectWrapper::getCallData(CallData& callData) return CallTypeHost; } -void JSQuarantinedObjectWrapper::getPropertyNames(ExecState*, PropertyNameArray& array) +void JSQuarantinedObjectWrapper::getPropertyNames(ExecState*, PropertyNameArray& array, unsigned listedAttributes) { if (!allowsGetPropertyNames()) return; - m_unwrappedObject->getPropertyNames(unwrappedExecState(), array); + m_unwrappedObject->getPropertyNames(unwrappedExecState(), array, listedAttributes); } } // namespace WebCore diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSQuarantinedObjectWrapper.h b/src/3rdparty/webkit/WebCore/bindings/js/JSQuarantinedObjectWrapper.h index bf8fddb..95e42f6 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSQuarantinedObjectWrapper.h +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSQuarantinedObjectWrapper.h @@ -62,7 +62,7 @@ namespace WebCore { virtual void put(JSC::ExecState*, const JSC::Identifier&, JSC::JSValue, JSC::PutPropertySlot&); virtual void put(JSC::ExecState*, unsigned, JSC::JSValue); - virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier&); + virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier&, bool checkDontDelete = true); virtual bool deleteProperty(JSC::ExecState*, unsigned); virtual JSC::CallType getCallData(JSC::CallData&); @@ -70,7 +70,7 @@ namespace WebCore { virtual bool hasInstance(JSC::ExecState*, JSC::JSValue, JSC::JSValue proto); - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); virtual JSC::UString className() const { return m_unwrappedObject->className(); } diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSStorageCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSStorageCustom.cpp index 2d2d0f8..4af5ddd 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSStorageCustom.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSStorageCustom.cpp @@ -47,7 +47,7 @@ JSValue JSStorage::nameGetter(ExecState* exec, const Identifier& propertyName, c return jsStringOrNull(exec, thisObj->impl()->getItem(propertyName)); } -bool JSStorage::deleteProperty(ExecState* exec, const Identifier& propertyName) +bool JSStorage::deleteProperty(ExecState* exec, const Identifier& propertyName, bool /*checkDontDelete*/) { // Only perform the custom delete if the object doesn't have a native property by this name. // Since hasProperty() would end up calling canGetItemsForName() and be fooled, we need to check @@ -64,14 +64,14 @@ bool JSStorage::deleteProperty(ExecState* exec, const Identifier& propertyName) return true; } -void JSStorage::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSStorage::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { ExceptionCode ec; unsigned length = m_impl->length(); for (unsigned i = 0; i < length; ++i) propertyNames.add(Identifier(exec, m_impl->key(i, ec))); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } bool JSStorage::putDelegate(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot&) diff --git a/src/3rdparty/webkit/WebCore/bindings/js/ScheduledAction.cpp b/src/3rdparty/webkit/WebCore/bindings/js/ScheduledAction.cpp index 9e64bce..28cbe60 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/ScheduledAction.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/ScheduledAction.cpp @@ -101,9 +101,9 @@ void ScheduledAction::executeFunctionInContext(JSGlobalObject* globalObject, JSV for (size_t i = 0; i < size; ++i) args.append(m_args[i]); - globalObject->globalData()->timeoutChecker.start(); + globalObject->globalData()->timeoutChecker->start(); call(exec, m_function, callType, callData, thisValue, args); - globalObject->globalData()->timeoutChecker.stop(); + globalObject->globalData()->timeoutChecker->stop(); if (exec->hadException()) reportCurrentException(exec); diff --git a/src/3rdparty/webkit/WebCore/bindings/js/ScriptController.cpp b/src/3rdparty/webkit/WebCore/bindings/js/ScriptController.cpp index a1c4376..2abe5b0 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/ScriptController.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/ScriptController.cpp @@ -110,9 +110,9 @@ ScriptValue ScriptController::evaluate(const ScriptSourceCode& sourceCode) RefPtr<Frame> protect = m_frame; - m_windowShell->window()->globalData()->timeoutChecker.start(); + m_windowShell->window()->globalData()->timeoutChecker->start(); Completion comp = JSC::evaluate(exec, exec->dynamicGlobalObject()->globalScopeChain(), jsSourceCode, m_windowShell); - m_windowShell->window()->globalData()->timeoutChecker.stop(); + m_windowShell->window()->globalData()->timeoutChecker->stop(); // Evaluating the JavaScript could cause the frame to be deallocated // so we start the keep alive timer here. diff --git a/src/3rdparty/webkit/WebCore/bindings/js/WorkerScriptController.cpp b/src/3rdparty/webkit/WebCore/bindings/js/WorkerScriptController.cpp index fc3de3c..1b8eed6 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/WorkerScriptController.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/WorkerScriptController.cpp @@ -109,9 +109,9 @@ ScriptValue WorkerScriptController::evaluate(const ScriptSourceCode& sourceCode, JSLock lock(SilenceAssertionsOnly); ExecState* exec = m_workerContextWrapper->globalExec(); - m_workerContextWrapper->globalData()->timeoutChecker.start(); + m_workerContextWrapper->globalData()->timeoutChecker->start(); Completion comp = JSC::evaluate(exec, exec->dynamicGlobalObject()->globalScopeChain(), sourceCode.jsSourceCode(), m_workerContextWrapper); - m_workerContextWrapper->globalData()->timeoutChecker.stop(); + m_workerContextWrapper->globalData()->timeoutChecker->stop(); m_workerContext->thread()->workerObjectProxy().reportPendingActivity(m_workerContext->hasPendingActivity()); @@ -136,7 +136,7 @@ void WorkerScriptController::forbidExecution() // It is not critical for Interpreter::m_timeoutTime to be synchronized, we just rely on it reaching the worker thread's processor sooner or later. MutexLocker lock(m_sharedDataMutex); m_executionForbidden = true; - m_globalData->timeoutChecker.setTimeoutInterval(1); // 1ms is the smallest timeout that can be set. + m_globalData->timeoutChecker->setTimeoutInterval(1); // 1ms is the smallest timeout that can be set. } } // namespace WebCore diff --git a/src/3rdparty/webkit/WebCore/bindings/scripts/CodeGeneratorJS.pm b/src/3rdparty/webkit/WebCore/bindings/scripts/CodeGeneratorJS.pm index 26cf3f5..5885543 100644 --- a/src/3rdparty/webkit/WebCore/bindings/scripts/CodeGeneratorJS.pm +++ b/src/3rdparty/webkit/WebCore/bindings/scripts/CodeGeneratorJS.pm @@ -513,10 +513,10 @@ sub GenerateHeader push(@headerContent, " virtual JSC::CallType getCallData(JSC::CallData&);\n\n") if $dataNode->extendedAttributes->{"CustomCall"}; # Custom deleteProperty function - push(@headerContent, " virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier&);\n") if $dataNode->extendedAttributes->{"CustomDeleteProperty"}; + push(@headerContent, " virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier&, bool checkDontDelete = true);\n") if $dataNode->extendedAttributes->{"CustomDeleteProperty"}; # Custom getPropertyNames function - push(@headerContent, " virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&);\n") if ($dataNode->extendedAttributes->{"CustomGetPropertyNames"} || $dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"HasCustomIndexGetter"}); + push(@headerContent, " virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = Structure::Prototype);\n") if ($dataNode->extendedAttributes->{"CustomGetPropertyNames"} || $dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"HasCustomIndexGetter"}); # Custom getPropertyAttributes function push(@headerContent, " virtual bool getPropertyAttributes(JSC::ExecState*, const JSC::Identifier&, unsigned& attributes) const;\n") if $dataNode->extendedAttributes->{"CustomGetPropertyAttributes"}; @@ -1334,13 +1334,13 @@ sub GenerateImplementation } if (($dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"HasCustomIndexGetter"}) && !$dataNode->extendedAttributes->{"CustomGetPropertyNames"}) { - push(@implContent, "void ${className}::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames)\n"); + push(@implContent, "void ${className}::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes)\n"); push(@implContent, "{\n"); if ($dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"HasCustomIndexGetter"}) { push(@implContent, " for (unsigned i = 0; i < static_cast<${implClassName}*>(impl())->length(); ++i)\n"); push(@implContent, " propertyNames.add(Identifier::from(exec, i));\n"); } - push(@implContent, " Base::getPropertyNames(exec, propertyNames);\n"); + push(@implContent, " Base::getPropertyNames(exec, propertyNames, listedAttributes);\n"); push(@implContent, "}\n\n"); } diff --git a/src/3rdparty/webkit/WebCore/bridge/NP_jsobject.cpp b/src/3rdparty/webkit/WebCore/bridge/NP_jsobject.cpp index 006f17f..0a51f45 100644 --- a/src/3rdparty/webkit/WebCore/bridge/NP_jsobject.cpp +++ b/src/3rdparty/webkit/WebCore/bridge/NP_jsobject.cpp @@ -122,9 +122,9 @@ bool _NPN_InvokeDefault(NPP, NPObject* o, const NPVariant* args, uint32_t argCou MarkedArgumentBuffer argList; getListFromVariantArgs(exec, args, argCount, rootObject, argList); ProtectedPtr<JSGlobalObject> globalObject = rootObject->globalObject(); - globalObject->globalData()->timeoutChecker.start(); + globalObject->globalData()->timeoutChecker->start(); JSValue resultV = call(exec, function, callType, callData, function, argList); - globalObject->globalData()->timeoutChecker.stop(); + globalObject->globalData()->timeoutChecker->stop(); // Convert and return the result of the function call. convertValueToNPVariant(exec, resultV, result); @@ -172,9 +172,9 @@ bool _NPN_Invoke(NPP npp, NPObject* o, NPIdentifier methodName, const NPVariant* MarkedArgumentBuffer argList; getListFromVariantArgs(exec, args, argCount, rootObject, argList); ProtectedPtr<JSGlobalObject> globalObject = rootObject->globalObject(); - globalObject->globalData()->timeoutChecker.start(); + globalObject->globalData()->timeoutChecker->start(); JSValue resultV = call(exec, function, callType, callData, obj->imp, argList); - globalObject->globalData()->timeoutChecker.stop(); + globalObject->globalData()->timeoutChecker->stop(); // Convert and return the result of the function call. convertValueToNPVariant(exec, resultV, result); @@ -202,9 +202,9 @@ bool _NPN_Evaluate(NPP, NPObject* o, NPString* s, NPVariant* variant) JSLock lock(SilenceAssertionsOnly); String scriptString = convertNPStringToUTF16(s); ProtectedPtr<JSGlobalObject> globalObject = rootObject->globalObject(); - globalObject->globalData()->timeoutChecker.start(); + globalObject->globalData()->timeoutChecker->start(); Completion completion = JSC::evaluate(globalObject->globalExec(), globalObject->globalScopeChain(), makeSource(scriptString)); - globalObject->globalData()->timeoutChecker.stop(); + globalObject->globalData()->timeoutChecker->stop(); ComplType type = completion.complType(); JSValue result; @@ -442,9 +442,9 @@ bool _NPN_Construct(NPP, NPObject* o, const NPVariant* args, uint32_t argCount, MarkedArgumentBuffer argList; getListFromVariantArgs(exec, args, argCount, rootObject, argList); ProtectedPtr<JSGlobalObject> globalObject = rootObject->globalObject(); - globalObject->globalData()->timeoutChecker.start(); + globalObject->globalData()->timeoutChecker->start(); JSValue resultV = construct(exec, constructor, constructType, constructData, argList); - globalObject->globalData()->timeoutChecker.stop(); + globalObject->globalData()->timeoutChecker->stop(); // Convert and return the result. convertValueToNPVariant(exec, resultV, result); diff --git a/src/3rdparty/webkit/WebCore/bridge/c/c_instance.cpp b/src/3rdparty/webkit/WebCore/bridge/c/c_instance.cpp index fcdd166..d5c1a8b 100644 --- a/src/3rdparty/webkit/WebCore/bridge/c/c_instance.cpp +++ b/src/3rdparty/webkit/WebCore/bridge/c/c_instance.cpp @@ -238,7 +238,7 @@ JSValue CInstance::valueOf(ExecState* exec) const return stringValue(exec); } -void CInstance::getPropertyNames(ExecState* exec, PropertyNameArray& nameArray) +void CInstance::getPropertyNames(ExecState* exec, PropertyNameArray& nameArray, unsigned listedAttributes) { if (!NP_CLASS_STRUCT_VERSION_HAS_ENUM(_object->_class) || !_object->_class->enumerate) return; diff --git a/src/3rdparty/webkit/WebCore/bridge/c/c_instance.h b/src/3rdparty/webkit/WebCore/bridge/c/c_instance.h index f9e9de3..e7fd4bb 100644 --- a/src/3rdparty/webkit/WebCore/bridge/c/c_instance.h +++ b/src/3rdparty/webkit/WebCore/bridge/c/c_instance.h @@ -65,7 +65,7 @@ public: virtual bool supportsConstruct() const; virtual JSValue invokeConstruct(ExecState*, const ArgList&); - virtual void getPropertyNames(ExecState*, PropertyNameArray&); + virtual void getPropertyNames(ExecState*, PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); JSValue stringValue(ExecState*) const; JSValue numberValue(ExecState*) const; diff --git a/src/3rdparty/webkit/WebCore/bridge/jni/jni_jsobject.mm b/src/3rdparty/webkit/WebCore/bridge/jni/jni_jsobject.mm index c9af8b0..8bb8b78 100644 --- a/src/3rdparty/webkit/WebCore/bridge/jni/jni_jsobject.mm +++ b/src/3rdparty/webkit/WebCore/bridge/jni/jni_jsobject.mm @@ -302,9 +302,9 @@ jobject JavaJSObject::call(jstring methodName, jobjectArray args) const // Call the function object. MarkedArgumentBuffer argList; getListFromJArray(exec, args, argList); - rootObject->globalObject()->globalData()->timeoutChecker.start(); + rootObject->globalObject()->globalData()->timeoutChecker->start(); JSValue result = JSC::call(exec, function, callType, callData, _imp, argList); - rootObject->globalObject()->globalData()->timeoutChecker.stop(); + rootObject->globalObject()->globalData()->timeoutChecker->stop(); return convertValueToJObject(result); } @@ -321,9 +321,9 @@ jobject JavaJSObject::eval(jstring script) const if (!rootObject) return 0; - rootObject->globalObject()->globalData()->timeoutChecker.start(); + rootObject->globalObject()->globalData()->timeoutChecker->start(); Completion completion = JSC::evaluate(rootObject->globalObject()->globalExec(), rootObject->globalObject()->globalScopeChain(), makeSource(JavaString(script))); - rootObject->globalObject()->globalData()->timeoutChecker.stop(); + rootObject->globalObject()->globalData()->timeoutChecker->stop(); ComplType type = completion.complType(); if (type == Normal) { diff --git a/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp b/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp index 506697a..020b1c7 100644 --- a/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp +++ b/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp @@ -222,7 +222,7 @@ void QtInstance::end() // Do nothing. } -void QtInstance::getPropertyNames(ExecState* exec, PropertyNameArray& array) +void QtInstance::getPropertyNames(ExecState* exec, PropertyNameArray& array, unsigned listedAttributes) { // This is the enumerable properties, so put: // properties diff --git a/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.h b/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.h index 23766b1..069c04f 100644 --- a/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.h +++ b/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.h @@ -52,7 +52,7 @@ public: virtual JSValue invokeMethod(ExecState*, const MethodList&, const ArgList&); - virtual void getPropertyNames(ExecState*, PropertyNameArray&); + virtual void getPropertyNames(ExecState*, PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); JSValue stringValue(ExecState* exec) const; JSValue numberValue(ExecState* exec) const; diff --git a/src/3rdparty/webkit/WebCore/bridge/runtime.h b/src/3rdparty/webkit/WebCore/bridge/runtime.h index 2f74a4e..a67b148 100644 --- a/src/3rdparty/webkit/WebCore/bridge/runtime.h +++ b/src/3rdparty/webkit/WebCore/bridge/runtime.h @@ -100,7 +100,7 @@ public: virtual bool supportsConstruct() const { return false; } virtual JSValue invokeConstruct(ExecState*, const ArgList&) { return JSValue(); } - virtual void getPropertyNames(ExecState*, PropertyNameArray&) { } + virtual void getPropertyNames(ExecState*, PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype) { } virtual JSValue defaultValue(ExecState*, PreferredPrimitiveType) const = 0; diff --git a/src/3rdparty/webkit/WebCore/bridge/runtime_array.cpp b/src/3rdparty/webkit/WebCore/bridge/runtime_array.cpp index 2849822..84520d2 100644 --- a/src/3rdparty/webkit/WebCore/bridge/runtime_array.cpp +++ b/src/3rdparty/webkit/WebCore/bridge/runtime_array.cpp @@ -112,12 +112,12 @@ void RuntimeArray::put(ExecState* exec, unsigned index, JSValue value) getConcreteArray()->setValueAt(exec, index, value); } -bool RuntimeArray::deleteProperty(ExecState*, const Identifier&) +bool RuntimeArray::deleteProperty(ExecState*, const Identifier&, bool) { return false; } -bool RuntimeArray::deleteProperty(ExecState*, unsigned) +bool RuntimeArray::deleteProperty(ExecState*, unsigned, bool) { return false; } diff --git a/src/3rdparty/webkit/WebCore/bridge/runtime_array.h b/src/3rdparty/webkit/WebCore/bridge/runtime_array.h index 5a86e9d..dbb1559 100644 --- a/src/3rdparty/webkit/WebCore/bridge/runtime_array.h +++ b/src/3rdparty/webkit/WebCore/bridge/runtime_array.h @@ -40,8 +40,8 @@ public: virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&); virtual void put(ExecState*, unsigned propertyName, JSValue); - virtual bool deleteProperty(ExecState *exec, const Identifier &propertyName); - virtual bool deleteProperty(ExecState *exec, unsigned propertyName); + virtual bool deleteProperty(ExecState *exec, const Identifier &propertyName, bool checkDontDelete = true); + virtual bool deleteProperty(ExecState *exec, unsigned propertyName, bool checkDontDelete = true); virtual const ClassInfo *classInfo() const { return &s_info; } diff --git a/src/3rdparty/webkit/WebCore/bridge/runtime_object.cpp b/src/3rdparty/webkit/WebCore/bridge/runtime_object.cpp index 385f914..90129fa 100644 --- a/src/3rdparty/webkit/WebCore/bridge/runtime_object.cpp +++ b/src/3rdparty/webkit/WebCore/bridge/runtime_object.cpp @@ -187,7 +187,7 @@ void RuntimeObjectImp::put(ExecState* exec, const Identifier& propertyName, JSVa instance->end(); } -bool RuntimeObjectImp::deleteProperty(ExecState*, const Identifier&) +bool RuntimeObjectImp::deleteProperty(ExecState*, const Identifier&, bool) { // Can never remove a property of a RuntimeObject. return false; @@ -241,7 +241,7 @@ ConstructType RuntimeObjectImp::getConstructData(ConstructData& constructData) return ConstructTypeHost; } -void RuntimeObjectImp::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void RuntimeObjectImp::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { if (!instance) { throwInvalidAccessError(exec); @@ -249,7 +249,7 @@ void RuntimeObjectImp::getPropertyNames(ExecState* exec, PropertyNameArray& prop } instance->begin(); - instance->getPropertyNames(exec, propertyNames); + instance->getPropertyNames(exec, propertyNames, listedAttributes); instance->end(); } diff --git a/src/3rdparty/webkit/WebCore/bridge/runtime_object.h b/src/3rdparty/webkit/WebCore/bridge/runtime_object.h index f01fe1e..1d5aa09 100644 --- a/src/3rdparty/webkit/WebCore/bridge/runtime_object.h +++ b/src/3rdparty/webkit/WebCore/bridge/runtime_object.h @@ -39,12 +39,12 @@ public: virtual bool getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&); virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&); - virtual bool deleteProperty(ExecState* , const Identifier& propertyName); + virtual bool deleteProperty(ExecState* , const Identifier& propertyName, bool checkDontDelete = true); virtual JSValue defaultValue(ExecState*, PreferredPrimitiveType) const; virtual CallType getCallData(CallData&); virtual ConstructType getConstructData(ConstructData&); - virtual void getPropertyNames(ExecState*, PropertyNameArray&); + virtual void getPropertyNames(ExecState*, PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); virtual void invalidate(); Bindings::Instance* getInternalInstance() const { return instance.get(); } diff --git a/src/3rdparty/webkit/WebCore/generated/Grammar.cpp b/src/3rdparty/webkit/WebCore/generated/Grammar.cpp index 6e976b9..76f90d7 100644 --- a/src/3rdparty/webkit/WebCore/generated/Grammar.cpp +++ b/src/3rdparty/webkit/WebCore/generated/Grammar.cpp @@ -139,7 +139,7 @@ static inline bool allowAutomaticSemicolon(JSC::Lexer&, int); #define AUTO_SEMICOLON do { if (!allowAutomaticSemicolon(*LEXER, yychar)) YYABORT; } while (0) #define SET_EXCEPTION_LOCATION(node, start, divot, end) node->setExceptionSourceCode((divot), (divot) - (start), (end) - (divot)) -#define DBG(l, s, e) (l)->setLoc((s).first_line, (e).last_line) +#define DBG(l, s, e) (l)->setLoc((s).first_line, (e).last_line, (s).first_column + 1) using namespace JSC; using namespace std; diff --git a/src/3rdparty/webkit/WebCore/generated/JSCSSRuleList.cpp b/src/3rdparty/webkit/WebCore/generated/JSCSSRuleList.cpp index 5717a53..e720825 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSCSSRuleList.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSCSSRuleList.cpp @@ -172,11 +172,11 @@ JSValue jsCSSRuleListConstructor(ExecState* exec, const Identifier&, const Prope JSCSSRuleList* domObject = static_cast<JSCSSRuleList*>(asObject(slot.slotBase())); return JSCSSRuleList::getConstructor(exec, domObject->globalObject()); } -void JSCSSRuleList::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSCSSRuleList::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<CSSRuleList*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSCSSRuleList::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSCSSRuleList.h b/src/3rdparty/webkit/WebCore/generated/JSCSSRuleList.h index fb400b2..b48bf2b 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSCSSRuleList.h +++ b/src/3rdparty/webkit/WebCore/generated/JSCSSRuleList.h @@ -46,7 +46,7 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); CSSRuleList* impl() const { return m_impl.get(); } diff --git a/src/3rdparty/webkit/WebCore/generated/JSCSSStyleDeclaration.cpp b/src/3rdparty/webkit/WebCore/generated/JSCSSStyleDeclaration.cpp index 87fc6e3..f0e32e3 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSCSSStyleDeclaration.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSCSSStyleDeclaration.cpp @@ -221,11 +221,11 @@ void setJSCSSStyleDeclarationCssText(ExecState* exec, JSObject* thisObject, JSVa setDOMException(exec, ec); } -void JSCSSStyleDeclaration::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSCSSStyleDeclaration::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<CSSStyleDeclaration*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSCSSStyleDeclaration::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSCSSStyleDeclaration.h b/src/3rdparty/webkit/WebCore/generated/JSCSSStyleDeclaration.h index 075d438..a4a35e6 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSCSSStyleDeclaration.h +++ b/src/3rdparty/webkit/WebCore/generated/JSCSSStyleDeclaration.h @@ -48,7 +48,7 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); CSSStyleDeclaration* impl() const { return m_impl.get(); } diff --git a/src/3rdparty/webkit/WebCore/generated/JSCSSValueList.cpp b/src/3rdparty/webkit/WebCore/generated/JSCSSValueList.cpp index c09806f..ed40bf3 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSCSSValueList.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSCSSValueList.cpp @@ -166,11 +166,11 @@ JSValue jsCSSValueListConstructor(ExecState* exec, const Identifier&, const Prop JSCSSValueList* domObject = static_cast<JSCSSValueList*>(asObject(slot.slotBase())); return JSCSSValueList::getConstructor(exec, domObject->globalObject()); } -void JSCSSValueList::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSCSSValueList::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<CSSValueList*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSCSSValueList::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSCSSValueList.h b/src/3rdparty/webkit/WebCore/generated/JSCSSValueList.h index 59eb203..d166141 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSCSSValueList.h +++ b/src/3rdparty/webkit/WebCore/generated/JSCSSValueList.h @@ -42,7 +42,7 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); static JSC::JSValue indexGetter(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&); }; diff --git a/src/3rdparty/webkit/WebCore/generated/JSCSSVariablesDeclaration.cpp b/src/3rdparty/webkit/WebCore/generated/JSCSSVariablesDeclaration.cpp index 3074928..921e894 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSCSSVariablesDeclaration.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSCSSVariablesDeclaration.cpp @@ -206,11 +206,11 @@ void setJSCSSVariablesDeclarationCssText(ExecState* exec, JSObject* thisObject, imp->setCssText(value.toString(exec)); } -void JSCSSVariablesDeclaration::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSCSSVariablesDeclaration::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<CSSVariablesDeclaration*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSCSSVariablesDeclaration::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSCSSVariablesDeclaration.h b/src/3rdparty/webkit/WebCore/generated/JSCSSVariablesDeclaration.h index f2c62b0..45a3e9d 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSCSSVariablesDeclaration.h +++ b/src/3rdparty/webkit/WebCore/generated/JSCSSVariablesDeclaration.h @@ -47,7 +47,7 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); CSSVariablesDeclaration* impl() const { return m_impl.get(); } diff --git a/src/3rdparty/webkit/WebCore/generated/JSClientRectList.cpp b/src/3rdparty/webkit/WebCore/generated/JSClientRectList.cpp index f8c99a2..d8426ef 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSClientRectList.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSClientRectList.cpp @@ -173,11 +173,11 @@ JSValue jsClientRectListConstructor(ExecState* exec, const Identifier&, const Pr JSClientRectList* domObject = static_cast<JSClientRectList*>(asObject(slot.slotBase())); return JSClientRectList::getConstructor(exec, domObject->globalObject()); } -void JSClientRectList::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSClientRectList::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<ClientRectList*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSClientRectList::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSClientRectList.h b/src/3rdparty/webkit/WebCore/generated/JSClientRectList.h index 851a7f9..34868a3 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSClientRectList.h +++ b/src/3rdparty/webkit/WebCore/generated/JSClientRectList.h @@ -46,7 +46,7 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); ClientRectList* impl() const { return m_impl.get(); } diff --git a/src/3rdparty/webkit/WebCore/generated/JSDOMWindow.h b/src/3rdparty/webkit/WebCore/generated/JSDOMWindow.h index 8e7defe..a87339e 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSDOMWindow.h +++ b/src/3rdparty/webkit/WebCore/generated/JSDOMWindow.h @@ -47,8 +47,8 @@ public: virtual void mark(); - virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier&); - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier&, bool checkDontDelete = true); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); virtual bool getPropertyAttributes(JSC::ExecState*, const JSC::Identifier&, unsigned& attributes) const; virtual void defineGetter(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* getterFunction); virtual void defineSetter(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* setterFunction); diff --git a/src/3rdparty/webkit/WebCore/generated/JSDataGridColumnList.cpp b/src/3rdparty/webkit/WebCore/generated/JSDataGridColumnList.cpp index f2525a5..220d81d 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSDataGridColumnList.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSDataGridColumnList.cpp @@ -203,11 +203,11 @@ JSValue jsDataGridColumnListConstructor(ExecState* exec, const Identifier&, cons JSDataGridColumnList* domObject = static_cast<JSDataGridColumnList*>(asObject(slot.slotBase())); return JSDataGridColumnList::getConstructor(exec, domObject->globalObject()); } -void JSDataGridColumnList::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSDataGridColumnList::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<DataGridColumnList*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSDataGridColumnList::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSDataGridColumnList.h b/src/3rdparty/webkit/WebCore/generated/JSDataGridColumnList.h index b904146..986081a 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSDataGridColumnList.h +++ b/src/3rdparty/webkit/WebCore/generated/JSDataGridColumnList.h @@ -48,7 +48,7 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); DataGridColumnList* impl() const { return m_impl.get(); } diff --git a/src/3rdparty/webkit/WebCore/generated/JSFileList.cpp b/src/3rdparty/webkit/WebCore/generated/JSFileList.cpp index e359c69..088744e 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSFileList.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSFileList.cpp @@ -173,11 +173,11 @@ JSValue jsFileListConstructor(ExecState* exec, const Identifier&, const Property JSFileList* domObject = static_cast<JSFileList*>(asObject(slot.slotBase())); return JSFileList::getConstructor(exec, domObject->globalObject()); } -void JSFileList::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSFileList::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<FileList*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSFileList::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSFileList.h b/src/3rdparty/webkit/WebCore/generated/JSFileList.h index 43cac56..421fad0 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSFileList.h +++ b/src/3rdparty/webkit/WebCore/generated/JSFileList.h @@ -46,7 +46,7 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); FileList* impl() const { return m_impl.get(); } diff --git a/src/3rdparty/webkit/WebCore/generated/JSHTMLCollection.cpp b/src/3rdparty/webkit/WebCore/generated/JSHTMLCollection.cpp index de01068..b0ac470 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSHTMLCollection.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSHTMLCollection.cpp @@ -186,11 +186,11 @@ JSValue jsHTMLCollectionConstructor(ExecState* exec, const Identifier&, const Pr JSHTMLCollection* domObject = static_cast<JSHTMLCollection*>(asObject(slot.slotBase())); return JSHTMLCollection::getConstructor(exec, domObject->globalObject()); } -void JSHTMLCollection::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSHTMLCollection::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<HTMLCollection*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSHTMLCollection::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSHTMLCollection.h b/src/3rdparty/webkit/WebCore/generated/JSHTMLCollection.h index c6b6406..c5f7ff2 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSHTMLCollection.h +++ b/src/3rdparty/webkit/WebCore/generated/JSHTMLCollection.h @@ -49,7 +49,7 @@ public: virtual JSC::CallType getCallData(JSC::CallData&); - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); // Custom functions diff --git a/src/3rdparty/webkit/WebCore/generated/JSHTMLFormElement.cpp b/src/3rdparty/webkit/WebCore/generated/JSHTMLFormElement.cpp index 1f941c0..e01b1c3 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSHTMLFormElement.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSHTMLFormElement.cpp @@ -284,11 +284,11 @@ void setJSHTMLFormElementTarget(ExecState* exec, JSObject* thisObject, JSValue v imp->setTarget(valueToStringWithNullCheck(exec, value)); } -void JSHTMLFormElement::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSHTMLFormElement::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<HTMLFormElement*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSHTMLFormElement::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSHTMLFormElement.h b/src/3rdparty/webkit/WebCore/generated/JSHTMLFormElement.h index 6ad5c00..c7be16d 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSHTMLFormElement.h +++ b/src/3rdparty/webkit/WebCore/generated/JSHTMLFormElement.h @@ -42,7 +42,7 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); // Custom functions diff --git a/src/3rdparty/webkit/WebCore/generated/JSHTMLSelectElement.cpp b/src/3rdparty/webkit/WebCore/generated/JSHTMLSelectElement.cpp index 794d24c..223a576 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSHTMLSelectElement.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSHTMLSelectElement.cpp @@ -354,11 +354,11 @@ void setJSHTMLSelectElementSize(ExecState* exec, JSObject* thisObject, JSValue v imp->setSize(value.toInt32(exec)); } -void JSHTMLSelectElement::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSHTMLSelectElement::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<HTMLSelectElement*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSHTMLSelectElement::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSHTMLSelectElement.h b/src/3rdparty/webkit/WebCore/generated/JSHTMLSelectElement.h index 6544254..11cf587 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSHTMLSelectElement.h +++ b/src/3rdparty/webkit/WebCore/generated/JSHTMLSelectElement.h @@ -44,7 +44,7 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); // Custom functions diff --git a/src/3rdparty/webkit/WebCore/generated/JSHistory.h b/src/3rdparty/webkit/WebCore/generated/JSHistory.h index 8163882..6e17de0 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSHistory.h +++ b/src/3rdparty/webkit/WebCore/generated/JSHistory.h @@ -48,8 +48,8 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier&); - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier&, bool checkDontDelete = true); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); History* impl() const { return m_impl.get(); } private: diff --git a/src/3rdparty/webkit/WebCore/generated/JSLocation.h b/src/3rdparty/webkit/WebCore/generated/JSLocation.h index 155cfbc..09ae2a0 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSLocation.h +++ b/src/3rdparty/webkit/WebCore/generated/JSLocation.h @@ -48,8 +48,8 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier&); - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier&, bool checkDontDelete = true); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); virtual void defineGetter(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* getterFunction); // Custom attributes diff --git a/src/3rdparty/webkit/WebCore/generated/JSMediaList.cpp b/src/3rdparty/webkit/WebCore/generated/JSMediaList.cpp index 007e976..73a2d13 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSMediaList.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSMediaList.cpp @@ -195,11 +195,11 @@ void setJSMediaListMediaText(ExecState* exec, JSObject* thisObject, JSValue valu setDOMException(exec, ec); } -void JSMediaList::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSMediaList::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<MediaList*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSMediaList::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSMediaList.h b/src/3rdparty/webkit/WebCore/generated/JSMediaList.h index da82e56..506eb7c 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSMediaList.h +++ b/src/3rdparty/webkit/WebCore/generated/JSMediaList.h @@ -47,7 +47,7 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); MediaList* impl() const { return m_impl.get(); } diff --git a/src/3rdparty/webkit/WebCore/generated/JSMimeTypeArray.cpp b/src/3rdparty/webkit/WebCore/generated/JSMimeTypeArray.cpp index 8f769fb..e1fab3f 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSMimeTypeArray.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSMimeTypeArray.cpp @@ -178,11 +178,11 @@ JSValue jsMimeTypeArrayConstructor(ExecState* exec, const Identifier&, const Pro JSMimeTypeArray* domObject = static_cast<JSMimeTypeArray*>(asObject(slot.slotBase())); return JSMimeTypeArray::getConstructor(exec, domObject->globalObject()); } -void JSMimeTypeArray::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSMimeTypeArray::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<MimeTypeArray*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSMimeTypeArray::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSMimeTypeArray.h b/src/3rdparty/webkit/WebCore/generated/JSMimeTypeArray.h index f0625e4..184a79b 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSMimeTypeArray.h +++ b/src/3rdparty/webkit/WebCore/generated/JSMimeTypeArray.h @@ -46,7 +46,7 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); MimeTypeArray* impl() const { return m_impl.get(); } diff --git a/src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.cpp b/src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.cpp index 355464c..84dd68e 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.cpp @@ -187,11 +187,11 @@ JSValue jsNamedNodeMapConstructor(ExecState* exec, const Identifier&, const Prop JSNamedNodeMap* domObject = static_cast<JSNamedNodeMap*>(asObject(slot.slotBase())); return JSNamedNodeMap::getConstructor(exec, domObject->globalObject()); } -void JSNamedNodeMap::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSNamedNodeMap::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<NamedNodeMap*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSNamedNodeMap::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.h b/src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.h index ca64bfb..7038f4d 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.h +++ b/src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.h @@ -46,7 +46,7 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); NamedNodeMap* impl() const { return m_impl.get(); } diff --git a/src/3rdparty/webkit/WebCore/generated/JSNodeList.cpp b/src/3rdparty/webkit/WebCore/generated/JSNodeList.cpp index 437dd84..c8fa413 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSNodeList.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSNodeList.cpp @@ -178,11 +178,11 @@ JSValue jsNodeListConstructor(ExecState* exec, const Identifier&, const Property JSNodeList* domObject = static_cast<JSNodeList*>(asObject(slot.slotBase())); return JSNodeList::getConstructor(exec, domObject->globalObject()); } -void JSNodeList::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSNodeList::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<NodeList*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSNodeList::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSNodeList.h b/src/3rdparty/webkit/WebCore/generated/JSNodeList.h index 21faa3a..5314d58 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSNodeList.h +++ b/src/3rdparty/webkit/WebCore/generated/JSNodeList.h @@ -49,7 +49,7 @@ public: virtual JSC::CallType getCallData(JSC::CallData&); - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); NodeList* impl() const { return m_impl.get(); } diff --git a/src/3rdparty/webkit/WebCore/generated/JSPlugin.cpp b/src/3rdparty/webkit/WebCore/generated/JSPlugin.cpp index 39616d6..7628617 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSPlugin.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSPlugin.cpp @@ -207,11 +207,11 @@ JSValue jsPluginConstructor(ExecState* exec, const Identifier&, const PropertySl JSPlugin* domObject = static_cast<JSPlugin*>(asObject(slot.slotBase())); return JSPlugin::getConstructor(exec, domObject->globalObject()); } -void JSPlugin::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSPlugin::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<Plugin*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSPlugin::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSPlugin.h b/src/3rdparty/webkit/WebCore/generated/JSPlugin.h index eee4c7d..18f9b78 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSPlugin.h +++ b/src/3rdparty/webkit/WebCore/generated/JSPlugin.h @@ -46,7 +46,7 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); Plugin* impl() const { return m_impl.get(); } diff --git a/src/3rdparty/webkit/WebCore/generated/JSPluginArray.cpp b/src/3rdparty/webkit/WebCore/generated/JSPluginArray.cpp index 955d50c..45a49e2 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSPluginArray.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSPluginArray.cpp @@ -179,11 +179,11 @@ JSValue jsPluginArrayConstructor(ExecState* exec, const Identifier&, const Prope JSPluginArray* domObject = static_cast<JSPluginArray*>(asObject(slot.slotBase())); return JSPluginArray::getConstructor(exec, domObject->globalObject()); } -void JSPluginArray::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSPluginArray::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<PluginArray*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSPluginArray::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSPluginArray.h b/src/3rdparty/webkit/WebCore/generated/JSPluginArray.h index 44443f3..c2827aa 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSPluginArray.h +++ b/src/3rdparty/webkit/WebCore/generated/JSPluginArray.h @@ -46,7 +46,7 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); PluginArray* impl() const { return m_impl.get(); } diff --git a/src/3rdparty/webkit/WebCore/generated/JSStorage.h b/src/3rdparty/webkit/WebCore/generated/JSStorage.h index fbc4ff3..42e32d6 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSStorage.h +++ b/src/3rdparty/webkit/WebCore/generated/JSStorage.h @@ -49,8 +49,8 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier&); - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier&, bool checkDontDelete = true); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); Storage* impl() const { return m_impl.get(); } diff --git a/src/3rdparty/webkit/WebCore/generated/JSStyleSheetList.cpp b/src/3rdparty/webkit/WebCore/generated/JSStyleSheetList.cpp index a431d09..909d8e5 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSStyleSheetList.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSStyleSheetList.cpp @@ -177,11 +177,11 @@ JSValue jsStyleSheetListConstructor(ExecState* exec, const Identifier&, const Pr JSStyleSheetList* domObject = static_cast<JSStyleSheetList*>(asObject(slot.slotBase())); return JSStyleSheetList::getConstructor(exec, domObject->globalObject()); } -void JSStyleSheetList::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSStyleSheetList::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<StyleSheetList*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSStyleSheetList::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSStyleSheetList.h b/src/3rdparty/webkit/WebCore/generated/JSStyleSheetList.h index 75c8c6c..589ea80 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSStyleSheetList.h +++ b/src/3rdparty/webkit/WebCore/generated/JSStyleSheetList.h @@ -46,7 +46,7 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); StyleSheetList* impl() const { return m_impl.get(); } diff --git a/src/3rdparty/webkit/WebCore/generated/JSWebKitCSSKeyframesRule.cpp b/src/3rdparty/webkit/WebCore/generated/JSWebKitCSSKeyframesRule.cpp index baf4e51..f4cbcfc 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSWebKitCSSKeyframesRule.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSWebKitCSSKeyframesRule.cpp @@ -190,11 +190,11 @@ void setJSWebKitCSSKeyframesRuleName(ExecState* exec, JSObject* thisObject, JSVa imp->setName(valueToStringWithNullCheck(exec, value)); } -void JSWebKitCSSKeyframesRule::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) +void JSWebKitCSSKeyframesRule::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, unsigned listedAttributes) { for (unsigned i = 0; i < static_cast<WebKitCSSKeyframesRule*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); - Base::getPropertyNames(exec, propertyNames); + Base::getPropertyNames(exec, propertyNames, listedAttributes); } JSValue JSWebKitCSSKeyframesRule::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSWebKitCSSKeyframesRule.h b/src/3rdparty/webkit/WebCore/generated/JSWebKitCSSKeyframesRule.h index cae9a5f..4cdbd0d 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSWebKitCSSKeyframesRule.h +++ b/src/3rdparty/webkit/WebCore/generated/JSWebKitCSSKeyframesRule.h @@ -43,7 +43,7 @@ public: return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType)); } - virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&); + virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, unsigned listedAttributes = JSC::Structure::Prototype); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); static JSC::JSValue indexGetter(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&); }; diff --git a/src/3rdparty/webkit/WebCore/inspector/JavaScriptDebugServer.cpp b/src/3rdparty/webkit/WebCore/inspector/JavaScriptDebugServer.cpp index 10eff26..0aafd65 100644 --- a/src/3rdparty/webkit/WebCore/inspector/JavaScriptDebugServer.cpp +++ b/src/3rdparty/webkit/WebCore/inspector/JavaScriptDebugServer.cpp @@ -459,7 +459,7 @@ void JavaScriptDebugServer::callEvent(const DebuggerCallFrame& debuggerCallFrame pauseIfNeeded(toPage(debuggerCallFrame.dynamicGlobalObject())); } -void JavaScriptDebugServer::atStatement(const DebuggerCallFrame& debuggerCallFrame, intptr_t sourceID, int lineNumber) +void JavaScriptDebugServer::atStatement(const DebuggerCallFrame& debuggerCallFrame, intptr_t sourceID, int lineNumber, int column) { if (m_paused) return; @@ -533,7 +533,7 @@ void JavaScriptDebugServer::didExecuteProgram(const DebuggerCallFrame& debuggerC m_currentCallFrame = m_currentCallFrame->caller(); } -void JavaScriptDebugServer::didReachBreakpoint(const DebuggerCallFrame& debuggerCallFrame, intptr_t sourceID, int lineNumber) +void JavaScriptDebugServer::didReachBreakpoint(const DebuggerCallFrame& debuggerCallFrame, intptr_t sourceID, int lineNumber, int /*column*/) { if (m_paused) return; diff --git a/src/3rdparty/webkit/WebCore/inspector/JavaScriptDebugServer.h b/src/3rdparty/webkit/WebCore/inspector/JavaScriptDebugServer.h index baa6699..505a616 100644 --- a/src/3rdparty/webkit/WebCore/inspector/JavaScriptDebugServer.h +++ b/src/3rdparty/webkit/WebCore/inspector/JavaScriptDebugServer.h @@ -105,12 +105,12 @@ namespace WebCore { virtual void sourceParsed(JSC::ExecState*, const JSC::SourceCode&, int errorLine, const JSC::UString& errorMsg); virtual void callEvent(const JSC::DebuggerCallFrame&, intptr_t sourceID, int lineNumber); - virtual void atStatement(const JSC::DebuggerCallFrame&, intptr_t sourceID, int firstLine); + virtual void atStatement(const JSC::DebuggerCallFrame&, intptr_t sourceID, int firstLine, int column); virtual void returnEvent(const JSC::DebuggerCallFrame&, intptr_t sourceID, int lineNumber); virtual void exception(const JSC::DebuggerCallFrame&, intptr_t sourceID, int lineNumber); virtual void willExecuteProgram(const JSC::DebuggerCallFrame&, intptr_t sourceID, int lineno); virtual void didExecuteProgram(const JSC::DebuggerCallFrame&, intptr_t sourceID, int lineno); - virtual void didReachBreakpoint(const JSC::DebuggerCallFrame&, intptr_t sourceID, int lineno); + virtual void didReachBreakpoint(const JSC::DebuggerCallFrame&, intptr_t sourceID, int lineno, int column); void didAddListener(Page*); void didRemoveListener(Page*); |