Changeset 10084 in webkit for trunk/JavaScriptCore/kjs/nodes.cpp


Ignore:
Timestamp:
Aug 7, 2005, 9:07:46 PM (20 years ago)
Author:
darin
Message:

JavaScriptCore:

Rubber stamped by Maciej.

Global replaces and other wonderful stuff.

  • bindings/NP_jsobject.cpp: (_NPN_Invoke): (_NPN_Evaluate): (_NPN_GetProperty): (_NPN_SetProperty): (_NPN_HasMethod): (_NPN_SetException):
  • bindings/c/c_instance.cpp: (KJS::Bindings::CInstance::CInstance): (KJS::Bindings::CInstance::invokeMethod): (KJS::Bindings::CInstance::invokeDefaultMethod): (KJS::Bindings::CInstance::defaultValue): (KJS::Bindings::CInstance::stringValue): (KJS::Bindings::CInstance::numberValue): (KJS::Bindings::CInstance::booleanValue): (KJS::Bindings::CInstance::valueOf):
  • bindings/c/c_instance.h:
  • bindings/c/c_runtime.cpp: (CField::valueFromInstance): (CField::setValueToInstance):
  • bindings/c/c_runtime.h:
  • bindings/c/c_utility.cpp: (convertNPStringToUTF16): (convertUTF8ToUTF16): (coerceValueToNPVariantStringType): (convertValueToNPVariant): (convertNPVariantToValue):
  • bindings/c/c_utility.h:
  • bindings/jni/jni_instance.cpp: (JavaInstance::stringValue): (JavaInstance::numberValue): (JavaInstance::booleanValue): (JavaInstance::invokeMethod): (JavaInstance::invokeDefaultMethod): (JavaInstance::defaultValue): (JavaInstance::valueOf):
  • bindings/jni/jni_instance.h:
  • bindings/jni/jni_jsobject.cpp: (JSObject::invoke): (JSObject::call): (JSObject::eval): (JSObject::getMember): (JSObject::getSlot): (JSObject::toString): (JSObject::convertValueToJObject): (JSObject::convertJObjectToValue): (JSObject::listFromJArray):
  • bindings/jni/jni_jsobject.h:
  • bindings/jni/jni_objc.mm: (KJS::Bindings::dispatchJNICall):
  • bindings/jni/jni_runtime.cpp: (JavaArray::convertJObjectToArray): (JavaField::dispatchValueFromInstance): (JavaField::valueFromInstance): (JavaField::dispatchSetValueToInstance): (JavaField::setValueToInstance): (JavaArray::setValueAt): (JavaArray::valueAt):
  • bindings/jni/jni_runtime.h: (KJS::Bindings::JavaString::ustring):
  • bindings/jni/jni_utility.cpp: (KJS::Bindings::getJavaVM): (KJS::Bindings::getJNIEnv): (KJS::Bindings::getMethodID): (KJS::Bindings::callJNIVoidMethod): (KJS::Bindings::callJNIObjectMethod): (KJS::Bindings::callJNIBooleanMethod): (KJS::Bindings::callJNIStaticBooleanMethod): (KJS::Bindings::callJNIByteMethod): (KJS::Bindings::callJNICharMethod): (KJS::Bindings::callJNIShortMethod): (KJS::Bindings::callJNIIntMethod): (KJS::Bindings::callJNILongMethod): (KJS::Bindings::callJNIFloatMethod): (KJS::Bindings::callJNIDoubleMethod): (KJS::Bindings::callJNIVoidMethodA): (KJS::Bindings::callJNIObjectMethodA): (KJS::Bindings::callJNIByteMethodA): (KJS::Bindings::callJNICharMethodA): (KJS::Bindings::callJNIShortMethodA): (KJS::Bindings::callJNIIntMethodA): (KJS::Bindings::callJNILongMethodA): (KJS::Bindings::callJNIFloatMethodA): (KJS::Bindings::callJNIDoubleMethodA): (KJS::Bindings::callJNIBooleanMethodA): (KJS::Bindings::callJNIVoidMethodIDA): (KJS::Bindings::callJNIObjectMethodIDA): (KJS::Bindings::callJNIByteMethodIDA): (KJS::Bindings::callJNICharMethodIDA): (KJS::Bindings::callJNIShortMethodIDA): (KJS::Bindings::callJNIIntMethodIDA): (KJS::Bindings::callJNILongMethodIDA): (KJS::Bindings::callJNIFloatMethodIDA): (KJS::Bindings::callJNIDoubleMethodIDA): (KJS::Bindings::callJNIBooleanMethodIDA): (KJS::Bindings::getCharactersFromJString): (KJS::Bindings::releaseCharactersForJString): (KJS::Bindings::getCharactersFromJStringInEnv): (KJS::Bindings::releaseCharactersForJStringInEnv): (KJS::Bindings::getUCharactersFromJStringInEnv): (KJS::Bindings::releaseUCharactersForJStringInEnv): (KJS::Bindings::JNITypeFromClassName): (KJS::Bindings::signatureFromPrimitiveType): (KJS::Bindings::JNITypeFromPrimitiveType): (KJS::Bindings::getJNIField): (KJS::Bindings::convertValueToJValue):
  • bindings/jni/jni_utility.h:
  • bindings/objc/WebScriptObject.mm: (_didExecute): (-[WebScriptObject _initializeWithObjectImp:originExecutionContext:Bindings::executionContext:Bindings::]): (-[WebScriptObject _initWithObjectImp:originExecutionContext:Bindings::executionContext:Bindings::]): (-[WebScriptObject _imp]): (-[WebScriptObject _executionContext]): (-[WebScriptObject _setExecutionContext:]): (-[WebScriptObject _originExecutionContext]): (-[WebScriptObject _setOriginExecutionContext:]): (+[WebScriptObject throwException:]): (listFromNSArray): (-[WebScriptObject callWebScriptMethod:withArguments:]): (-[WebScriptObject evaluateWebScript:]): (-[WebScriptObject setValue:forKey:]): (-[WebScriptObject valueForKey:]): (-[WebScriptObject removeWebScriptKey:]): (-[WebScriptObject stringRepresentation]): (-[WebScriptObject webScriptValueAtIndex:]): (-[WebScriptObject setException:]): (+[WebScriptObject _convertValueToObjcValue:originExecutionContext:executionContext:Bindings::]):
  • bindings/objc/WebScriptObjectPrivate.h:
  • bindings/objc/objc_class.h:
  • bindings/objc/objc_class.mm: (KJS::Bindings::ObjcClass::fallbackObject):
  • bindings/objc/objc_instance.h:
  • bindings/objc/objc_instance.mm: (ObjcInstance::invokeMethod): (ObjcInstance::invokeDefaultMethod): (ObjcInstance::setValueOfField): (ObjcInstance::setValueOfUndefinedField): (ObjcInstance::getValueOfField): (ObjcInstance::getValueOfUndefinedField): (ObjcInstance::defaultValue): (ObjcInstance::stringValue): (ObjcInstance::numberValue): (ObjcInstance::booleanValue): (ObjcInstance::valueOf):
  • bindings/objc/objc_runtime.h:
  • bindings/objc/objc_runtime.mm: (ObjcField::valueFromInstance): (convertValueToObjcObject): (ObjcField::setValueToInstance): (ObjcArray::setValueAt): (ObjcArray::valueAt): (ObjcFallbackObjectImp::put): (ObjcFallbackObjectImp::callAsFunction): (ObjcFallbackObjectImp::defaultValue):
  • bindings/objc/objc_utility.h:
  • bindings/objc/objc_utility.mm: (Bindings::JSMethodNameToObjCMethodName): (Bindings::convertValueToObjcValue): (Bindings::convertNSStringToString): (Bindings::convertObjcValueToValue): (Bindings::objcValueTypeForType): (Bindings::createObjcInstanceForValue):
  • bindings/runtime.cpp: (Instance::getValueOfField): (Instance::setValueOfField): (Instance::createRuntimeObject): (Instance::createLanguageInstanceForValue):
  • bindings/runtime.h: (KJS::Bindings::Constructor::~Constructor): (KJS::Bindings::Field::~Field): (KJS::Bindings::MethodList::MethodList): (KJS::Bindings::Class::fallbackObject): (KJS::Bindings::Class::~Class): (KJS::Bindings::Instance::Instance): (KJS::Bindings::Instance::getValueOfUndefinedField): (KJS::Bindings::Instance::supportsSetValueOfUndefinedField): (KJS::Bindings::Instance::setValueOfUndefinedField): (KJS::Bindings::Instance::valueOf): (KJS::Bindings::Instance::setExecutionContext): (KJS::Bindings::Instance::~Instance): (KJS::Bindings::Array::~Array):
  • bindings/runtime_array.cpp: (RuntimeArrayImp::RuntimeArrayImp): (RuntimeArrayImp::lengthGetter): (RuntimeArrayImp::indexGetter): (RuntimeArrayImp::put):
  • bindings/runtime_array.h:
  • bindings/runtime_method.cpp: (RuntimeMethodImp::lengthGetter): (RuntimeMethodImp::callAsFunction):
  • bindings/runtime_method.h:
  • bindings/runtime_object.cpp: (RuntimeObjectImp::fallbackObjectGetter): (RuntimeObjectImp::fieldGetter): (RuntimeObjectImp::methodGetter): (RuntimeObjectImp::getOwnPropertySlot): (RuntimeObjectImp::put): (RuntimeObjectImp::defaultValue): (RuntimeObjectImp::callAsFunction):
  • bindings/runtime_object.h:
  • kjs/array_instance.h:
  • kjs/array_object.cpp: (ArrayInstanceImp::ArrayInstanceImp): (ArrayInstanceImp::lengthGetter): (ArrayInstanceImp::getOwnPropertySlot): (ArrayInstanceImp::put): (ArrayInstanceImp::propList): (ArrayInstanceImp::setLength): (compareByStringForQSort): (compareWithCompareFunctionForQSort): (ArrayInstanceImp::sort): (ArrayInstanceImp::pushUndefinedObjectsToEnd): (ArrayPrototypeImp::ArrayPrototypeImp): (ArrayProtoFuncImp::ArrayProtoFuncImp): (ArrayProtoFuncImp::callAsFunction): (ArrayObjectImp::ArrayObjectImp): (ArrayObjectImp::construct): (ArrayObjectImp::callAsFunction):
  • kjs/array_object.h:
  • kjs/bool_object.cpp: (BooleanPrototypeImp::BooleanPrototypeImp): (BooleanProtoFuncImp::BooleanProtoFuncImp): (BooleanProtoFuncImp::callAsFunction): (BooleanObjectImp::BooleanObjectImp): (BooleanObjectImp::construct): (BooleanObjectImp::callAsFunction):
  • kjs/bool_object.h:
  • kjs/collector.cpp: (KJS::Collector::markStackObjectsConservatively): (KJS::Collector::collect): (KJS::className):
  • kjs/completion.h: (KJS::Completion::Completion): (KJS::Completion::value): (KJS::Completion::isValueCompletion):
  • kjs/context.h: (KJS::ContextImp::variableObject): (KJS::ContextImp::setVariableObject): (KJS::ContextImp::thisValue): (KJS::ContextImp::activationObject): (KJS::ContextImp::pushScope):
  • kjs/date_object.cpp: (formatLocaleDate): (KJS::timeFromArgs): (KJS::DatePrototypeImp::DatePrototypeImp): (KJS::DateProtoFuncImp::DateProtoFuncImp): (KJS::DateProtoFuncImp::callAsFunction): (KJS::DateObjectImp::DateObjectImp): (KJS::DateObjectImp::construct): (KJS::DateObjectImp::callAsFunction): (KJS::DateObjectFuncImp::DateObjectFuncImp): (KJS::DateObjectFuncImp::callAsFunction): (KJS::parseDate): (KJS::KRFCDate_parseDate): (KJS::timeClip):
  • kjs/date_object.h:
  • kjs/debugger.cpp: (Debugger::exception): (Debugger::callEvent): (Debugger::returnEvent):
  • kjs/debugger.h:
  • kjs/error_object.cpp: (ErrorPrototypeImp::ErrorPrototypeImp): (ErrorProtoFuncImp::ErrorProtoFuncImp): (ErrorProtoFuncImp::callAsFunction): (ErrorObjectImp::ErrorObjectImp): (ErrorObjectImp::construct): (ErrorObjectImp::callAsFunction): (NativeErrorPrototypeImp::NativeErrorPrototypeImp): (NativeErrorImp::NativeErrorImp): (NativeErrorImp::construct): (NativeErrorImp::callAsFunction):
  • kjs/error_object.h:
  • kjs/function.cpp: (KJS::FunctionImp::FunctionImp): (KJS::FunctionImp::callAsFunction): (KJS::FunctionImp::processParameters): (KJS::FunctionImp::argumentsGetter): (KJS::FunctionImp::lengthGetter): (KJS::FunctionImp::put): (KJS::DeclaredFunctionImp::DeclaredFunctionImp): (KJS::DeclaredFunctionImp::construct): (KJS::ArgumentsImp::ArgumentsImp): (KJS::ArgumentsImp::mappedIndexGetter): (KJS::ArgumentsImp::put): (KJS::ActivationImp::argumentsGetter): (KJS::GlobalFuncImp::GlobalFuncImp): (KJS::encode): (KJS::decode): (KJS::GlobalFuncImp::callAsFunction):
  • kjs/function.h:
  • kjs/function_object.cpp: (FunctionPrototypeImp::FunctionPrototypeImp): (FunctionPrototypeImp::callAsFunction): (FunctionProtoFuncImp::FunctionProtoFuncImp): (FunctionProtoFuncImp::callAsFunction): (FunctionObjectImp::FunctionObjectImp): (FunctionObjectImp::construct): (FunctionObjectImp::callAsFunction):
  • kjs/function_object.h:
  • kjs/internal.cpp: (KJS::UndefinedImp::toPrimitive): (KJS::UndefinedImp::toObject): (KJS::NullImp::toPrimitive): (KJS::NullImp::toObject): (KJS::BooleanImp::toPrimitive): (KJS::BooleanImp::toObject): (KJS::StringImp::toPrimitive): (KJS::StringImp::toObject): (KJS::NumberImp::toPrimitive): (KJS::NumberImp::toObject): (KJS::NumberImp::getUInt32): (KJS::LabelStack::push): (KJS::ContextImp::ContextImp): (KJS::InterpreterImp::globalInit): (KJS::InterpreterImp::globalClear): (KJS::InterpreterImp::InterpreterImp): (KJS::InterpreterImp::initGlobalObject): (KJS::InterpreterImp::clear): (KJS::InterpreterImp::mark): (KJS::InterpreterImp::evaluate): (KJS::InternalFunctionImp::hasInstance): (KJS::roundValue): (KJS::printInfo):
  • kjs/internal.h: (KJS::InterpreterImp::builtinObject): (KJS::InterpreterImp::builtinFunction): (KJS::InterpreterImp::builtinArray): (KJS::InterpreterImp::builtinBoolean): (KJS::InterpreterImp::builtinString): (KJS::InterpreterImp::builtinNumber): (KJS::InterpreterImp::builtinDate): (KJS::InterpreterImp::builtinRegExp): (KJS::InterpreterImp::builtinError): (KJS::InterpreterImp::builtinObjectPrototype): (KJS::InterpreterImp::builtinFunctionPrototype): (KJS::InterpreterImp::builtinArrayPrototype): (KJS::InterpreterImp::builtinBooleanPrototype): (KJS::InterpreterImp::builtinStringPrototype): (KJS::InterpreterImp::builtinNumberPrototype): (KJS::InterpreterImp::builtinDatePrototype): (KJS::InterpreterImp::builtinRegExpPrototype): (KJS::InterpreterImp::builtinErrorPrototype): (KJS::InterpreterImp::builtinEvalError): (KJS::InterpreterImp::builtinRangeError): (KJS::InterpreterImp::builtinReferenceError): (KJS::InterpreterImp::builtinSyntaxError): (KJS::InterpreterImp::builtinTypeError): (KJS::InterpreterImp::builtinURIError): (KJS::InterpreterImp::builtinEvalErrorPrototype): (KJS::InterpreterImp::builtinRangeErrorPrototype): (KJS::InterpreterImp::builtinReferenceErrorPrototype): (KJS::InterpreterImp::builtinSyntaxErrorPrototype): (KJS::InterpreterImp::builtinTypeErrorPrototype): (KJS::InterpreterImp::builtinURIErrorPrototype):
  • kjs/interpreter.cpp: (Context::variableObject): (Context::thisValue): (Interpreter::Interpreter): (Interpreter::globalObject): (Interpreter::evaluate): (Interpreter::builtinObject): (Interpreter::builtinFunction): (Interpreter::builtinArray): (Interpreter::builtinBoolean): (Interpreter::builtinString): (Interpreter::builtinNumber): (Interpreter::builtinDate): (Interpreter::builtinRegExp): (Interpreter::builtinError): (Interpreter::builtinObjectPrototype): (Interpreter::builtinFunctionPrototype): (Interpreter::builtinArrayPrototype): (Interpreter::builtinBooleanPrototype): (Interpreter::builtinStringPrototype): (Interpreter::builtinNumberPrototype): (Interpreter::builtinDatePrototype): (Interpreter::builtinRegExpPrototype): (Interpreter::builtinErrorPrototype): (Interpreter::builtinEvalError): (Interpreter::builtinRangeError): (Interpreter::builtinReferenceError): (Interpreter::builtinSyntaxError): (Interpreter::builtinTypeError): (Interpreter::builtinURIError): (Interpreter::builtinEvalErrorPrototype): (Interpreter::builtinRangeErrorPrototype): (Interpreter::builtinReferenceErrorPrototype): (Interpreter::builtinSyntaxErrorPrototype): (Interpreter::builtinTypeErrorPrototype): (Interpreter::builtinURIErrorPrototype): (Interpreter::createLanguageInstanceForValue):
  • kjs/interpreter.h: (KJS::Interpreter::isGlobalObject): (KJS::ExecState::setException): (KJS::ExecState::clearException): (KJS::ExecState::exception): (KJS::ExecState::hadException): (KJS::ExecState::ExecState):
  • kjs/list.cpp: (KJS::List::at):
  • kjs/list.h: (KJS::List::operator[]): (KJS::ListIterator::operator->): (KJS::ListIterator::operator*): (KJS::ListIterator::operator++): (KJS::ListIterator::operator--):
  • kjs/lookup.h: (KJS::staticFunctionGetter): (KJS::staticValueGetter): (KJS::lookupPut): (KJS::cacheGlobalObject):
  • kjs/math_object.cpp: (MathObjectImp::getValueProperty): (MathFuncImp::MathFuncImp): (MathFuncImp::callAsFunction):
  • kjs/math_object.h:
  • kjs/nodes.cpp: (Node::evaluateReference): (Node::throwError): (Node::setExceptionDetailsIfNeeded): (NullNode::evaluate): (BooleanNode::evaluate): (NumberNode::evaluate): (StringNode::evaluate): (RegExpNode::evaluate): (ThisNode::evaluate): (ResolveNode::evaluate): (ResolveNode::evaluateReference): (GroupNode::evaluate): (ElementNode::evaluate): (ArrayNode::evaluate): (ObjectLiteralNode::evaluate): (PropertyValueNode::evaluate): (PropertyNode::evaluate): (AccessorNode1::evaluate): (AccessorNode1::evaluateReference): (AccessorNode2::evaluate): (AccessorNode2::evaluateReference): (ArgumentListNode::evaluate): (ArgumentListNode::evaluateList): (ArgumentsNode::evaluate): (NewExprNode::evaluate): (FunctionCallNode::evaluate): (PostfixNode::evaluate): (DeleteNode::evaluate): (VoidNode::evaluate): (TypeOfNode::evaluate): (PrefixNode::evaluate): (UnaryPlusNode::evaluate): (NegateNode::evaluate): (BitwiseNotNode::evaluate): (LogicalNotNode::evaluate): (MultNode::evaluate): (AddNode::evaluate): (ShiftNode::evaluate): (RelationalNode::evaluate): (EqualNode::evaluate): (BitOperNode::evaluate): (BinaryLogicalNode::evaluate): (ConditionalNode::evaluate): (AssignNode::evaluate): (CommaNode::evaluate): (StatListNode::execute): (AssignExprNode::evaluate): (VarDeclNode::evaluate): (VarDeclNode::processVarDecls): (VarDeclListNode::evaluate): (ExprStatementNode::execute): (IfNode::execute): (DoWhileNode::execute): (WhileNode::execute): (ForNode::execute): (ForInNode::execute): (ContinueNode::execute): (BreakNode::execute): (ReturnNode::execute): (WithNode::execute): (CaseClauseNode::evaluate): (ClauseListNode::evaluate): (CaseBlockNode::evaluate): (CaseBlockNode::evalBlock): (SwitchNode::execute): (ThrowNode::execute): (CatchNode::execute): (TryNode::execute): (ParameterNode::evaluate): (FuncDeclNode::processFuncDecl): (FuncExprNode::evaluate): (SourceElementsNode::execute):
  • kjs/nodes.h: (KJS::StatementNode::evaluate):
  • kjs/number_object.cpp: (NumberPrototypeImp::NumberPrototypeImp): (NumberProtoFuncImp::NumberProtoFuncImp): (NumberProtoFuncImp::callAsFunction): (NumberObjectImp::NumberObjectImp): (NumberObjectImp::getValueProperty): (NumberObjectImp::construct): (NumberObjectImp::callAsFunction):
  • kjs/number_object.h:
  • kjs/object.cpp: (KJS::ObjectImp::call): (KJS::ObjectImp::mark): (KJS::ObjectImp::classInfo): (KJS::ObjectImp::get): (KJS::ObjectImp::getProperty): (KJS::ObjectImp::getPropertySlot): (KJS::ObjectImp::put): (KJS::ObjectImp::hasOwnProperty): (KJS::ObjectImp::defaultValue): (KJS::ObjectImp::findPropertyHashEntry): (KJS::ObjectImp::construct): (KJS::ObjectImp::callAsFunction): (KJS::ObjectImp::hasInstance): (KJS::ObjectImp::propList): (KJS::ObjectImp::toPrimitive): (KJS::ObjectImp::toNumber): (KJS::ObjectImp::toString): (KJS::ObjectImp::toObject): (KJS::ObjectImp::putDirect): (KJS::Error::create): (KJS::error):
  • kjs/object.h: (KJS::): (KJS::ObjectImp::getPropertySlot): (KJS::AllocatedValueImp::isObject): (KJS::ObjectImp::ObjectImp): (KJS::ObjectImp::internalValue): (KJS::ObjectImp::setInternalValue): (KJS::ObjectImp::prototype): (KJS::ObjectImp::setPrototype): (KJS::ObjectImp::inherits):
  • kjs/object_object.cpp: (ObjectPrototypeImp::ObjectPrototypeImp): (ObjectProtoFuncImp::ObjectProtoFuncImp): (ObjectProtoFuncImp::callAsFunction): (ObjectObjectImp::ObjectObjectImp): (ObjectObjectImp::construct): (ObjectObjectImp::callAsFunction):
  • kjs/object_object.h:
  • kjs/operations.cpp: (KJS::equal): (KJS::strictEqual): (KJS::relation): (KJS::add): (KJS::mult):
  • kjs/operations.h:
  • kjs/property_map.cpp: (KJS::PropertyMap::mark): (KJS::PropertyMap::addEnumerablesToReferenceList): (KJS::PropertyMap::addSparseArrayPropertiesToReferenceList): (KJS::PropertyMap::save): (KJS::PropertyMap::restore):
  • kjs/property_map.h:
  • kjs/property_slot.cpp: (KJS::PropertySlot::undefinedGetter):
  • kjs/property_slot.h: (KJS::PropertySlot::getValue):
  • kjs/protect.h: (KJS::gcUnprotectNullTolerant): (KJS::ProtectedValue::ProtectedValue): (KJS::ProtectedValue::~ProtectedValue): (KJS::ProtectedValue::operator=): (KJS::ProtectedValue::operator ValueImp *): (KJS::ProtectedValue::operator->):
  • kjs/protected_object.h: (KJS::ProtectedObject::ProtectedObject): (KJS::ProtectedObject::operator=): (KJS::ProtectedObject::operator ValueImp *): (KJS::ProtectedObject::operator ObjectImp *): (KJS::ProtectedObject::operator->): (KJS::ProtectedReference::ProtectedReference): (KJS::ProtectedReference::~ProtectedReference): (KJS::ProtectedReference::operator=):
  • kjs/protected_values.cpp: (KJS::ProtectedValues::getProtectCount): (KJS::ProtectedValues::increaseProtectCount): (KJS::ProtectedValues::insert): (KJS::ProtectedValues::decreaseProtectCount):
  • kjs/protected_values.h:
  • kjs/reference.cpp: (KJS::Reference::Reference): (KJS::Reference::makeValueReference): (KJS::Reference::getBase): (KJS::Reference::getValue): (KJS::Reference::putValue): (KJS::Reference::deleteValue):
  • kjs/reference.h: (KJS::Reference::baseIfMutable):
  • kjs/regexp_object.cpp: (RegExpPrototypeImp::RegExpPrototypeImp): (RegExpProtoFuncImp::RegExpProtoFuncImp): (RegExpProtoFuncImp::callAsFunction): (RegExpObjectImp::RegExpObjectImp): (RegExpObjectImp::arrayOfMatches): (RegExpObjectImp::backrefGetter): (RegExpObjectImp::construct): (RegExpObjectImp::callAsFunction):
  • kjs/regexp_object.h:
  • kjs/string_object.cpp: (StringInstanceImp::lengthGetter): (StringInstanceImp::indexGetter): (StringInstanceImp::getOwnPropertySlot): (StringInstanceImp::put): (StringPrototypeImp::StringPrototypeImp): (StringProtoFuncImp::StringProtoFuncImp): (regExpIsGlobal): (replace): (StringProtoFuncImp::callAsFunction): (StringObjectImp::StringObjectImp): (StringObjectImp::construct): (StringObjectImp::callAsFunction): (StringObjectFuncImp::StringObjectFuncImp): (StringObjectFuncImp::callAsFunction):
  • kjs/string_object.h:
  • kjs/testkjs.cpp: (TestFunctionImp::callAsFunction): (VersionFunctionImp::callAsFunction): (main):
  • kjs/value.cpp: (KJS::AllocatedValueImp::operator new): (KJS::AllocatedValueImp::getUInt32): (KJS::ValueImp::toInteger): (KJS::ValueImp::toInt32): (KJS::ValueImp::toUInt32): (KJS::ValueImp::toUInt16): (KJS::ValueImp::toObject): (KJS::AllocatedValueImp::getBoolean): (KJS::AllocatedValueImp::getNumber): (KJS::AllocatedValueImp::getString): (KJS::AllocatedValueImp::getObject): (KJS::jsString): (KJS::jsNumber): (KJS::ConstantValues::init): (KJS::ConstantValues::clear): (KJS::ConstantValues::mark):
  • kjs/value.h: (KJS::): (KJS::jsUndefined): (KJS::jsNull): (KJS::jsBoolean): (KJS::jsNaN): (KJS::ValueImp::ValueImp): (KJS::ValueImp::~ValueImp): (KJS::AllocatedValueImp::AllocatedValueImp): (KJS::AllocatedValueImp::~AllocatedValueImp): (KJS::AllocatedValueImp::isBoolean): (KJS::AllocatedValueImp::isNumber): (KJS::AllocatedValueImp::isString): (KJS::AllocatedValueImp::isObject): (KJS::AllocatedValueImp::marked): (KJS::AllocatedValueImp::mark): (KJS::ValueImp::downcast): (KJS::ValueImp::isUndefined): (KJS::ValueImp::isNull): (KJS::ValueImp::isUndefinedOrNull): (KJS::ValueImp::isBoolean): (KJS::ValueImp::isNumber): (KJS::ValueImp::isString): (KJS::ValueImp::isObject): (KJS::ValueImp::getBoolean): (KJS::ValueImp::getNumber): (KJS::ValueImp::getString): (KJS::ValueImp::getObject): (KJS::ValueImp::getUInt32): (KJS::ValueImp::mark): (KJS::ValueImp::marked): (KJS::ValueImp::type): (KJS::ValueImp::toPrimitive): (KJS::ValueImp::toBoolean): (KJS::ValueImp::toNumber): (KJS::ValueImp::toString): (KJS::jsZero): (KJS::jsOne): (KJS::jsTwo): (KJS::Undefined): (KJS::Null): (KJS::Boolean): (KJS::Number): (KJS::String):

