Changeset 32807 in webkit for trunk/JavaScriptCore/kjs/nodes.cpp
- Timestamp:
- May 2, 2008, 3:07:53 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/nodes.cpp
r32578 r32807 361 361 JSObject* exception = static_cast<JSObject*>(exceptionValue); 362 362 if (!exception->hasProperty(exec, "line") && !exception->hasProperty(exec, "sourceURL")) { 363 exception->put(exec, "line", jsNumber( m_line));364 exception->put(exec, "sourceURL", jsString( currentSourceURL(exec)));363 exception->put(exec, "line", jsNumber(exec, m_line)); 364 exception->put(exec, "sourceURL", jsString(exec, currentSourceURL(exec))); 365 365 } 366 366 } … … 454 454 // ------------------------------ NumberNode ----------------------------------- 455 455 456 JSValue* NumberNode::evaluate(ExecState* )456 JSValue* NumberNode::evaluate(ExecState* exec) 457 457 { 458 458 // Number nodes are only created when the number can't fit in a JSImmediate, so no need to check again. 459 return jsNumberCell( m_double);459 return jsNumberCell(exec, m_double); 460 460 } 461 461 … … 503 503 // ------------------------------ StringNode ----------------------------------- 504 504 505 JSValue* StringNode::evaluate(ExecState* )506 { 507 return jsOwnedString( m_value);505 JSValue* StringNode::evaluate(ExecState* exec) 506 { 507 return jsOwnedString(exec, m_value); 508 508 } 509 509 … … 820 820 821 821 if (m_optional) 822 array->put(exec, exec->propertyNames().length, jsNumber( m_elision + length));822 array->put(exec, exec->propertyNames().length, jsNumber(exec, m_elision + length)); 823 823 824 824 return array; … … 1567 1567 JSObject* base = *iter; 1568 1568 JSValue* v = slot.getValue(exec, base, m_ident)->toJSNumber(exec); 1569 base->put(exec, m_ident, jsNumber( v->toNumber(exec) + 1));1569 base->put(exec, m_ident, jsNumber(exec, v->toNumber(exec) + 1)); 1570 1570 return v; 1571 1571 } … … 1588 1588 JSValue** slot = &exec->localStorage()[m_index].value; 1589 1589 JSValue* v = (*slot)->toJSNumber(exec); 1590 *slot = jsNumber( v->toNumber(exec) + 1);1590 *slot = jsNumber(exec, v->toNumber(exec) + 1); 1591 1591 return v; 1592 1592 } … … 1628 1628 JSObject* base = *iter; 1629 1629 JSValue* v = slot.getValue(exec, base, m_ident)->toJSNumber(exec); 1630 base->put(exec, m_ident, jsNumber( v->toNumber(exec) - 1));1630 base->put(exec, m_ident, jsNumber(exec, v->toNumber(exec) - 1)); 1631 1631 return v; 1632 1632 } … … 1649 1649 JSValue** slot = &exec->localStorage()[m_index].value; 1650 1650 JSValue* v = (*slot)->toJSNumber(exec); 1651 *slot = jsNumber( v->toNumber(exec) - 1);1651 *slot = jsNumber(exec, v->toNumber(exec) - 1); 1652 1652 return v; 1653 1653 } … … 1659 1659 JSValue** slot = &exec->localStorage()[m_index].value; 1660 1660 double n = (*slot)->toNumber(exec); 1661 *slot = jsNumber( n - 1);1661 *slot = jsNumber(exec, n - 1); 1662 1662 return n; 1663 1663 } … … 1713 1713 1714 1714 JSValue* v2 = v->toJSNumber(exec); 1715 base->put(exec, propertyIndex, jsNumber( v2->toNumber(exec) + 1));1715 base->put(exec, propertyIndex, jsNumber(exec, v2->toNumber(exec) + 1)); 1716 1716 1717 1717 return v2; … … 1724 1724 1725 1725 JSValue* v2 = v->toJSNumber(exec); 1726 base->put(exec, propertyName, jsNumber( v2->toNumber(exec) + 1));1726 base->put(exec, propertyName, jsNumber(exec, v2->toNumber(exec) + 1)); 1727 1727 return v2; 1728 1728 } … … 1744 1744 1745 1745 JSValue* v2 = v->toJSNumber(exec); 1746 base->put(exec, propertyIndex, jsNumber( v2->toNumber(exec) - 1));1746 base->put(exec, propertyIndex, jsNumber(exec, v2->toNumber(exec) - 1)); 1747 1747 return v2; 1748 1748 } … … 1754 1754 1755 1755 JSValue* v2 = v->toJSNumber(exec); 1756 base->put(exec, propertyName, jsNumber( v2->toNumber(exec) - 1));1756 base->put(exec, propertyName, jsNumber(exec, v2->toNumber(exec) - 1)); 1757 1757 return v2; 1758 1758 } … … 1776 1776 1777 1777 JSValue* v2 = v->toJSNumber(exec); 1778 base->put(exec, m_ident, jsNumber( v2->toNumber(exec) + 1));1778 base->put(exec, m_ident, jsNumber(exec, v2->toNumber(exec) + 1)); 1779 1779 return v2; 1780 1780 } … … 1791 1791 1792 1792 JSValue* v2 = v->toJSNumber(exec); 1793 base->put(exec, m_ident, jsNumber( v2->toNumber(exec) - 1));1793 base->put(exec, m_ident, jsNumber(exec, v2->toNumber(exec) - 1)); 1794 1794 return v2; 1795 1795 } … … 1928 1928 } 1929 1929 1930 static JSValue* typeStringForValue( JSValue* v) KJS_FAST_CALL;1931 static JSValue* typeStringForValue( JSValue* v)1930 static JSValue* typeStringForValue(ExecState*, JSValue*) KJS_FAST_CALL; 1931 static JSValue* typeStringForValue(ExecState* exec, JSValue* v) 1932 1932 { 1933 1933 switch (v->type()) { 1934 1934 case UndefinedType: 1935 return jsString( "undefined");1935 return jsString(exec, "undefined"); 1936 1936 case NullType: 1937 return jsString( "object");1937 return jsString(exec, "object"); 1938 1938 case BooleanType: 1939 return jsString( "boolean");1939 return jsString(exec, "boolean"); 1940 1940 case NumberType: 1941 return jsString( "number");1941 return jsString(exec, "number"); 1942 1942 case StringType: 1943 return jsString( "string");1943 return jsString(exec, "string"); 1944 1944 default: 1945 1945 if (v->isObject()) { … … 1947 1947 // as null when doing comparisons. 1948 1948 if (static_cast<JSObject*>(v)->masqueradeAsUndefined()) 1949 return jsString( "undefined");1949 return jsString(exec, "undefined"); 1950 1950 else if (static_cast<JSObject*>(v)->implementsCall()) 1951 return jsString( "function");1951 return jsString(exec, "function"); 1952 1952 } 1953 1953 1954 return jsString( "object");1954 return jsString(exec, "object"); 1955 1955 } 1956 1956 } … … 1967 1967 ASSERT(exec->variableObject() == exec->scopeChain().top()); 1968 1968 1969 return typeStringForValue(exec ->localStorage()[m_index].value);1969 return typeStringForValue(exec, exec->localStorage()[m_index].value); 1970 1970 } 1971 1971 … … 1985 1985 if (base->getPropertySlot(exec, m_ident, slot)) { 1986 1986 JSValue* v = slot.getValue(exec, base, m_ident); 1987 return typeStringForValue( v);1987 return typeStringForValue(exec, v); 1988 1988 } 1989 1989 … … 1991 1991 } while (iter != end); 1992 1992 1993 return jsString( "undefined");1993 return jsString(exec, "undefined"); 1994 1994 } 1995 1995 … … 2001 2001 KJS_CHECKEXCEPTIONVALUE 2002 2002 2003 return typeStringForValue( v);2003 return typeStringForValue(exec, v); 2004 2004 } 2005 2005 … … 2025 2025 2026 2026 double n = (*slot)->toNumber(exec); 2027 JSValue* n2 = jsNumber( n + 1);2027 JSValue* n2 = jsNumber(exec, n + 1); 2028 2028 *slot = n2; 2029 2029 return n2; … … 2048 2048 2049 2049 double n = v->toNumber(exec); 2050 JSValue* n2 = jsNumber( n + 1);2050 JSValue* n2 = jsNumber(exec, n + 1); 2051 2051 base->put(exec, m_ident, n2); 2052 2052 … … 2077 2077 2078 2078 double n = (*slot)->toNumber(exec); 2079 JSValue* n2 = jsNumber( n - 1);2079 JSValue* n2 = jsNumber(exec, n - 1); 2080 2080 *slot = n2; 2081 2081 return n2; … … 2100 2100 2101 2101 double n = v->toNumber(exec); 2102 JSValue* n2 = jsNumber( n - 1);2102 JSValue* n2 = jsNumber(exec, n - 1); 2103 2103 base->put(exec, m_ident, n2); 2104 2104 … … 2117 2117 { 2118 2118 ASSERT(exec->variableObject() == exec->scopeChain().top()); 2119 return jsNumber(exec ->localStorage()[m_index].value->toNumber(exec) + 1);2119 return jsNumber(exec, exec->localStorage()[m_index].value->toNumber(exec) + 1); 2120 2120 } 2121 2121 … … 2125 2125 { 2126 2126 ASSERT(exec->variableObject() == exec->scopeChain().top()); 2127 return jsNumber(exec ->localStorage()[m_index].value->toNumber(exec) - 1);2127 return jsNumber(exec, exec->localStorage()[m_index].value->toNumber(exec) - 1); 2128 2128 } 2129 2129 … … 2133 2133 { 2134 2134 ASSERT(exec->variableObject() == exec->scopeChain().top()); 2135 return jsNumber(exec ->localStorage()[m_index].value->toNumber(exec));2135 return jsNumber(exec, exec->localStorage()[m_index].value->toNumber(exec)); 2136 2136 } 2137 2137 … … 2141 2141 { 2142 2142 ASSERT(exec->variableObject() == exec->scopeChain().top()); 2143 return jsNumber(exec ->localStorage()[m_index].value->toNumber(exec));2143 return jsNumber(exec, exec->localStorage()[m_index].value->toNumber(exec)); 2144 2144 } 2145 2145 … … 2167 2167 KJS_CHECKEXCEPTIONVALUE 2168 2168 2169 JSValue* n2 = jsNumber( v->toNumber(exec) + 1);2169 JSValue* n2 = jsNumber(exec, v->toNumber(exec) + 1); 2170 2170 base->put(exec, propertyIndex, n2); 2171 2171 … … 2178 2178 KJS_CHECKEXCEPTIONVALUE 2179 2179 2180 JSValue* n2 = jsNumber( v->toNumber(exec) + 1);2180 JSValue* n2 = jsNumber(exec, v->toNumber(exec) + 1); 2181 2181 base->put(exec, propertyName, n2); 2182 2182 … … 2199 2199 KJS_CHECKEXCEPTIONVALUE 2200 2200 2201 JSValue* n2 = jsNumber( v->toNumber(exec) - 1);2201 JSValue* n2 = jsNumber(exec, v->toNumber(exec) - 1); 2202 2202 base->put(exec, propertyIndex, n2); 2203 2203 … … 2210 2210 KJS_CHECKEXCEPTIONVALUE 2211 2211 2212 JSValue* n2 = jsNumber( v->toNumber(exec) - 1);2212 JSValue* n2 = jsNumber(exec, v->toNumber(exec) - 1); 2213 2213 base->put(exec, propertyName, n2); 2214 2214 … … 2234 2234 2235 2235 double n = v->toNumber(exec); 2236 JSValue* n2 = jsNumber( n + 1);2236 JSValue* n2 = jsNumber(exec, n + 1); 2237 2237 base->put(exec, m_ident, n2); 2238 2238 … … 2251 2251 2252 2252 double n = v->toNumber(exec); 2253 JSValue* n2 = jsNumber( n - 1);2253 JSValue* n2 = jsNumber(exec, n - 1); 2254 2254 base->put(exec, m_ident, n2); 2255 2255 … … 2313 2313 { 2314 2314 // No need to check exception, caller will do so right after evaluate() 2315 return jsNumber( -m_expr->evaluateToNumber(exec));2315 return jsNumber(exec, -m_expr->evaluateToNumber(exec)); 2316 2316 } 2317 2317 … … 2337 2337 JSValue* BitwiseNotNode::evaluate(ExecState* exec) 2338 2338 { 2339 return jsNumber( inlineEvaluateToInt32(exec));2339 return jsNumber(exec, inlineEvaluateToInt32(exec)); 2340 2340 } 2341 2341 … … 2397 2397 JSValue* MultNode::evaluate(ExecState* exec) 2398 2398 { 2399 return jsNumber( inlineEvaluateToNumber(exec));2399 return jsNumber(exec, inlineEvaluateToNumber(exec)); 2400 2400 } 2401 2401 … … 2438 2438 JSValue* DivNode::evaluate(ExecState* exec) 2439 2439 { 2440 return jsNumber( inlineEvaluateToNumber(exec));2440 return jsNumber(exec, inlineEvaluateToNumber(exec)); 2441 2441 } 2442 2442 … … 2473 2473 JSValue* ModNode::evaluate(ExecState* exec) 2474 2474 { 2475 return jsNumber( inlineEvaluateToNumber(exec));2475 return jsNumber(exec, inlineEvaluateToNumber(exec)); 2476 2476 } 2477 2477 … … 2524 2524 if (value.isNull()) 2525 2525 return throwOutOfMemoryError(exec); 2526 return jsString( value);2527 } 2528 2529 return jsNumber( p1->toNumber(exec) + p2->toNumber(exec));2526 return jsString(exec, value); 2527 } 2528 2529 return jsNumber(exec, p1->toNumber(exec) + p2->toNumber(exec)); 2530 2530 } 2531 2531 … … 2563 2563 2564 2564 if (bothTypes == ((NumberType << 3) | NumberType)) 2565 return jsNumber( v1->toNumber(exec) + v2->toNumber(exec));2565 return jsNumber(exec, v1->toNumber(exec) + v2->toNumber(exec)); 2566 2566 if (bothTypes == ((StringType << 3) | StringType)) { 2567 2567 UString value = static_cast<StringImp*>(v1)->value() + static_cast<StringImp*>(v2)->value(); 2568 2568 if (value.isNull()) 2569 2569 return throwOutOfMemoryError(exec); 2570 return jsString( value);2570 return jsString(exec, value); 2571 2571 } 2572 2572 … … 2648 2648 JSValue* AddNumbersNode::evaluate(ExecState* exec) 2649 2649 { 2650 return jsNumber( inlineEvaluateToNumber(exec));2650 return jsNumber(exec, inlineEvaluateToNumber(exec)); 2651 2651 } 2652 2652 … … 2674 2674 KJS_CHECKEXCEPTIONVALUE 2675 2675 2676 return jsString( static_cast<StringImp*>(v1)->value() + static_cast<StringImp*>(v2)->value());2676 return jsString(exec, static_cast<StringImp*>(v1)->value() + static_cast<StringImp*>(v2)->value()); 2677 2677 } 2678 2678 … … 2686 2686 2687 2687 JSValue* p2 = v2->toPrimitive(exec, UnspecifiedType); 2688 return jsString( static_cast<StringImp*>(v1)->value() + p2->toString(exec));2688 return jsString(exec, static_cast<StringImp*>(v1)->value() + p2->toString(exec)); 2689 2689 } 2690 2690 … … 2698 2698 2699 2699 JSValue* p1 = v1->toPrimitive(exec, UnspecifiedType); 2700 return jsString( p1->toString(exec) + static_cast<StringImp*>(v2)->value());2700 return jsString(exec, p1->toString(exec) + static_cast<StringImp*>(v2)->value()); 2701 2701 } 2702 2702 … … 2718 2718 JSValue* SubNode::evaluate(ExecState* exec) 2719 2719 { 2720 return jsNumber( inlineEvaluateToNumber(exec));2720 return jsNumber(exec, inlineEvaluateToNumber(exec)); 2721 2721 } 2722 2722 … … 2755 2755 JSValue* LeftShiftNode::evaluate(ExecState* exec) 2756 2756 { 2757 return jsNumber( inlineEvaluateToInt32(exec));2757 return jsNumber(exec, inlineEvaluateToInt32(exec)); 2758 2758 } 2759 2759 … … 2790 2790 JSValue* RightShiftNode::evaluate(ExecState* exec) 2791 2791 { 2792 return jsNumber( inlineEvaluateToInt32(exec));2792 return jsNumber(exec, inlineEvaluateToInt32(exec)); 2793 2793 } 2794 2794 … … 2825 2825 JSValue* UnsignedRightShiftNode::evaluate(ExecState* exec) 2826 2826 { 2827 return jsNumber( inlineEvaluateToUInt32(exec));2827 return jsNumber(exec, inlineEvaluateToUInt32(exec)); 2828 2828 } 2829 2829 … … 3276 3276 JSValue* BitXOrNode::evaluate(ExecState* exec) 3277 3277 { 3278 return jsNumber( inlineEvaluateToInt32(exec));3278 return jsNumber(exec, inlineEvaluateToInt32(exec)); 3279 3279 } 3280 3280 … … 3315 3315 JSValue* BitOrNode::evaluate(ExecState* exec) 3316 3316 { 3317 return jsNumber( inlineEvaluateToInt32(exec));3317 return jsNumber(exec, inlineEvaluateToInt32(exec)); 3318 3318 } 3319 3319 … … 3445 3445 switch (oper) { 3446 3446 case OpMultEq: 3447 v = jsNumber( current->toNumber(exec) * right->evaluateToNumber(exec));3447 v = jsNumber(exec, current->toNumber(exec) * right->evaluateToNumber(exec)); 3448 3448 break; 3449 3449 case OpDivEq: 3450 v = jsNumber( current->toNumber(exec) / right->evaluateToNumber(exec));3450 v = jsNumber(exec, current->toNumber(exec) / right->evaluateToNumber(exec)); 3451 3451 break; 3452 3452 case OpPlusEq: … … 3454 3454 break; 3455 3455 case OpMinusEq: 3456 v = jsNumber( current->toNumber(exec) - right->evaluateToNumber(exec));3456 v = jsNumber(exec, current->toNumber(exec) - right->evaluateToNumber(exec)); 3457 3457 break; 3458 3458 case OpLShift: 3459 3459 i1 = current->toInt32(exec); 3460 3460 i2 = right->evaluateToInt32(exec); 3461 v = jsNumber( i1 << i2);3461 v = jsNumber(exec, i1 << i2); 3462 3462 break; 3463 3463 case OpRShift: 3464 3464 i1 = current->toInt32(exec); 3465 3465 i2 = right->evaluateToInt32(exec); 3466 v = jsNumber( i1 >> i2);3466 v = jsNumber(exec, i1 >> i2); 3467 3467 break; 3468 3468 case OpURShift: 3469 3469 ui = current->toUInt32(exec); 3470 3470 i2 = right->evaluateToInt32(exec); 3471 v = jsNumber( ui >> i2);3471 v = jsNumber(exec, ui >> i2); 3472 3472 break; 3473 3473 case OpAndEq: 3474 3474 i1 = current->toInt32(exec); 3475 3475 i2 = right->evaluateToInt32(exec); 3476 v = jsNumber( i1 & i2);3476 v = jsNumber(exec, i1 & i2); 3477 3477 break; 3478 3478 case OpXOrEq: 3479 3479 i1 = current->toInt32(exec); 3480 3480 i2 = right->evaluateToInt32(exec); 3481 v = jsNumber( i1 ^ i2);3481 v = jsNumber(exec, i1 ^ i2); 3482 3482 break; 3483 3483 case OpOrEq: 3484 3484 i1 = current->toInt32(exec); 3485 3485 i2 = right->evaluateToInt32(exec); 3486 v = jsNumber( i1 | i2);3486 v = jsNumber(exec, i1 | i2); 3487 3487 break; 3488 3488 case OpModEq: { 3489 3489 double d1 = current->toNumber(exec); 3490 3490 double d2 = right->evaluateToNumber(exec); 3491 v = jsNumber( fmod(d1, d2));3491 v = jsNumber(exec, fmod(d1, d2)); 3492 3492 } 3493 3493 break; … … 4241 4241 continue; 4242 4242 4243 JSValue* str = jsOwnedString( name.ustring());4243 JSValue* str = jsOwnedString(exec, name.ustring()); 4244 4244 4245 4245 if (m_lexpr->isResolveNode()) { … … 4567 4567 4568 4568 if (m_catchBlock && exec->completionType() == Throw) { 4569 JSObject* obj = new JSObject;4569 JSObject* obj = new (exec) JSObject; 4570 4570 obj->putDirect(m_exceptionIdent, result, DontDelete); 4571 4571 exec->dynamicGlobalObject()->tearOffActivation(exec); … … 4927 4927 FunctionImp* FuncDeclNode::makeFunction(ExecState* exec) 4928 4928 { 4929 FunctionImp* func = new FunctionImp(exec, m_ident, m_body.get(), exec->scopeChain());4929 FunctionImp* func = new (exec) FunctionImp(exec, m_ident, m_body.get(), exec->scopeChain()); 4930 4930 4931 4931 JSObject* proto = exec->lexicalGlobalObject()->objectConstructor()->construct(exec, exec->emptyList()); 4932 4932 proto->putDirect(exec->propertyNames().constructor, func, DontEnum); 4933 4933 func->putDirect(exec->propertyNames().prototype, proto, DontDelete); 4934 func->putDirect(exec->propertyNames().length, jsNumber( m_body->parameters().size()), ReadOnly | DontDelete | DontEnum);4934 func->putDirect(exec->propertyNames().length, jsNumber(exec, m_body->parameters().size()), ReadOnly | DontDelete | DontEnum); 4935 4935 return func; 4936 4936 } … … 4961 4961 // but they won't register with the current scope chain and should 4962 4962 // be contained as single property in an anonymous object. 4963 functionScopeObject = new JSObject;4963 functionScopeObject = new (exec) JSObject; 4964 4964 exec->pushScope(functionScopeObject); 4965 4965 } 4966 4966 4967 FunctionImp* func = new FunctionImp(exec, m_ident, m_body.get(), exec->scopeChain());4967 FunctionImp* func = new (exec) FunctionImp(exec, m_ident, m_body.get(), exec->scopeChain()); 4968 4968 JSObject* proto = exec->lexicalGlobalObject()->objectConstructor()->construct(exec, exec->emptyList()); 4969 4969 proto->putDirect(exec->propertyNames().constructor, func, DontEnum);
Note:
See TracChangeset
for help on using the changeset viewer.