Changeset 43560 in webkit for trunk/JavaScriptCore/interpreter/Interpreter.cpp
- Timestamp:
- May 12, 2009, 2:18:44 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/interpreter/Interpreter.cpp
r43559 r43560 318 318 } 319 319 320 static NEVER_INLINE bool is NotObject(CallFrame* callFrame, bool forInstanceOf, CodeBlock* codeBlock, const Instruction* vPC, JSValue value, JSValue& exceptionData)320 static NEVER_INLINE bool isInvalidParamForIn(CallFrame* callFrame, CodeBlock* codeBlock, const Instruction* vPC, JSValue value, JSValue& exceptionData) 321 321 { 322 322 if (value.isObject()) 323 323 return false; 324 exceptionData = createInvalidParamError(callFrame, forInstanceOf ? "instanceof" : "in" , value, vPC - codeBlock->instructions().begin(), codeBlock); 324 exceptionData = createInvalidParamError(callFrame, "in" , value, vPC - codeBlock->instructions().begin(), codeBlock); 325 return true; 326 } 327 328 static NEVER_INLINE bool isInvalidParamForInstanceOf(CallFrame* callFrame, CodeBlock* codeBlock, const Instruction* vPC, JSValue value, JSValue& exceptionData) 329 { 330 if (value.isObject() && asObject(value)->structure()->typeInfo().implementsHasInstance()) 331 return false; 332 exceptionData = createInvalidParamError(callFrame, "instanceof" , value, vPC - codeBlock->instructions().begin(), codeBlock); 325 333 return true; 326 334 } … … 1813 1821 JSValue baseVal = callFrame[base].jsValue(); 1814 1822 1815 if (is NotObject(callFrame, true, callFrame->codeBlock(), vPC, baseVal, exceptionValue))1823 if (isInvalidParamForInstanceOf(callFrame, callFrame->codeBlock(), vPC, baseVal, exceptionValue)) 1816 1824 goto vm_throw; 1817 1825 1818 JSObject* baseObj = asObject(baseVal); 1819 if (baseObj->structure()->typeInfo().implementsHasInstance()) { 1820 bool result = baseObj->hasInstance(callFrame, callFrame[value].jsValue(), callFrame[baseProto].jsValue()); 1821 CHECK_FOR_EXCEPTION(); 1822 callFrame[dst] = jsBoolean(result); 1823 } else 1824 callFrame[dst] = jsBoolean(false); 1826 bool result = asObject(baseVal)->hasInstance(callFrame, callFrame[value].jsValue(), callFrame[baseProto].jsValue()); 1827 CHECK_FOR_EXCEPTION(); 1828 callFrame[dst] = jsBoolean(result); 1825 1829 1826 1830 vPC += 5; … … 1939 1943 1940 1944 JSValue baseVal = callFrame[base].jsValue(); 1941 if (is NotObject(callFrame, false, callFrame->codeBlock(), vPC, baseVal, exceptionValue))1945 if (isInvalidParamForIn(callFrame, callFrame->codeBlock(), vPC, baseVal, exceptionValue)) 1942 1946 goto vm_throw; 1943 1947
Note:
See TracChangeset
for help on using the changeset viewer.