WebCore:

Rubber stamped by Maciej.

  • khtml/ecma/domparser.cpp: (KJS::DOMParserConstructorImp::construct): (KJS::DOMParserProtoFunc::callAsFunction):
  • khtml/ecma/domparser.h:
  • khtml/ecma/kjs_binding.cpp: (KJS::ScriptInterpreter::ScriptInterpreter): (KJS::ScriptInterpreter::isGlobalObject): (KJS::ScriptInterpreter::createLanguageInstanceForValue): (KJS::getStringOrNull): (KJS::ValueToVariant): (KJS::setDOMException):
  • khtml/ecma/kjs_binding.h: (KJS::DOMFunction::toPrimitive): (KJS::cacheDOMObject):
  • khtml/ecma/kjs_css.cpp: (KJS::DOMCSSStyleDeclaration::indexGetter): (KJS::DOMCSSStyleDeclaration::cssPropertyGetter): (KJS::DOMCSSStyleDeclaration::getValueProperty): (KJS::DOMCSSStyleDeclaration::put): (KJS::DOMCSSStyleDeclarationProtoFunc::callAsFunction): (KJS::DOMStyleSheet::getValueProperty): (KJS::DOMStyleSheet::put): (KJS::DOMStyleSheetList::getValueProperty): (KJS::DOMStyleSheetList::indexGetter): (KJS::DOMStyleSheetList::nameGetter): (KJS::DOMStyleSheetListFunc::callAsFunction): (KJS::DOMMediaList::getValueProperty): (KJS::DOMMediaList::indexGetter): (KJS::DOMMediaList::put): (KJS::KJS::DOMMediaListProtoFunc::callAsFunction): (KJS::DOMCSSStyleSheet::getValueProperty): (KJS::DOMCSSStyleSheetProtoFunc::callAsFunction): (KJS::DOMCSSRuleList::getValueProperty): (KJS::DOMCSSRuleList::indexGetter): (KJS::DOMCSSRuleListFunc::callAsFunction): (KJS::DOMCSSRule::getValueProperty): (KJS::DOMCSSRule::put): (KJS::DOMCSSRule::putValueProperty): (KJS::DOMCSSRuleFunc::callAsFunction): (KJS::CSSRuleConstructor::getValueProperty): (KJS::getCSSRuleConstructor): (KJS::DOMCSSValue::getValueProperty): (KJS::DOMCSSValue::put): (KJS::getDOMCSSValue): (KJS::CSSValueConstructor::getValueProperty): (KJS::getCSSValueConstructor): (KJS::DOMCSSPrimitiveValue::getValueProperty): (KJS::DOMCSSPrimitiveValueProtoFunc::callAsFunction): (KJS::CSSPrimitiveValueConstructor::getValueProperty): (KJS::getCSSPrimitiveValueConstructor): (KJS::DOMCSSValueList::getValueProperty): (KJS::DOMCSSValueList::indexGetter): (KJS::DOMCSSValueListFunc::callAsFunction): (KJS::DOMRGBColor::getValueProperty): (KJS::DOMRect::getValueProperty): (KJS::DOMCounter::getValueProperty):
  • khtml/ecma/kjs_css.h:
  • khtml/ecma/kjs_dom.cpp: (KJS::DOMNode::getValueProperty): (KJS::DOMNode::put): (KJS::DOMNode::putValueProperty): (KJS::DOMNode::toPrimitive): (KJS::DOMNode::getListener): (KJS::DOMNodeProtoFunc::callAsFunction): (KJS::DOMNodeList::toPrimitive): (KJS::DOMNodeList::getValueProperty): (KJS::DOMNodeList::indexGetter): (KJS::DOMNodeList::nameGetter): (KJS::DOMNodeList::callAsFunction): (KJS::DOMNodeListFunc::DOMNodeListFunc): (KJS::DOMNodeListFunc::callAsFunction): (KJS::DOMAttr::getValueProperty): (KJS::DOMAttr::put): (KJS::DOMAttr::putValueProperty): (KJS::DOMDocument::getValueProperty): (KJS::DOMDocument::put): (KJS::DOMDocument::putValueProperty): (KJS::DOMDocumentProtoFunc::callAsFunction): (KJS::DOMElement::getValueProperty): (KJS::DOMElement::attributeGetter): (KJS::DOMElement::getOwnPropertySlot): (KJS::DOMElementProtoFunc::callAsFunction): (KJS::DOMDOMImplementationProtoFunc::callAsFunction): (KJS::DOMDocumentType::getValueProperty): (KJS::DOMNamedNodeMap::lengthGetter): (KJS::DOMNamedNodeMap::indexGetter): (KJS::DOMNamedNodeMapProtoFunc::callAsFunction): (KJS::DOMProcessingInstruction::getValueProperty): (KJS::DOMProcessingInstruction::put): (KJS::DOMNotation::getValueProperty): (KJS::DOMEntity::getValueProperty): (KJS::NodeConstructor::getValueProperty): (KJS::DOMExceptionConstructor::getValueProperty): (KJS::DOMNamedNodesCollection::lengthGetter): (KJS::DOMNamedNodesCollection::indexGetter): (KJS::DOMCharacterData::getValueProperty): (KJS::DOMCharacterData::put): (KJS::DOMCharacterDataProtoFunc::callAsFunction): (KJS::DOMTextProtoFunc::callAsFunction):
  • khtml/ecma/kjs_dom.h:
  • khtml/ecma/kjs_events.cpp: (KJS::JSAbstractEventListener::handleEvent): (KJS::JSUnprotectedEventListener::JSUnprotectedEventListener): (KJS::JSUnprotectedEventListener::~JSUnprotectedEventListener): (KJS::JSUnprotectedEventListener::listenerObj): (KJS::JSUnprotectedEventListener::windowObj): (KJS::JSUnprotectedEventListener::mark): (KJS::JSEventListener::JSEventListener): (KJS::JSEventListener::~JSEventListener): (KJS::JSEventListener::listenerObj): (KJS::JSEventListener::windowObj): (KJS::JSLazyEventListener::JSLazyEventListener): (KJS::JSLazyEventListener::handleEvent): (KJS::JSLazyEventListener::listenerObj): (KJS::JSLazyEventListener::parseCode): (KJS::getNodeEventListener): (KJS::EventConstructor::getValueProperty): (KJS::getEventConstructor): (KJS::DOMEvent::getValueProperty): (KJS::DOMEvent::put): (KJS::DOMEvent::putValueProperty): (KJS::DOMEventProtoFunc::callAsFunction): (KJS::getDOMEvent): (KJS::EventExceptionConstructor::getValueProperty): (KJS::getEventExceptionConstructor): (KJS::DOMUIEvent::getValueProperty): (KJS::DOMUIEventProtoFunc::callAsFunction): (KJS::DOMMouseEvent::getValueProperty): (KJS::DOMMouseEventProtoFunc::callAsFunction): (KJS::DOMKeyboardEvent::getValueProperty): (KJS::DOMKeyboardEventProtoFunc::callAsFunction): (KJS::MutationEventConstructor::getValueProperty): (KJS::getMutationEventConstructor): (KJS::DOMMutationEvent::getValueProperty): (KJS::DOMMutationEventProtoFunc::callAsFunction): (KJS::DOMWheelEvent::getValueProperty): (KJS::DOMWheelEventProtoFunc::callAsFunction): (KJS::stringOrUndefined): (KJS::Clipboard::getValueProperty): (KJS::Clipboard::put): (KJS::Clipboard::putValueProperty): (KJS::ClipboardProtoFunc::callAsFunction):
  • khtml/ecma/kjs_events.h: (KJS::JSAbstractEventListener::listenerObjImp):
  • khtml/ecma/kjs_html.cpp: (KJS::KJS::HTMLDocFunction::callAsFunction): (KJS::HTMLDocument::namedItemGetter): (KJS::HTMLDocument::getValueProperty): (KJS::KJS::HTMLDocument::put): (KJS::KJS::HTMLDocument::putValueProperty): (KJS::HTMLElement::formIndexGetter): (KJS::HTMLElement::formNameGetter): (KJS::HTMLElement::selectIndexGetter): (KJS::HTMLElement::framesetNameGetter): (KJS::HTMLElement::frameWindowPropertyGetter): (KJS::HTMLElement::runtimeObjectGetter): (KJS::HTMLElement::runtimeObjectPropertyGetter): (KJS::HTMLElement::getOwnPropertySlot): (KJS::KJS::HTMLElement::implementsCall): (KJS::KJS::HTMLElement::callAsFunction): (KJS::HTMLElement::htmlGetter): (KJS::HTMLElement::headGetter): (KJS::HTMLElement::linkGetter): (KJS::HTMLElement::titleGetter): (KJS::HTMLElement::metaGetter): (KJS::HTMLElement::baseGetter): (KJS::HTMLElement::isIndexGetter): (KJS::HTMLElement::styleGetter): (KJS::HTMLElement::bodyGetter): (KJS::HTMLElement::formGetter): (KJS::HTMLElement::selectGetter): (KJS::HTMLElement::optGroupGetter): (KJS::HTMLElement::optionGetter): (KJS::getInputSelectionStart): (KJS::getInputSelectionEnd): (KJS::HTMLElement::inputGetter): (KJS::HTMLElement::textAreaGetter): (KJS::HTMLElement::buttonGetter): (KJS::HTMLElement::labelGetter): (KJS::HTMLElement::fieldSetGetter): (KJS::HTMLElement::legendGetter): (KJS::HTMLElement::uListGetter): (KJS::HTMLElement::oListGetter): (KJS::HTMLElement::dListGetter): (KJS::HTMLElement::dirGetter): (KJS::HTMLElement::menuGetter): (KJS::HTMLElement::liGetter): (KJS::HTMLElement::divGetter): (KJS::HTMLElement::paragraphGetter): (KJS::HTMLElement::headingGetter): (KJS::HTMLElement::blockQuoteGetter): (KJS::HTMLElement::quoteGetter): (KJS::HTMLElement::preGetter): (KJS::HTMLElement::brGetter): (KJS::HTMLElement::baseFontGetter): (KJS::HTMLElement::fontGetter): (KJS::HTMLElement::hrGetter): (KJS::HTMLElement::modGetter): (KJS::HTMLElement::anchorGetter): (KJS::HTMLElement::imageGetter): (KJS::HTMLElement::objectGetter): (KJS::HTMLElement::paramGetter): (KJS::HTMLElement::appletGetter): (KJS::HTMLElement::mapGetter): (KJS::HTMLElement::areaGetter): (KJS::HTMLElement::scriptGetter): (KJS::HTMLElement::tableGetter): (KJS::HTMLElement::tableCaptionGetter): (KJS::HTMLElement::tableColGetter): (KJS::HTMLElement::tableSectionGetter): (KJS::HTMLElement::tableRowGetter): (KJS::HTMLElement::tableCellGetter): (KJS::HTMLElement::frameSetGetter): (KJS::HTMLElement::frameGetter): (KJS::HTMLElement::iFrameGetter): (KJS::HTMLElement::marqueeGetter): (KJS::HTMLElement::getValueProperty): (KJS::HTMLElementFunction::HTMLElementFunction): (KJS::KJS::HTMLElementFunction::callAsFunction): (KJS::KJS::HTMLElement::put): (KJS::HTMLElement::htmlSetter): (KJS::HTMLElement::headSetter): (KJS::HTMLElement::linkSetter): (KJS::HTMLElement::titleSetter): (KJS::HTMLElement::metaSetter): (KJS::HTMLElement::baseSetter): (KJS::HTMLElement::isIndexSetter): (KJS::HTMLElement::styleSetter): (KJS::HTMLElement::bodySetter): (KJS::HTMLElement::formSetter): (KJS::HTMLElement::selectSetter): (KJS::HTMLElement::optGroupSetter): (KJS::HTMLElement::optionSetter): (KJS::HTMLElement::inputSetter): (KJS::HTMLElement::textAreaSetter): (KJS::HTMLElement::buttonSetter): (KJS::HTMLElement::labelSetter): (KJS::HTMLElement::fieldSetSetter): (KJS::HTMLElement::legendSetter): (KJS::HTMLElement::uListSetter): (KJS::HTMLElement::oListSetter): (KJS::HTMLElement::dListSetter): (KJS::HTMLElement::dirSetter): (KJS::HTMLElement::menuSetter): (KJS::HTMLElement::liSetter): (KJS::HTMLElement::divSetter): (KJS::HTMLElement::paragraphSetter): (KJS::HTMLElement::headingSetter): (KJS::HTMLElement::blockQuoteSetter): (KJS::HTMLElement::quoteSetter): (KJS::HTMLElement::preSetter): (KJS::HTMLElement::brSetter): (KJS::HTMLElement::baseFontSetter): (KJS::HTMLElement::fontSetter): (KJS::HTMLElement::hrSetter): (KJS::HTMLElement::modSetter): (KJS::HTMLElement::anchorSetter): (KJS::HTMLElement::imageSetter): (KJS::HTMLElement::objectSetter): (KJS::HTMLElement::paramSetter): (KJS::HTMLElement::appletSetter): (KJS::HTMLElement::mapSetter): (KJS::HTMLElement::areaSetter): (KJS::HTMLElement::scriptSetter): (KJS::HTMLElement::tableSetter): (KJS::HTMLElement::tableCaptionSetter): (KJS::HTMLElement::tableColSetter): (KJS::HTMLElement::tableSectionSetter): (KJS::HTMLElement::tableRowSetter): (KJS::HTMLElement::tableCellSetter): (KJS::HTMLElement::frameSetSetter): (KJS::HTMLElement::frameSetter): (KJS::HTMLElement::iFrameSetter): (KJS::HTMLElement::marqueeSetter): (KJS::HTMLElement::putValueProperty): (KJS::HTMLCollection::lengthGetter): (KJS::HTMLCollection::indexGetter): (KJS::HTMLCollection::nameGetter): (KJS::HTMLCollection::getOwnPropertySlot): (KJS::KJS::HTMLCollection::callAsFunction): (KJS::KJS::HTMLCollection::getNamedItems): (KJS::KJS::HTMLCollectionProtoFunc::callAsFunction): (KJS::HTMLSelectCollection::selectedIndexGetter): (KJS::KJS::HTMLSelectCollection::put): (KJS::OptionConstructorImp::construct): (KJS::ImageConstructorImp::construct): (KJS::Image::getValueProperty): (KJS::Image::put): (KJS::Image::putValueProperty): (KJS::isGradient): (KJS::isImagePattern): (KJS::KJS::Context2DFunction::callAsFunction): (KJS::Context2D::getValueProperty): (KJS::Context2D::put): (KJS::colorRefFromValue): (KJS::colorFromValue): (KJS::Context2D::setShadow): (KJS::Context2D::updateFillImagePattern): (KJS::Context2D::updateStrokeImagePattern): (KJS::Context2D::putValueProperty): (KJS::Context2D::Context2D): (KJS::Context2D::mark): (KJS::GradientFunction::callAsFunction): (KJS::Gradient::getValueProperty): (KJS::Gradient::put): (KJS::Gradient::putValueProperty): (KJS::ImagePattern::getValueProperty): (KJS::ImagePattern::put): (KJS::ImagePattern::putValueProperty):
  • khtml/ecma/kjs_html.h:
  • khtml/ecma/kjs_navigator.cpp: (KJS::Navigator::getValueProperty): (KJS::Plugins::getValueProperty): (KJS::Plugins::indexGetter): (KJS::Plugins::nameGetter): (KJS::MimeTypes::getValueProperty): (KJS::MimeTypes::indexGetter): (KJS::MimeTypes::nameGetter): (KJS::Plugin::getValueProperty): (KJS::Plugin::indexGetter): (KJS::Plugin::nameGetter): (KJS::MimeType::getValueProperty): (KJS::PluginsFunc::callAsFunction): (KJS::NavigatorFunc::callAsFunction):
  • khtml/ecma/kjs_navigator.h:
  • khtml/ecma/kjs_proxy.cpp: (KJSProxyImpl::evaluate): (TestFunctionImp::callAsFunction): (KJSProxyImpl::initScript): (KJSProxy::proxy):
  • khtml/ecma/kjs_range.cpp: (KJS::DOMRange::getValueProperty): (KJS::DOMRangeProtoFunc::callAsFunction): (KJS::RangeConstructor::getValueProperty):
  • khtml/ecma/kjs_range.h:
  • khtml/ecma/kjs_traversal.cpp: (KJS::DOMNodeIterator::getValueProperty): (KJS::DOMNodeIteratorProtoFunc::callAsFunction): (KJS::NodeFilterConstructor::getValueProperty): (KJS::getNodeFilterConstructor): (KJS::DOMNodeFilterProtoFunc::callAsFunction): (KJS::DOMTreeWalker::getValueProperty): (KJS::DOMTreeWalker::put): (KJS::DOMTreeWalkerProtoFunc::callAsFunction): (KJS::JSNodeFilterCondition::JSNodeFilterCondition): (KJS::JSNodeFilterCondition::acceptNode):
  • khtml/ecma/kjs_traversal.h:
  • khtml/ecma/kjs_views.cpp: (KJS::DOMAbstractView::getValueProperty): (KJS::DOMAbstractViewFunc::callAsFunction):
  • khtml/ecma/kjs_views.h:
  • khtml/ecma/kjs_window.cpp: (KJS::Screen::getValueProperty): (KJS::Window::retrieveWindow): (KJS::Window::retrieveActive): (KJS::Window::retrieve): (KJS::parseFeatures): (KJS::showModalDialog): (KJS::Window::getValueProperty): (KJS::Window::childFrameGetter): (KJS::Window::namedFrameGetter): (KJS::Window::indexGetter): (KJS::Window::namedItemGetter): (KJS::Window::put): (KJS::Window::installTimeout): (KJS::Window::setListener): (KJS::Window::getListener): (KJS::Window::getJSEventListener): (KJS::Window::getJSUnprotectedEventListener): (KJS::Window::getJSLazyEventListener): (KJS::WindowFunc::callAsFunction): (KJS::ScheduledAction::ScheduledAction): (KJS::ScheduledAction::execute): (KJS::WindowQObject::installTimeout): (KJS::FrameArray::getValueProperty): (KJS::FrameArray::indexGetter): (KJS::FrameArray::nameGetter): (KJS::Location::getValueProperty): (KJS::Location::put): (KJS::Location::toPrimitive): (KJS::LocationFunc::callAsFunction): (KJS::Selection::getValueProperty): (KJS::Selection::toPrimitive): (KJS::SelectionFunc::callAsFunction): (KJS::BarInfo::getValueProperty): (KJS::History::getValueProperty): (KJS::HistoryFunc::callAsFunction): (KJS::Konqueror::get): (KJS::KonquerorFunc::callAsFunction):
  • khtml/ecma/kjs_window.h:
  • khtml/ecma/xmlhttprequest.cpp: (KJS::XMLHttpRequestConstructorImp::construct): (KJS::XMLHttpRequest::getValueProperty): (KJS::XMLHttpRequest::put): (KJS::XMLHttpRequest::putValueProperty): (KJS::XMLHttpRequest::getAllResponseHeaders): (KJS::XMLHttpRequest::getResponseHeader): (KJS::XMLHttpRequest::getStatus): (KJS::XMLHttpRequest::getStatusText): (KJS::XMLHttpRequestProtoFunc::callAsFunction):
  • khtml/ecma/xmlhttprequest.h:
  • khtml/ecma/xmlserializer.cpp: (KJS::XMLSerializerConstructorImp::construct): (KJS::XMLSerializerProtoFunc::callAsFunction):
  • khtml/ecma/xmlserializer.h:
  • kwq/DOMUtility.mm: (KJS::ScriptInterpreter::createObjcInstanceForValue):
  • kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::bindingRootObject): (KWQKHTMLPart::windowScriptObject): (KWQKHTMLPart::windowScriptNPObject):
  • kwq/WebCoreBridge.mm: (-[WebCoreBridge executionContextForView:]):
  • kwq/WebCoreScriptDebugger.mm: (WebCoreScriptDebuggerImp::callEvent): (WebCoreScriptDebuggerImp::returnEvent): (-[WebCoreScriptDebugger finalize]): (-[WebCoreScriptCallFrame _convertValueToObjcValue:]): (-[WebCoreScriptCallFrame scopeChain]): (-[WebCoreScriptCallFrame evaluateWebScript:]):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/nodes.cpp

    r10076 r10084  
    2525#include "nodes.h"
    2626
    27 //#include <iostream>
    2827#include <math.h>
    2928#include <assert.h>
     
    4544#include "operations.h"
    4645#include "ustring.h"
     46#include "reference_list.h"
    4747
    4848using namespace KJS;
     
    117117Reference Node::evaluateReference(ExecState *exec)
    118118{
    119   Value v = evaluate(exec);
     119  ValueImp *v = evaluate(exec);
    120120  KJS_CHECKEXCEPTIONREFERENCE
    121121  return Reference::makeValueReference(v);
     
    134134#endif
    135135
    136 Value Node::throwError(ExecState *exec, ErrorType e, const char *msg)
    137 {
    138   Object err = Error::create(exec, e, msg, lineNo(), sourceId(), &sourceURL);
     136ValueImp *Node::throwError(ExecState *exec, ErrorType e, const char *msg)
     137{
     138  ObjectImp *err = Error::create(exec, e, msg, lineNo(), sourceId(), &sourceURL);
    139139  exec->setException(err);
    140140  return err;
    141141}
    142142
    143 Value Node::throwError(ExecState *exec, ErrorType e, const char *msg, Value v, Node *expr)
    144 {
    145   char *vStr = strdup(v.toString(exec).ascii());
     143ValueImp *Node::throwError(ExecState *exec, ErrorType e, const char *msg, ValueImp *v, Node *expr)
     144{
     145  char *vStr = strdup(v->toString(exec).ascii());
    146146  char *exprStr = strdup(expr->toString().ascii());
    147147 
     
    152152  free(exprStr);
    153153
    154   Value result = throwError(exec, e, str);
     154  ValueImp *result = throwError(exec, e, str);
    155155  delete [] str;
    156156 
     
    159159
    160160
    161 Value Node::throwError(ExecState *exec, ErrorType e, const char *msg, Identifier label)
     161ValueImp *Node::throwError(ExecState *exec, ErrorType e, const char *msg, Identifier label)
    162162{
    163163  const char *l = label.ascii();
     
    166166  sprintf(message, msg, l);
    167167
    168   Value result = throwError(exec, e, message);
     168  ValueImp *result = throwError(exec, e, message);
    169169  delete [] message;
    170170
     
    175175{
    176176    if (exec->hadException()) {
    177         Object exception = exec->exception().toObject(exec);
    178         if (!exception.hasProperty(exec, "line") &&
    179             !exception.hasProperty(exec, "sourceURL")) {
    180             exception.put(exec, "line", Number(line));
    181             exception.put(exec, "sourceURL", String(sourceURL));
     177        ObjectImp *exception = exec->exception()->toObject(exec);
     178        if (!exception->hasProperty(exec, "line") &&
     179            !exception->hasProperty(exec, "sourceURL")) {
     180            exception->put(exec, "line", Number(line));
     181            exception->put(exec, "sourceURL", String(sourceURL));
    182182        }
    183183    }
     
    223223// ------------------------------ NullNode -------------------------------------
    224224
    225 Value NullNode::evaluate(ExecState */*exec*/)
     225ValueImp *NullNode::evaluate(ExecState */*exec*/)
    226226{
    227227  return Null();
     
    230230// ------------------------------ BooleanNode ----------------------------------
    231231
    232 Value BooleanNode::evaluate(ExecState */*exec*/)
    233 {
    234   return Value(value);
     232ValueImp *BooleanNode::evaluate(ExecState */*exec*/)
     233{
     234  return jsBoolean(value);
    235235}
    236236
    237237// ------------------------------ NumberNode -----------------------------------
    238238
    239 Value NumberNode::evaluate(ExecState */*exec*/)
    240 {
    241   return Value(value);
     239ValueImp *NumberNode::evaluate(ExecState */*exec*/)
     240{
     241  return jsNumber(value);
    242242}
    243243
    244244// ------------------------------ StringNode -----------------------------------
    245245
    246 Value StringNode::evaluate(ExecState */*exec*/)
    247 {
    248   return value;
     246ValueImp *StringNode::evaluate(ExecState */*exec*/)
     247{
     248  return jsString(value);
    249249}
    250250
    251251// ------------------------------ RegExpNode -----------------------------------
    252252
    253 Value RegExpNode::evaluate(ExecState *exec)
     253ValueImp *RegExpNode::evaluate(ExecState *exec)
    254254{
    255255  List list;
    256   String p(pattern);
    257   String f(flags);
    258   list.append(p);
    259   list.append(f);
    260 
    261   Object reg = exec->lexicalInterpreter()->imp()->builtinRegExp();
    262   return reg.construct(exec,list);
     256  list.append(jsString(pattern));
     257  list.append(jsString(flags));
     258
     259  ObjectImp *reg = exec->lexicalInterpreter()->imp()->builtinRegExp();
     260  return reg->construct(exec,list);
    263261}
    264262
     
    266264
    267265// ECMA 11.1.1
    268 Value ThisNode::evaluate(ExecState *exec)
     266ValueImp *ThisNode::evaluate(ExecState *exec)
    269267{
    270268  return exec->context().imp()->thisValue();
     
    274272
    275273// ECMA 11.1.2 & 10.1.4
    276 Value ResolveNode::evaluate(ExecState *exec)
     274ValueImp *ResolveNode::evaluate(ExecState *exec)
    277275{
    278276  ScopeChain chain = exec->context().imp()->scopeChain();
     
    283281  do {
    284282    ObjectImp *o = chain.top();
     283
    285284    if (o->getPropertySlot(exec, ident, slot))
    286285      return slot.getValue(exec, ident);
     
    289288  } while (!chain.isEmpty());
    290289
    291   return Reference(Null(), ident).getValue(exec);
     290  return Reference(ident).getValue(exec);
    292291}
    293292
     
    307306  } while (!chain.isEmpty());
    308307
    309   return Reference(Null(), ident);
    310 }
    311 
     308  return Reference(ident);
     309}
    312310
    313311// ------------------------------ GroupNode ------------------------------------
     
    328326
    329327// ECMA 11.1.6
    330 Value GroupNode::evaluate(ExecState *exec)
     328ValueImp *GroupNode::evaluate(ExecState *exec)
    331329{
    332330  return group->evaluate(exec);
     
    363361
    364362// ECMA 11.1.4
    365 Value ElementNode::evaluate(ExecState *exec)
    366 {
    367   Object array = exec->lexicalInterpreter()->builtinArray().construct(exec, List::empty());
     363ValueImp *ElementNode::evaluate(ExecState *exec)
     364{
     365  ObjectImp *array = exec->lexicalInterpreter()->builtinArray()->construct(exec, List::empty());
    368366  int length = 0;
    369367  for (ElementNode *n = this; n; n = n->list) {
    370     Value val = n->node->evaluate(exec);
     368    ValueImp *val = n->node->evaluate(exec);
    371369    KJS_CHECKEXCEPTIONVALUE
    372370    length += n->elision;
    373     array.put(exec, length++, val);
     371    array->put(exec, length++, val);
    374372  }
    375373  return array;
     
    393391
    394392// ECMA 11.1.4
    395 Value ArrayNode::evaluate(ExecState *exec)
    396 {
    397   Object array;
     393ValueImp *ArrayNode::evaluate(ExecState *exec)
     394{
     395  ObjectImp *array;
    398396  int length;
    399397
    400398  if (element) {
    401     array = Object(static_cast<ObjectImp*>(element->evaluate(exec).imp()));
     399    array = static_cast<ObjectImp*>(element->evaluate(exec));
    402400    KJS_CHECKEXCEPTIONVALUE
    403     length = opt ? array.get(exec,lengthPropertyName).toInt32(exec) : 0;
     401    length = opt ? array->get(exec,lengthPropertyName)->toInt32(exec) : 0;
    404402  } else {
    405     Value newArr = exec->lexicalInterpreter()->builtinArray().construct(exec,List::empty());
    406     array = Object(static_cast<ObjectImp*>(newArr.imp()));
     403    ValueImp *newArr = exec->lexicalInterpreter()->builtinArray()->construct(exec,List::empty());
     404    array = static_cast<ObjectImp*>(newArr);
    407405    length = 0;
    408406  }
    409407
    410408  if (opt)
    411     array.put(exec,lengthPropertyName, Value(elision + length), DontEnum | DontDelete);
     409    array->put(exec,lengthPropertyName, jsNumber(elision + length), DontEnum | DontDelete);
    412410
    413411  return array;
     
    431429
    432430// ECMA 11.1.5
    433 Value ObjectLiteralNode::evaluate(ExecState *exec)
     431ValueImp *ObjectLiteralNode::evaluate(ExecState *exec)
    434432{
    435433  if (list)
    436434    return list->evaluate(exec);
    437435
    438   return exec->lexicalInterpreter()->builtinObject().construct(exec,List::empty());
     436  return exec->lexicalInterpreter()->builtinObject()->construct(exec,List::empty());
    439437}
    440438
     
    468466
    469467// ECMA 11.1.5
    470 Value PropertyValueNode::evaluate(ExecState *exec)
    471 {
    472   Object obj = exec->lexicalInterpreter()->builtinObject().construct(exec, List::empty());
     468ValueImp *PropertyValueNode::evaluate(ExecState *exec)
     469{
     470  ObjectImp *obj = exec->lexicalInterpreter()->builtinObject()->construct(exec, List::empty());
    473471 
    474472  for (PropertyValueNode *p = this; p; p = p->list) {
    475     Value n = p->name->evaluate(exec);
     473    ValueImp *n = p->name->evaluate(exec);
    476474    KJS_CHECKEXCEPTIONVALUE
    477     Value v = p->assign->evaluate(exec);
     475    ValueImp *v = p->assign->evaluate(exec);
    478476    KJS_CHECKEXCEPTIONVALUE
    479477
    480     obj.put(exec, Identifier(n.toString(exec)), v);
     478    obj->put(exec, Identifier(n->toString(exec)), v);
    481479  }
    482480
     
    487485
    488486// ECMA 11.1.5
    489 Value PropertyNode::evaluate(ExecState */*exec*/)
    490 {
    491   Value s;
     487ValueImp *PropertyNode::evaluate(ExecState */*exec*/)
     488{
     489  ValueImp *s;
    492490
    493491  if (str.isNull()) {
     
    521519
    522520// ECMA 11.2.1a
    523 Value AccessorNode1::evaluate(ExecState *exec)
    524 {
    525   Value v1 = expr1->evaluate(exec);
    526   KJS_CHECKEXCEPTIONVALUE
    527   Value v2 = expr2->evaluate(exec);
    528   KJS_CHECKEXCEPTIONVALUE
    529   Object o = v1.toObject(exec);
    530   unsigned i;
    531   if (v2.toUInt32(i))
    532     return o.get(exec, i);
    533 
    534   String s = v2.toString(exec);
    535   return o.get(exec, Identifier(s.value()));
     521ValueImp *AccessorNode1::evaluate(ExecState *exec)
     522{
     523  ValueImp *v1 = expr1->evaluate(exec);
     524  KJS_CHECKEXCEPTIONVALUE
     525  ValueImp *v2 = expr2->evaluate(exec);
     526  KJS_CHECKEXCEPTIONVALUE
     527  ObjectImp *o = v1->toObject(exec);
     528  uint32_t i;
     529  if (v2->getUInt32(i))
     530    return o->get(exec, i);
     531  return o->get(exec, Identifier(v2->toString(exec)));
    536532}
    537533
    538534Reference AccessorNode1::evaluateReference(ExecState *exec)
    539535{
    540   Value v1 = expr1->evaluate(exec);
     536  ValueImp *v1 = expr1->evaluate(exec);
    541537  KJS_CHECKEXCEPTIONREFERENCE
    542   Value v2 = expr2->evaluate(exec);
     538  ValueImp *v2 = expr2->evaluate(exec);
    543539  KJS_CHECKEXCEPTIONREFERENCE
    544   Object o = v1.toObject(exec);
    545   unsigned i;
    546   if (v2.toUInt32(i))
     540  ObjectImp *o = v1->toObject(exec);
     541  uint32_t i;
     542  if (v2->getUInt32(i))
    547543    return Reference(o, i);
    548   String s = v2.toString(exec);
    549   return Reference(o, Identifier(s.value()));
    550 }
    551 
     544  return Reference(o, Identifier(v2->toString(exec)));
     545}
    552546
    553547// ------------------------------ AccessorNode2 --------------------------------
     
    568562
    569563// ECMA 11.2.1b
    570 Value AccessorNode2::evaluate(ExecState *exec)
    571 {
    572   Value v = expr->evaluate(exec);
    573   KJS_CHECKEXCEPTIONVALUE
    574   Object o = v.toObject(exec);
    575   return o.get(exec, ident);
     564ValueImp *AccessorNode2::evaluate(ExecState *exec)
     565{
     566  ValueImp *v = expr->evaluate(exec);
     567  KJS_CHECKEXCEPTIONVALUE
     568  return v->toObject(exec)->get(exec, ident);
    576569
    577570}
     
    579572Reference AccessorNode2::evaluateReference(ExecState *exec)
    580573{
    581   Value v = expr->evaluate(exec);
     574  ValueImp *v = expr->evaluate(exec);
    582575  KJS_CHECKEXCEPTIONREFERENCE
    583   Object o = v.toObject(exec);
     576  ObjectImp *o = v->toObject(exec);
    584577  return Reference(o, ident);
    585578}
     
    609602}
    610603
    611 Value ArgumentListNode::evaluate(ExecState */*exec*/)
     604ValueImp *ArgumentListNode::evaluate(ExecState */*exec*/)
    612605{
    613606  assert(0);
    614   return Value(); // dummy, see evaluateList()
     607  return NULL; // dummy, see evaluateList()
    615608}
    616609
     
    621614
    622615  for (ArgumentListNode *n = this; n; n = n->list) {
    623     Value v = n->expr->evaluate(exec);
     616    ValueImp *v = n->expr->evaluate(exec);
    624617    KJS_CHECKEXCEPTIONLIST
    625618    l.append(v);
     
    645638}
    646639
    647 Value ArgumentsNode::evaluate(ExecState */*exec*/)
     640ValueImp *ArgumentsNode::evaluate(ExecState */*exec*/)
    648641{
    649642  assert(0);
    650   return Value(); // dummy, see evaluateList()
     643  return NULL; // dummy, see evaluateList()
    651644}
    652645
     
    682675}
    683676
    684 Value NewExprNode::evaluate(ExecState *exec)
    685 {
    686   Value v = expr->evaluate(exec);
     677ValueImp *NewExprNode::evaluate(ExecState *exec)
     678{
     679  ValueImp *v = expr->evaluate(exec);
    687680  KJS_CHECKEXCEPTIONVALUE
    688681
     
    693686  }
    694687
    695   if (v.type() != ObjectType) {
     688  if (!v->isObject()) {
    696689    return throwError(exec, TypeError, "Value %s (result of expression %s) is not an object. Cannot be used with new.", v, expr);
    697690  }
    698691
    699   Object constr = Object(static_cast<ObjectImp*>(v.imp()));
    700   if (!constr.implementsConstruct()) {
     692  ObjectImp *constr = static_cast<ObjectImp*>(v);
     693  if (!constr->implementsConstruct()) {
    701694    return throwError(exec, TypeError, "Value %s (result of expression %s) is not a constructor. Cannot be used with new.", v, expr);
    702695  }
    703696
    704   Value res = constr.construct(exec,argList);
    705 
    706   return res;
     697  return constr->construct(exec, argList);
    707698}
    708699
     
    728719
    729720// ECMA 11.2.3
    730 Value FunctionCallNode::evaluate(ExecState *exec)
     721ValueImp *FunctionCallNode::evaluate(ExecState *exec)
    731722{
    732723  Reference ref = expr->evaluateReference(exec);
     
    736727  KJS_CHECKEXCEPTIONVALUE
    737728
    738   Value v = ref.getValue(exec);
    739   KJS_CHECKEXCEPTIONVALUE
    740 
    741   if (v.type() != ObjectType) {
     729  ValueImp *v = ref.getValue(exec);
     730  KJS_CHECKEXCEPTIONVALUE
     731 
     732  if (!v->isObject()) {
    742733    return throwError(exec, TypeError, "Value %s (result of expression %s) is not object.", v, expr);
    743734  }
    744 
    745   ObjectImp *func = static_cast<ObjectImp*>(v.imp());
     735 
     736  ObjectImp *func = static_cast<ObjectImp*>(v);
    746737
    747738  if (!func->implementsCall()) {
     
    751742  ObjectImp *thisObjImp = 0;
    752743  ValueImp *thisValImp = ref.baseIfMutable();
    753   if (thisValImp && thisValImp->type() == ObjectType && !static_cast<ObjectImp *>(thisValImp)->inherits(&ActivationImp::info))
     744  if (thisValImp && thisValImp->isObject() && !static_cast<ObjectImp *>(thisValImp)->inherits(&ActivationImp::info))
    754745    thisObjImp = static_cast<ObjectImp *>(thisValImp);
    755746
     
    761752    // of implementation we use the global object anyway here. This guarantees
    762753    // that in host objects you always get a valid object for this.
    763     thisObjImp = exec->dynamicInterpreter()->globalObject().imp();
    764   }
    765 
    766   Object thisObj(thisObjImp);
     754    thisObjImp = exec->dynamicInterpreter()->globalObject();
     755  }
     756
     757  ObjectImp *thisObj(thisObjImp);
    767758  return func->call(exec, thisObj, argList);
    768759}
     
    785776
    786777// ECMA 11.3
    787 Value PostfixNode::evaluate(ExecState *exec)
     778ValueImp *PostfixNode::evaluate(ExecState *exec)
    788779{
    789780  Reference ref = expr->evaluateReference(exec);
    790781  KJS_CHECKEXCEPTIONVALUE
    791   Value v = ref.getValue(exec);
     782  ValueImp *v = ref.getValue(exec);
    792783
    793784  bool knownToBeInteger;
    794   double n = v.toNumber(exec, knownToBeInteger);
     785  double n = v->toNumber(exec, knownToBeInteger);
    795786
    796787  double newValue = (oper == OpPlusPlus) ? n + 1 : n - 1;
    797   ref.putValue(exec, Value(newValue, knownToBeInteger));
    798 
    799   return Value(n, knownToBeInteger);
     788  ref.putValue(exec, jsNumber(newValue, knownToBeInteger));
     789
     790  return jsNumber(n, knownToBeInteger);
    800791}
    801792
     
    817808
    818809// ECMA 11.4.1
    819 Value DeleteNode::evaluate(ExecState *exec)
     810ValueImp *DeleteNode::evaluate(ExecState *exec)
    820811{
    821812  Reference ref = expr->evaluateReference(exec);
    822813  KJS_CHECKEXCEPTIONVALUE
    823   return Value(ref.deleteValue(exec));
     814  return jsBoolean(ref.deleteValue(exec));
    824815}
    825816
     
    841832
    842833// ECMA 11.4.2
    843 Value VoidNode::evaluate(ExecState *exec)
    844 {
    845   Value dummy1 = expr->evaluate(exec);
     834ValueImp *VoidNode::evaluate(ExecState *exec)
     835{
     836  expr->evaluate(exec);
    846837  KJS_CHECKEXCEPTIONVALUE
    847838
     
    866857
    867858// ECMA 11.4.3
    868 Value TypeOfNode::evaluate(ExecState *exec)
     859ValueImp *TypeOfNode::evaluate(ExecState *exec)
    869860{
    870861  const char *s = 0L;
     
    872863  KJS_CHECKEXCEPTIONVALUE
    873864  ValueImp *b = ref.baseIfMutable();
    874   if (b && b->dispatchType() == NullType)
    875     return Value("undefined");
    876   Value v = ref.getValue(exec);
    877   switch (v.type())
     865  if (b && b->isNull())
     866    return jsString("undefined");
     867  ValueImp *v = ref.getValue(exec);
     868  switch (v->type())
    878869    {
    879870    case UndefinedType:
     
    893884      break;
    894885    default:
    895       if (v.type() == ObjectType && static_cast<ObjectImp*>(v.imp())->implementsCall())
     886      if (v->isObject() && static_cast<ObjectImp*>(v)->implementsCall())
    896887        s = "function";
    897888      else
     
    900891    }
    901892
    902   return Value(s);
     893  return jsString(s);
    903894}
    904895
     
    920911
    921912// ECMA 11.4.4 and 11.4.5
    922 Value PrefixNode::evaluate(ExecState *exec)
     913ValueImp *PrefixNode::evaluate(ExecState *exec)
    923914{
    924915  Reference ref = expr->evaluateReference(exec);
    925916  KJS_CHECKEXCEPTIONVALUE
    926   Value v = ref.getValue(exec);
     917  ValueImp *v = ref.getValue(exec);
    927918
    928919  bool knownToBeInteger;
    929   double n = v.toNumber(exec, knownToBeInteger);
     920  double n = v->toNumber(exec, knownToBeInteger);
    930921
    931922  double newValue = (oper == OpPlusPlus) ? n + 1 : n - 1;
    932   Value n2(newValue, knownToBeInteger);
     923  ValueImp *n2 = jsNumber(newValue, knownToBeInteger);
    933924
    934925  ref.putValue(exec, n2);
     
    954945
    955946// ECMA 11.4.6
    956 Value UnaryPlusNode::evaluate(ExecState *exec)
    957 {
    958   Value v = expr->evaluate(exec);
    959   KJS_CHECKEXCEPTIONVALUE
    960 
    961   return Value(v.toNumber(exec)); /* TODO: optimize */
     947ValueImp *UnaryPlusNode::evaluate(ExecState *exec)
     948{
     949  ValueImp *v = expr->evaluate(exec);
     950  KJS_CHECKEXCEPTIONVALUE
     951
     952  return jsNumber(v->toNumber(exec)); /* TODO: optimize */
    962953}
    963954
     
    979970
    980971// ECMA 11.4.7
    981 Value NegateNode::evaluate(ExecState *exec)
    982 {
    983   Value v = expr->evaluate(exec);
     972ValueImp *NegateNode::evaluate(ExecState *exec)
     973{
     974  ValueImp *v = expr->evaluate(exec);
    984975  KJS_CHECKEXCEPTIONVALUE
    985976
    986977  bool knownToBeInteger;
    987   double n = v.toNumber(exec, knownToBeInteger);
    988   return Value(-n, knownToBeInteger && n != 0);
     978  double n = v->toNumber(exec, knownToBeInteger);
     979  return jsNumber(-n, knownToBeInteger && n != 0);
    989980}
    990981
     
    1006997
    1007998// ECMA 11.4.8
    1008 Value BitwiseNotNode::evaluate(ExecState *exec)
    1009 {
    1010   Value v = expr->evaluate(exec);
    1011   KJS_CHECKEXCEPTIONVALUE
    1012   return Value(~v.toInt32(exec));
     999ValueImp *BitwiseNotNode::evaluate(ExecState *exec)
     1000{
     1001  ValueImp *v = expr->evaluate(exec);
     1002  KJS_CHECKEXCEPTIONVALUE
     1003  return jsNumber(~v->toInt32(exec));
    10131004}
    10141005
     
    10301021
    10311022// ECMA 11.4.9
    1032 Value LogicalNotNode::evaluate(ExecState *exec)
    1033 {
    1034   Value v = expr->evaluate(exec);
    1035   KJS_CHECKEXCEPTIONVALUE
    1036   return Value(!v.toBoolean(exec));
     1023ValueImp *LogicalNotNode::evaluate(ExecState *exec)
     1024{
     1025  ValueImp *v = expr->evaluate(exec);
     1026  KJS_CHECKEXCEPTIONVALUE
     1027  return jsBoolean(!v->toBoolean(exec));
    10371028}
    10381029
     
    10581049
    10591050// ECMA 11.5
    1060 Value MultNode::evaluate(ExecState *exec)
    1061 {
    1062   Value v1 = term1->evaluate(exec);
    1063   KJS_CHECKEXCEPTIONVALUE
    1064 
    1065   Value v2 = term2->evaluate(exec);
     1051ValueImp *MultNode::evaluate(ExecState *exec)
     1052{
     1053  ValueImp *v1 = term1->evaluate(exec);
     1054  KJS_CHECKEXCEPTIONVALUE
     1055
     1056  ValueImp *v2 = term2->evaluate(exec);
    10661057  KJS_CHECKEXCEPTIONVALUE
    10671058
     
    10901081
    10911082// ECMA 11.6
    1092 Value AddNode::evaluate(ExecState *exec)
    1093 {
    1094   Value v1 = term1->evaluate(exec);
    1095   KJS_CHECKEXCEPTIONVALUE
    1096 
    1097   Value v2 = term2->evaluate(exec);
     1083ValueImp *AddNode::evaluate(ExecState *exec)
     1084{
     1085  ValueImp *v1 = term1->evaluate(exec);
     1086  KJS_CHECKEXCEPTIONVALUE
     1087
     1088  ValueImp *v2 = term2->evaluate(exec);
    10981089  KJS_CHECKEXCEPTIONVALUE
    10991090
     
    11221113
    11231114// ECMA 11.7
    1124 Value ShiftNode::evaluate(ExecState *exec)
    1125 {
    1126   Value v1 = term1->evaluate(exec);
    1127   KJS_CHECKEXCEPTIONVALUE
    1128   Value v2 = term2->evaluate(exec);
    1129   KJS_CHECKEXCEPTIONVALUE
    1130   unsigned int i2 = v2.toUInt32(exec);
     1115ValueImp *ShiftNode::evaluate(ExecState *exec)
     1116{
     1117  ValueImp *v1 = term1->evaluate(exec);
     1118  KJS_CHECKEXCEPTIONVALUE
     1119  ValueImp *v2 = term2->evaluate(exec);
     1120  KJS_CHECKEXCEPTIONVALUE
     1121  unsigned int i2 = v2->toUInt32(exec);
    11311122  i2 &= 0x1f;
    11321123
    11331124  switch (oper) {
    11341125  case OpLShift:
    1135     return Value(v1.toInt32(exec) << i2);
     1126    return jsNumber(v1->toInt32(exec) << i2);
    11361127  case OpRShift:
    1137     return Value(v1.toInt32(exec) >> i2);
     1128    return jsNumber(v1->toInt32(exec) >> i2);
    11381129  case OpURShift:
    1139     return Value(v1.toUInt32(exec) >> i2);
     1130    return jsNumber(v1->toUInt32(exec) >> i2);
    11401131  default:
    11411132    assert(!"ShiftNode: unhandled switch case");
     
    11651156
    11661157// ECMA 11.8
    1167 Value RelationalNode::evaluate(ExecState *exec)
    1168 {
    1169   Value v1 = expr1->evaluate(exec);
    1170   KJS_CHECKEXCEPTIONVALUE
    1171   Value v2 = expr2->evaluate(exec);
     1158ValueImp *RelationalNode::evaluate(ExecState *exec)
     1159{
     1160  ValueImp *v1 = expr1->evaluate(exec);
     1161  KJS_CHECKEXCEPTIONVALUE
     1162  ValueImp *v2 = expr2->evaluate(exec);
    11721163  KJS_CHECKEXCEPTIONVALUE
    11731164
     
    11871178  } else if (oper == OpIn) {
    11881179      // Is all of this OK for host objects?
    1189       if (v2.type() != ObjectType)
     1180      if (!v2->isObject())
    11901181          return throwError(exec,  TypeError,
    11911182                             "Value %s (result of expression %s) is not an object. Cannot be used with IN expression.", v2, expr2);
    1192       Object o2(static_cast<ObjectImp*>(v2.imp()));
    1193       b = o2.hasProperty(exec, Identifier(v1.toString(exec)));
     1183      ObjectImp *o2(static_cast<ObjectImp*>(v2));
     1184      b = o2->hasProperty(exec, Identifier(v1->toString(exec)));
    11941185  } else {
    1195     if (v2.type() != ObjectType)
     1186    if (!v2->isObject())
    11961187        return throwError(exec,  TypeError,
    11971188                           "Value %s (result of expression %s) is not an object. Cannot be used with instanceof operator.", v2, expr2);
    11981189
    1199     Object o2(static_cast<ObjectImp*>(v2.imp()));
    1200     if (!o2.implementsHasInstance()) {
    1201       // According to the spec, only some types of objects "imlement" the [[HasInstance]] property.
     1190    ObjectImp *o2(static_cast<ObjectImp*>(v2));
     1191    if (!o2->implementsHasInstance()) {
     1192      // According to the spec, only some types of objects "implement" the [[HasInstance]] property.
    12021193      // But we are supposed to throw an exception where the object does not "have" the [[HasInstance]]
    12031194      // property. It seems that all object have the property, but not all implement it, so in this
    12041195      // case we return false (consistent with mozilla)
    1205       return Value(false);
     1196      return jsBoolean(false);
    12061197      //      return throwError(exec, TypeError,
    12071198      //                        "Object does not implement the [[HasInstance]] method." );
    12081199    }
    1209     return o2.hasInstance(exec, v1);
    1210   }
    1211 
    1212   return Value(b);
     1200    return jsBoolean(o2->hasInstance(exec, v1));
     1201  }
     1202
     1203  return jsBoolean(b);
    12131204}
    12141205
     
    12341225
    12351226// ECMA 11.9
    1236 Value EqualNode::evaluate(ExecState *exec)
    1237 {
    1238   Value v1 = expr1->evaluate(exec);
    1239   KJS_CHECKEXCEPTIONVALUE
    1240   Value v2 = expr2->evaluate(exec);
     1227ValueImp *EqualNode::evaluate(ExecState *exec)
     1228{
     1229  ValueImp *v1 = expr1->evaluate(exec);
     1230  KJS_CHECKEXCEPTIONVALUE
     1231  ValueImp *v2 = expr2->evaluate(exec);
    12411232  KJS_CHECKEXCEPTIONVALUE
    12421233
     
    12511242    result = oper == OpStrEq ? eq : !eq;
    12521243  }
    1253   return Value(result);
     1244  return jsBoolean(result);
    12541245}
    12551246
     
    12751266
    12761267// ECMA 11.10
    1277 Value BitOperNode::evaluate(ExecState *exec)
    1278 {
    1279   Value v1 = expr1->evaluate(exec);
    1280   KJS_CHECKEXCEPTIONVALUE
    1281   Value v2 = expr2->evaluate(exec);
    1282   KJS_CHECKEXCEPTIONVALUE
    1283   int i1 = v1.toInt32(exec);
    1284   int i2 = v2.toInt32(exec);
     1268ValueImp *BitOperNode::evaluate(ExecState *exec)
     1269{
     1270  ValueImp *v1 = expr1->evaluate(exec);
     1271  KJS_CHECKEXCEPTIONVALUE
     1272  ValueImp *v2 = expr2->evaluate(exec);
     1273  KJS_CHECKEXCEPTIONVALUE
     1274  int i1 = v1->toInt32(exec);
     1275  int i2 = v2->toInt32(exec);
    12851276  int result;
    12861277  if (oper == OpBitAnd)
     
    12911282    result = i1 | i2;
    12921283
    1293   return Value(result);
     1284  return jsNumber(result);
    12941285}
    12951286
     
    13151306
    13161307// ECMA 11.11
    1317 Value BinaryLogicalNode::evaluate(ExecState *exec)
    1318 {
    1319   Value v1 = expr1->evaluate(exec);
    1320   KJS_CHECKEXCEPTIONVALUE
    1321   bool b1 = v1.toBoolean(exec);
     1308ValueImp *BinaryLogicalNode::evaluate(ExecState *exec)
     1309{
     1310  ValueImp *v1 = expr1->evaluate(exec);
     1311  KJS_CHECKEXCEPTIONVALUE
     1312  bool b1 = v1->toBoolean(exec);
    13221313  if ((!b1 && oper == OpAnd) || (b1 && oper == OpOr))
    13231314    return v1;
    13241315
    1325   Value v2 = expr2->evaluate(exec);
     1316  ValueImp *v2 = expr2->evaluate(exec);
    13261317  KJS_CHECKEXCEPTIONVALUE
    13271318
     
    13541345
    13551346// ECMA 11.12
    1356 Value ConditionalNode::evaluate(ExecState *exec)
    1357 {
    1358   Value v = logical->evaluate(exec);
    1359   KJS_CHECKEXCEPTIONVALUE
    1360   bool b = v.toBoolean(exec);
     1347ValueImp *ConditionalNode::evaluate(ExecState *exec)
     1348{
     1349  ValueImp *v = logical->evaluate(exec);
     1350  KJS_CHECKEXCEPTIONVALUE
     1351  bool b = v->toBoolean(exec);
    13611352
    13621353  if (b)
     
    13901381
    13911382// ECMA 11.13
    1392 Value AssignNode::evaluate(ExecState *exec)
     1383ValueImp *AssignNode::evaluate(ExecState *exec)
    13931384{
    13941385  Reference l = left->evaluateReference(exec);
    13951386  KJS_CHECKEXCEPTIONVALUE
    1396   Value e, v;
     1387  ValueImp *v;
    13971388  if (oper == OpEqual) {
    13981389    v = expr->evaluate(exec);
    13991390    KJS_CHECKEXCEPTIONVALUE
    14001391  } else {
    1401     Value v1 = l.getValue(exec);
    1402     Value v2 = expr->evaluate(exec);
     1392    ValueImp *v1 = l.getValue(exec);
     1393    ValueImp *v2 = expr->evaluate(exec);
    14031394    KJS_CHECKEXCEPTIONVALUE
    14041395    int i1;
     
    14191410      break;
    14201411    case OpLShift:
    1421       i1 = v1.toInt32(exec);
    1422       i2 = v2.toInt32(exec);
    1423       v = Value(i1 << i2);
     1412      i1 = v1->toInt32(exec);
     1413      i2 = v2->toInt32(exec);
     1414      v = jsNumber(i1 << i2);
    14241415      break;
    14251416    case OpRShift:
    1426       i1 = v1.toInt32(exec);
    1427       i2 = v2.toInt32(exec);
    1428       v = Value(i1 >> i2);
     1417      i1 = v1->toInt32(exec);
     1418      i2 = v2->toInt32(exec);
     1419      v = jsNumber(i1 >> i2);
    14291420      break;
    14301421    case OpURShift:
    1431       ui = v1.toUInt32(exec);
    1432       i2 = v2.toInt32(exec);
    1433       v = Value(ui >> i2);
     1422      ui = v1->toUInt32(exec);
     1423      i2 = v2->toInt32(exec);
     1424      v = jsNumber(ui >> i2);
    14341425      break;
    14351426    case OpAndEq:
    1436       i1 = v1.toInt32(exec);
    1437       i2 = v2.toInt32(exec);
    1438       v = Value(i1 & i2);
     1427      i1 = v1->toInt32(exec);
     1428      i2 = v2->toInt32(exec);
     1429      v = jsNumber(i1 & i2);
    14391430      break;
    14401431    case OpXOrEq:
    1441       i1 = v1.toInt32(exec);
    1442       i2 = v2.toInt32(exec);
    1443       v = Value(i1 ^ i2);
     1432      i1 = v1->toInt32(exec);
     1433      i2 = v2->toInt32(exec);
     1434      v = jsNumber(i1 ^ i2);
    14441435      break;
    14451436    case OpOrEq:
    1446       i1 = v1.toInt32(exec);
    1447       i2 = v2.toInt32(exec);
    1448       v = Value(i1 | i2);
     1437      i1 = v1->toInt32(exec);
     1438      i2 = v2->toInt32(exec);
     1439      v = jsNumber(i1 | i2);
    14491440      break;
    14501441    case OpModEq: {
    14511442      bool d1KnownToBeInteger;
    1452       double d1 = v1.toNumber(exec, d1KnownToBeInteger);
     1443      double d1 = v1->toNumber(exec, d1KnownToBeInteger);
    14531444      bool d2KnownToBeInteger;
    1454       double d2 = v2.toNumber(exec, d2KnownToBeInteger);
    1455       v = Value(fmod(d1, d2), d1KnownToBeInteger && d2KnownToBeInteger && d2 != 0);
     1445      double d2 = v2->toNumber(exec, d2KnownToBeInteger);
     1446      v = jsNumber(fmod(d1, d2), d1KnownToBeInteger && d2KnownToBeInteger && d2 != 0);
    14561447    }
    14571448      break;
     
    14881479
    14891480// ECMA 11.14
    1490 Value CommaNode::evaluate(ExecState *exec)
    1491 {
    1492   Value dummy = expr1->evaluate(exec);
    1493   KJS_CHECKEXCEPTIONVALUE
    1494   Value v = expr2->evaluate(exec);
     1481ValueImp *CommaNode::evaluate(ExecState *exec)
     1482{
     1483  expr1->evaluate(exec);
     1484  KJS_CHECKEXCEPTIONVALUE
     1485  ValueImp *v = expr2->evaluate(exec);
    14951486  KJS_CHECKEXCEPTIONVALUE
    14961487
     
    15411532  KJS_ABORTPOINT
    15421533  if (exec->hadException()) {
    1543     Value ex = exec->exception();
     1534    ValueImp *ex = exec->exception();
    15441535    exec->clearException();
    15451536    return Completion(Throw, ex);
     
    15491540    return c;
    15501541 
    1551   Value v = c.value();
     1542  ValueImp *v = c.value();
    15521543 
    15531544  for (StatListNode *n = list; n; n = n->list) {
     
    15581549
    15591550    if (exec->hadException()) {
    1560       Value ex = exec->exception();
     1551      ValueImp *ex = exec->exception();
    15611552      exec->clearException();
    15621553      return Completion(Throw, ex);
     
    15941585
    15951586// ECMA 12.2
    1596 Value AssignExprNode::evaluate(ExecState *exec)
     1587ValueImp *AssignExprNode::evaluate(ExecState *exec)
    15971588{
    15981589  return expr->evaluate(exec);
     
    16221613
    16231614// ECMA 12.2
    1624 Value VarDeclNode::evaluate(ExecState *exec)
    1625 {
    1626   Object variable = exec->context().imp()->variableObject();
    1627 
    1628   Value val;
     1615ValueImp *VarDeclNode::evaluate(ExecState *exec)
     1616{
     1617  ObjectImp *variable = exec->context().imp()->variableObject();
     1618
     1619  ValueImp *val;
    16291620  if (init) {
    16301621      val = init->evaluate(exec);
     
    16331624      // already declared? - check with getDirect so you can override
    16341625      // built-in properties of the global object with var declarations.
    1635       if ( variable.imp()->getDirect(ident) )
    1636           return Value();
     1626      if (variable->getDirect(ident))
     1627          return NULL;
    16371628      val = Undefined();
    16381629  }
     
    16481639  if (varType == VarDeclNode::Constant)
    16491640    flags |= ReadOnly;
    1650   variable.put(exec, ident, val, flags);
    1651 
    1652   return ident.ustring();
     1641  variable->put(exec, ident, val, flags);
     1642
     1643  return jsString(ident.ustring());
    16531644}
    16541645
    16551646void VarDeclNode::processVarDecls(ExecState *exec)
    16561647{
    1657   Object variable = exec->context().imp()->variableObject();
     1648  ObjectImp *variable = exec->context().imp()->variableObject();
    16581649
    16591650  // If a variable by this name already exists, don't clobber it -
    16601651  // it might be a function parameter
    1661   if (!variable.hasProperty(exec, ident)) {
     1652  if (!variable->hasProperty(exec, ident)) {
    16621653    int flags = Internal;
    16631654    if (exec->context().imp()->codeType() != EvalCode)
     
    16651656    if (varType == VarDeclNode::Constant)
    16661657      flags |= ReadOnly;
    1667     variable.put(exec, ident, Undefined(), flags);
     1658    variable->put(exec, ident, Undefined(), flags);
    16681659  }
    16691660}
     
    16951686
    16961687// ECMA 12.2
    1697 Value VarDeclListNode::evaluate(ExecState *exec)
     1688ValueImp *VarDeclListNode::evaluate(ExecState *exec)
    16981689{
    16991690  for (VarDeclListNode *n = this; n; n = n->list) {
     
    18151806  KJS_BREAKPOINT;
    18161807
    1817   Value v = expr->evaluate(exec);
     1808  ValueImp *v = expr->evaluate(exec);
    18181809  KJS_CHECKEXCEPTION
    18191810
     
    18501841  KJS_BREAKPOINT;
    18511842
    1852   Value v = expr->evaluate(exec);
     1843  ValueImp *v = expr->evaluate(exec);
    18531844  KJS_CHECKEXCEPTION
    1854   bool b = v.toBoolean(exec);
     1845  bool b = v->toBoolean(exec);
    18551846
    18561847  // if ... then
     
    18991890  KJS_BREAKPOINT;
    19001891
    1901   Value be, bv;
     1892  ValueImp *bv;
    19021893  Completion c;
    1903   Value value;
    19041894
    19051895  do {
     
    19121902    if (!((c.complType() == Continue) && ls.contains(c.target()))) {
    19131903      if ((c.complType() == Break) && ls.contains(c.target()))
    1914         return Completion(Normal, value);
     1904        return Completion(Normal, NULL);
    19151905      if (c.complType() != Normal)
    19161906        return c;
     
    19181908    bv = expr->evaluate(exec);
    19191909    KJS_CHECKEXCEPTION
    1920   } while (bv.toBoolean(exec));
    1921 
    1922   return Completion(Normal, value);
     1910  } while (bv->toBoolean(exec));
     1911
     1912  return Completion(Normal, NULL);
    19231913}
    19241914
     
    19531943  KJS_BREAKPOINT;
    19541944
    1955   Value be, bv;
     1945  ValueImp *bv;
    19561946  Completion c;
    19571947  bool b(false);
    1958   Value value;
     1948  ValueImp *value = NULL;
    19591949
    19601950  while (1) {
    19611951    bv = expr->evaluate(exec);
    19621952    KJS_CHECKEXCEPTION
    1963     b = bv.toBoolean(exec);
     1953    b = bv->toBoolean(exec);
    19641954
    19651955    // bail out on error
     
    20222012Completion ForNode::execute(ExecState *exec)
    20232013{
    2024   Value v, cval;
     2014  ValueImp *v, *cval = NULL;
    20252015
    20262016  if (expr1) {
     
    20322022      v = expr2->evaluate(exec);
    20332023      KJS_CHECKEXCEPTION
    2034       if (!v.toBoolean(exec))
     2024      if (!v->toBoolean(exec))
    20352025        return Completion(Normal, cval);
    20362026    }
     
    21142104Completion ForInNode::execute(ExecState *exec)
    21152105{
    2116   Value e, retval;
    2117   Object v;
     2106  ValueImp *e;
     2107  ValueImp *retval = NULL;
     2108  ObjectImp *v;
    21182109  Completion c;
    21192110  ReferenceList propList;
     
    21302121  // property list but will throw an exception if you attempt to
    21312122  // access any property.
    2132   if (e.type() == UndefinedType || e.type() == NullType) {
    2133     return Completion(Normal, retval);
     2123  if (e->isUndefinedOrNull()) {
     2124    return Completion(Normal, NULL);
    21342125  }
    21352126
    21362127  KJS_CHECKEXCEPTION
    2137   v = e.toObject(exec);
    2138   propList = v.propList(exec);
     2128  v = e->toObject(exec);
     2129  propList = v->propList(exec);
    21392130
    21402131  ReferenceListIterator propIt = propList.begin();
     
    21422133  while (propIt != propList.end()) {
    21432134    Identifier name = propIt->getPropertyName(exec);
    2144     if (!v.hasProperty(exec,name)) {
     2135    if (!v->hasProperty(exec,name)) {
    21452136      propIt++;
    21462137      continue;
     
    21862177  KJS_BREAKPOINT;
    21872178
    2188   Value dummy;
    2189 
    21902179  if (ident.isEmpty() && !exec->context().imp()->seenLabels()->inIteration())
    21912180    return Completion(Throw,
     
    21952184                      throwError(exec, SyntaxError, "Label %s not found.", ident));
    21962185  else
    2197     return Completion(Continue, dummy, ident);
     2186    return Completion(Continue, NULL, ident);
    21982187}
    21992188
     
    22042193{
    22052194  KJS_BREAKPOINT;
    2206 
    2207   Value dummy;
    22082195
    22092196  if (ident.isEmpty() && !exec->context().imp()->seenLabels()->inIteration() &&
     
    22152202                      throwError(exec, SyntaxError, "Label %s not found.", ident));
    22162203  else
    2217     return Completion(Break, dummy, ident);
     2204    return Completion(Break, NULL, ident);
    22182205}
    22192206
     
    22472234    return Completion(ReturnValue, Undefined());
    22482235
    2249   Value v = value->evaluate(exec);
     2236  ValueImp *v = value->evaluate(exec);
    22502237  KJS_CHECKEXCEPTION
    22512238
     
    22782265  KJS_BREAKPOINT;
    22792266
    2280   Value v = expr->evaluate(exec);
     2267  ValueImp *v = expr->evaluate(exec);
    22812268  KJS_CHECKEXCEPTION
    2282   Object o = v.toObject(exec);
     2269  ObjectImp *o = v->toObject(exec);
    22832270  KJS_CHECKEXCEPTION
    22842271  exec->context().imp()->pushScope(o);
     
    23152302
    23162303// ECMA 12.11
    2317 Value CaseClauseNode::evaluate(ExecState *exec)
    2318 {
    2319   Value v = expr->evaluate(exec);
     2304ValueImp *CaseClauseNode::evaluate(ExecState *exec)
     2305{
     2306  ValueImp *v = expr->evaluate(exec);
    23202307  KJS_CHECKEXCEPTIONVALUE
    23212308
     
    23622349}
    23632350
    2364 Value ClauseListNode::evaluate(ExecState */*exec*/)
     2351ValueImp *ClauseListNode::evaluate(ExecState */*exec*/)
    23652352{
    23662353  /* should never be called */
    23672354  assert(false);
    2368   return Value();
     2355  return NULL;
    23692356}
    23702357
     
    24212408}
    24222409
    2423 Value CaseBlockNode::evaluate(ExecState */*exec*/)
     2410ValueImp *CaseBlockNode::evaluate(ExecState */*exec*/)
    24242411{
    24252412  /* should never be called */
    24262413  assert(false);
    2427   return Value();
     2414  return NULL;
    24282415}
    24292416
    24302417// ECMA 12.11
    2431 Completion CaseBlockNode::evalBlock(ExecState *exec, const Value& input)
    2432 {
    2433   Value v;
     2418Completion CaseBlockNode::evalBlock(ExecState *exec, ValueImp *input)
     2419{
     2420  ValueImp *v;
    24342421  Completion res;
    24352422  ClauseListNode *a = list1, *b = list2;
     
    25252512  KJS_BREAKPOINT;
    25262513
    2527   Value v = expr->evaluate(exec);
     2514  ValueImp *v = expr->evaluate(exec);
    25282515  KJS_CHECKEXCEPTION
    25292516
     
    26012588  KJS_BREAKPOINT;
    26022589
    2603   Value v = expr->evaluate(exec);
     2590  ValueImp *v = expr->evaluate(exec);
    26042591  KJS_CHECKEXCEPTION
    26052592
     
    26312618
    26322619// ECMA 12.14
    2633 Completion CatchNode::execute(ExecState *exec, const Value &arg)
     2620Completion CatchNode::execute(ExecState *exec, ValueImp *arg)
    26342621{
    26352622  /* TODO: correct ? Not part of the spec */
     
    26372624  exec->clearException();
    26382625
    2639   Object obj(new ObjectImp());
    2640   obj.put(exec, ident, arg, DontDelete);
     2626  ObjectImp *obj(new ObjectImp());
     2627  obj->put(exec, ident, arg, DontDelete);
    26412628  exec->context().imp()->pushScope(obj);
    26422629  Completion c = block->execute(exec);
     
    27182705
    27192706  if (!_catch) {
    2720     Value lastException = exec->exception();
     2707    ValueImp *lastException = exec->exception();
    27212708    exec->clearException();
    27222709   
     
    27652752
    27662753// ECMA 13
    2767 Value ParameterNode::evaluate(ExecState */*exec*/)
     2754ValueImp *ParameterNode::evaluate(ExecState */*exec*/)
    27682755{
    27692756  return Undefined();
     
    28082795void FuncDeclNode::processFuncDecl(ExecState *exec)
    28092796{
     2797  ContextImp *context = exec->context().imp();
     2798
    28102799  // TODO: let this be an object with [[Class]] property "Function"
    2811   FunctionImp *fimp = new DeclaredFunctionImp(exec, ident, body, exec->context().imp()->scopeChain());
    2812   Object func(fimp); // protect from GC
    2813 
    2814   //  Value proto = exec->lexicalInterpreter()->builtinObject().construct(exec,List::empty());
    2815   List empty;
    2816   Object proto = exec->lexicalInterpreter()->builtinObject().construct(exec,empty);
    2817   proto.put(exec, constructorPropertyName, func, ReadOnly|DontDelete|DontEnum);
    2818   func.put(exec, prototypePropertyName, proto, Internal|DontDelete);
     2800  FunctionImp *fimp = new DeclaredFunctionImp(exec, ident, body, context->scopeChain());
     2801  ObjectImp *func(fimp); // protect from GC
     2802
     2803  ObjectImp *proto = exec->lexicalInterpreter()->builtinObject()->construct(exec, List::empty());
     2804  proto->put(exec, constructorPropertyName, func, ReadOnly|DontDelete|DontEnum);
     2805  func->put(exec, prototypePropertyName, proto, Internal|DontDelete);
    28192806
    28202807  int plen = 0;
     
    28222809    fimp->addParameter(p->ident());
    28232810
    2824   func.put(exec, lengthPropertyName, Number(plen), ReadOnly|DontDelete|DontEnum);
    2825 
    2826   if (exec->context().imp()->codeType() == EvalCode) {
    2827     // ECMA 10.2.2
    2828     exec->context().imp()->variableObject().put(exec, ident, func, Internal);
    2829   } else {
    2830     exec->context().imp()->variableObject().put(exec, ident, func, Internal | DontDelete);
    2831   }
     2811  func->put(exec, lengthPropertyName, Number(plen), ReadOnly|DontDelete|DontEnum);
     2812
     2813  // ECMA 10.2.2
     2814  context->variableObject()->put(exec, ident, func, Internal | (context->codeType() == EvalCode ? 0 : DontDelete));
    28322815
    28332816  if (body) {
    28342817    // hack the scope so that the function gets put as a property of func, and it's scope
    28352818    // contains the func as well as our current scope
    2836     Object oldVar = exec->context().imp()->variableObject();
    2837     exec->context().imp()->setVariableObject(func);
    2838     exec->context().imp()->pushScope(func);
     2819    ObjectImp *oldVar = context->variableObject();
     2820    context->setVariableObject(func);
     2821    context->pushScope(func);
    28392822    body->processFuncDecl(exec);
    2840     exec->context().imp()->popScope();
    2841     exec->context().imp()->setVariableObject(oldVar);
     2823    context->popScope();
     2824    context->setVariableObject(oldVar);
    28422825  }
    28432826}
     
    28652848
    28662849// ECMA 13
    2867 Value FuncExprNode::evaluate(ExecState *exec)
     2850ValueImp *FuncExprNode::evaluate(ExecState *exec)
    28682851{
    28692852  FunctionImp *fimp = new DeclaredFunctionImp(exec, Identifier::null(), body, exec->context().imp()->scopeChain());
    2870   Value ret(fimp);
    2871   List empty;
    2872   Value proto = exec->lexicalInterpreter()->builtinObject().construct(exec,empty);
     2853  ValueImp *ret(fimp);
     2854  ValueImp *proto = exec->lexicalInterpreter()->builtinObject()->construct(exec, List::empty());
    28732855  fimp->put(exec, prototypePropertyName, proto, Internal|DontDelete);
    28742856
     
    29332915    // The spec says to return c2 here, but it seems that mozilla returns c1 if
    29342916    // c2 doesn't have a value
    2935     if (!c2.value().isNull())
     2917    if (c2.value())
    29362918      c1 = c2;
    29372919  }
Note: See TracChangeset for help on using the changeset viewer.