diff options
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGNode.h')
-rw-r--r-- | Source/JavaScriptCore/dfg/DFGNode.h | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGNode.h b/Source/JavaScriptCore/dfg/DFGNode.h index 1dbfccb8a..12ebba823 100644 --- a/Source/JavaScriptCore/dfg/DFGNode.h +++ b/Source/JavaScriptCore/dfg/DFGNode.h @@ -201,9 +201,21 @@ struct Node { return op() == WeakJSConstant; } + bool isPhantomArguments() + { + return op() == PhantomArguments; + } + bool hasConstant() { - return isConstant() || isWeakConstant(); + switch (op()) { + case JSConstant: + case WeakJSConstant: + case PhantomArguments: + return true; + default: + return false; + } } unsigned constantNumber() @@ -234,14 +246,23 @@ struct Node { JSCell* weakConstant() { + ASSERT(op() == WeakJSConstant); return bitwise_cast<JSCell*>(m_opInfo); } JSValue valueOfJSConstant(CodeBlock* codeBlock) { - if (op() == WeakJSConstant) + switch (op()) { + case WeakJSConstant: return JSValue(weakConstant()); - return codeBlock->constantRegister(FirstConstantRegisterIndex + constantNumber()).get(); + case JSConstant: + return codeBlock->constantRegister(FirstConstantRegisterIndex + constantNumber()).get(); + case PhantomArguments: + return JSValue(); + default: + ASSERT_NOT_REACHED(); + return JSValue(); // Have to return something in release mode. + } } bool isInt32Constant(CodeBlock* codeBlock) @@ -589,7 +610,7 @@ struct Node { bool hasStructureTransitionData() { - return op() == PutStructure; + return op() == PutStructure || op() == PhantomPutStructure; } StructureTransitionData& structureTransitionData() |