summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/JavaScriptCore/interpreter
diff options
context:
space:
mode:
authorKent Hansen <khansen@trolltech.com>2009-07-09 07:28:56 (GMT)
committerKent Hansen <khansen@trolltech.com>2009-07-09 07:28:56 (GMT)
commitf2e0f336183e8001f946da5b7aa45b9367ed68ba (patch)
tree87cf5ab1b6e33fae823c52e9da11831a04375f47 /src/3rdparty/webkit/JavaScriptCore/interpreter
parenta4e0ae8af7b550117d1e9d9dbb90564d50985fe3 (diff)
downloadQt-f2e0f336183e8001f946da5b7aa45b9367ed68ba.zip
Qt-f2e0f336183e8001f946da5b7aa45b9367ed68ba.tar.gz
Qt-f2e0f336183e8001f946da5b7aa45b9367ed68ba.tar.bz2
store frame's callee as a normal JSObject
It's possible for any JSObject to be a callee; all it needs to do is implement getCallData().
Diffstat (limited to 'src/3rdparty/webkit/JavaScriptCore/interpreter')
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrame.h8
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp6
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/interpreter/Register.h15
3 files changed, 14 insertions, 15 deletions
diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrame.h b/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrame.h
index b1e6c4d..a8a677e 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:
- InternalFunction* 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, InternalFunction* 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);
}
@@ -134,7 +134,7 @@ namespace JSC {
int returnValueRegister() const { return this[RegisterFile::ReturnValueRegister].i(); }
void setArgumentCount(int count) { this[RegisterFile::ArgumentCount] = count; }
- void setCallee(InternalFunction* 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 2328f97..f8a3746 100644
--- a/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp
@@ -3076,7 +3076,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, asInternalFunction(v));
+ newCallFrame->init(0, vPC + 5, scopeChain, callFrame, dst, argCount, asObject(v));
Register* thisRegister = newCallFrame->registers() - RegisterFile::CallFrameHeaderSize - argCount;
ArgList args(thisRegister + 1, argCount - 1);
@@ -3230,7 +3230,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, asInternalFunction(v));
+ newCallFrame->init(0, vPC + 5, scopeChain, callFrame, dst, argCount, asObject(v));
Register* thisRegister = newCallFrame->registers() - RegisterFile::CallFrameHeaderSize - argCount;
ArgList args(thisRegister + 1, argCount - 1);
@@ -3496,7 +3496,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi
ScopeChainNode* scopeChain = callFrame->scopeChain();
CallFrame* newCallFrame = CallFrame::create(callFrame->registers() + registerOffset);
- newCallFrame->init(0, vPC + 7, scopeChain, callFrame, dst, argCount, asInternalFunction(v));
+ newCallFrame->init(0, vPC + 7, scopeChain, callFrame, dst, argCount, asObject(v));
JSValue returnValue;
{
diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/Register.h b/src/3rdparty/webkit/JavaScriptCore/interpreter/Register.h
index e0dbc34..18cfbb0 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 InternalFunction;
class JSPropertyNameIterator;
class ScopeChainNode;
@@ -73,7 +72,7 @@ namespace JSC {
Register(JSActivation*);
Register(CallFrame*);
Register(CodeBlock*);
- Register(InternalFunction*);
+ Register(JSObject*);
Register(JSPropertyNameIterator*);
Register(ScopeChainNode*);
Register(Instruction*);
@@ -82,7 +81,7 @@ namespace JSC {
Arguments* arguments() const;
CallFrame* callFrame() const;
CodeBlock* codeBlock() const;
- InternalFunction* 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;
- InternalFunction* function;
+ JSObject* object;
JSPropertyNameIterator* propertyNameIterator;
ScopeChainNode* scopeChain;
Instruction* vPC;
@@ -152,9 +151,9 @@ namespace JSC {
u.codeBlock = codeBlock;
}
- ALWAYS_INLINE Register::Register(InternalFunction* 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 InternalFunction* Register::function() const
+ ALWAYS_INLINE JSObject* Register::object() const
{
- return u.function;
+ return u.object;
}
ALWAYS_INLINE JSPropertyNameIterator* Register::propertyNameIterator() const