[webkit-changes] cvs commit: WebCore/kwq WebCoreScriptDebugger.mm

Darin darin at opensource.apple.com
Sat Dec 10 16:38:09 PST 2005


darin       05/12/10 16:38:07

  Modified:    .        ChangeLog
               bindings NP_jsobject.cpp runtime.h runtime_array.cpp
                        runtime_method.cpp
               bindings/c c_instance.cpp c_runtime.cpp c_utility.cpp
               bindings/jni jni_instance.cpp jni_jsobject.cpp
                        jni_runtime.cpp
               bindings/objc WebScriptObject.mm objc_instance.mm
                        objc_runtime.mm objc_utility.mm
               kjs      array_object.cpp bool_object.cpp error_object.cpp
                        function.cpp function_object.cpp internal.cpp
                        interpreter.h lookup.h math_object.cpp nodes.cpp
                        nodes.h number_object.cpp object.cpp
                        object_object.cpp property_slot.cpp
                        regexp_object.cpp string_object.cpp testkjs.cpp
                        value.h
               .        ChangeLog
               khtml/ecma domparser.cpp kjs_binding.cpp kjs_binding.h
                        kjs_css.cpp kjs_dom.cpp kjs_events.cpp kjs_html.cpp
                        kjs_navigator.cpp kjs_proxy.cpp kjs_range.cpp
                        kjs_traversal.cpp kjs_views.cpp kjs_window.cpp
                        xmlhttprequest.cpp xmlserializer.cpp
               ksvg2/ecma Ecma.cpp GlobalObject.cpp
               kwq      WebCoreScriptDebugger.mm
  Log:
  JavaScriptCore:
  
          Reviewed by Maciej.
  
          - eliminated the old Undefined(), Null(), Boolean(), Number(), and String()
  
          Code now uses jsUndefined(), jsNull(), jsBoolean(), jsNumber(), and jsString().
  
          * bindings/NP_jsobject.cpp:
          (_NPN_Evaluate):
          * bindings/c/c_instance.cpp:
          (KJS::Bindings::CInstance::invokeMethod):
          (KJS::Bindings::CInstance::invokeDefaultMethod):
          * bindings/c/c_runtime.cpp:
          (CField::valueFromInstance):
          * bindings/c/c_utility.cpp:
          (KJS::Bindings::convertNPVariantToValue):
          * bindings/jni/jni_instance.cpp:
          (JavaInstance::invokeMethod):
          (JavaInstance::invokeDefaultMethod):
          * bindings/jni/jni_jsobject.cpp:
          (JSObject::eval):
          (JSObject::convertJObjectToValue):
          * bindings/jni/jni_runtime.cpp:
          (JavaArray::convertJObjectToArray):
          (JavaField::valueFromInstance):
          (JavaArray::valueAt):
          * bindings/objc/WebScriptObject.mm:
          (-[WebScriptObject callWebScriptMethod:withArguments:]):
          (-[WebScriptObject evaluateWebScript:]):
          (-[WebScriptObject valueForKey:]):
          (-[WebScriptObject webScriptValueAtIndex:]):
          * bindings/objc/objc_instance.mm:
          (ObjcInstance::invokeMethod):
          (ObjcInstance::invokeDefaultMethod):
          (ObjcInstance::getValueOfUndefinedField):
          * bindings/objc/objc_runtime.mm:
          (ObjcField::valueFromInstance):
          (ObjcFallbackObjectImp::callAsFunction):
          * bindings/objc/objc_utility.mm:
          (KJS::Bindings::convertNSStringToString):
          (KJS::Bindings::convertObjcValueToValue):
          * bindings/runtime.h:
          (KJS::Bindings::Class::fallbackObject):
          (KJS::Bindings::Instance::getValueOfUndefinedField):
          (KJS::Bindings::Instance::valueOf):
          * bindings/runtime_array.cpp:
          (RuntimeArrayImp::lengthGetter):
          * bindings/runtime_method.cpp:
          (RuntimeMethodImp::lengthGetter):
          (RuntimeMethodImp::callAsFunction):
          (RuntimeMethodImp::execute):
          * kjs/array_object.cpp:
          (ArrayInstanceImp::lengthGetter):
          (CompareWithCompareFunctionArguments::CompareWithCompareFunctionArguments):
          (ArrayPrototypeImp::ArrayPrototypeImp):
          (ArrayProtoFuncImp::ArrayProtoFuncImp):
          (ArrayProtoFuncImp::callAsFunction):
          (ArrayObjectImp::ArrayObjectImp):
          * kjs/bool_object.cpp:
          (BooleanPrototypeImp::BooleanPrototypeImp):
          (BooleanProtoFuncImp::callAsFunction):
          (BooleanObjectImp::BooleanObjectImp):
          (BooleanObjectImp::callAsFunction):
          * kjs/error_object.cpp:
          (ErrorPrototypeImp::ErrorPrototypeImp):
          (ErrorProtoFuncImp::ErrorProtoFuncImp):
          (ErrorProtoFuncImp::callAsFunction):
          (ErrorObjectImp::ErrorObjectImp):
          (NativeErrorImp::NativeErrorImp):
          * kjs/function.cpp:
          (KJS::FunctionImp::callAsFunction):
          (KJS::FunctionImp::processParameters):
          (KJS::FunctionImp::argumentsGetter):
          (KJS::FunctionImp::lengthGetter):
          (KJS::DeclaredFunctionImp::execute):
          (KJS::encode):
          (KJS::decode):
          (KJS::GlobalFuncImp::callAsFunction):
          * kjs/function_object.cpp:
          (FunctionPrototypeImp::FunctionPrototypeImp):
          (FunctionPrototypeImp::callAsFunction):
          (FunctionProtoFuncImp::callAsFunction):
          (FunctionObjectImp::FunctionObjectImp):
          * kjs/internal.cpp:
          (KJS::InterpreterImp::initGlobalObject):
          * kjs/interpreter.h:
          * kjs/lookup.h:
          * kjs/math_object.cpp:
          (MathObjectImp::getValueProperty):
          (MathFuncImp::callAsFunction):
          * kjs/nodes.cpp:
          (Node::setExceptionDetailsIfNeeded):
          (NullNode::evaluate):
          (PropertyNode::evaluate):
          (FunctionCallBracketNode::evaluate):
          (FunctionCallDotNode::evaluate):
          (PostfixBracketNode::evaluate):
          (PostfixDotNode::evaluate):
          (VoidNode::evaluate):
          (PrefixBracketNode::evaluate):
          (PrefixDotNode::evaluate):
          (ShiftNode::evaluate):
          (valueForReadModifyAssignment):
          (AssignDotNode::evaluate):
          (AssignBracketNode::evaluate):
          (VarDeclNode::evaluate):
          (VarDeclNode::processVarDecls):
          (VarDeclListNode::evaluate):
          (ReturnNode::execute):
          (CaseClauseNode::evalStatements):
          (ParameterNode::evaluate):
          (FuncDeclNode::processFuncDecl):
          * kjs/nodes.h:
          (KJS::StatementNode::evaluate):
          * kjs/number_object.cpp:
          (NumberPrototypeImp::NumberPrototypeImp):
          (NumberProtoFuncImp::callAsFunction):
          (NumberObjectImp::NumberObjectImp):
          (NumberObjectImp::getValueProperty):
          (NumberObjectImp::callAsFunction):
          * kjs/object.cpp:
          (KJS::ObjectImp::get):
          (KJS::Error::create):
          * kjs/object_object.cpp:
          (ObjectPrototypeImp::ObjectPrototypeImp):
          (ObjectProtoFuncImp::callAsFunction):
          (ObjectObjectImp::ObjectObjectImp):
          * kjs/property_slot.cpp:
          (KJS::PropertySlot::undefinedGetter):
          * kjs/regexp_object.cpp:
          (RegExpPrototypeImp::RegExpPrototypeImp):
          (RegExpProtoFuncImp::callAsFunction):
          (RegExpObjectImp::RegExpObjectImp):
          (RegExpObjectImp::arrayOfMatches):
          (RegExpObjectImp::getBackref):
          (RegExpObjectImp::getLastMatch):
          (RegExpObjectImp::getLastParen):
          (RegExpObjectImp::getLeftContext):
          (RegExpObjectImp::getRightContext):
          (RegExpObjectImp::getValueProperty):
          (RegExpObjectImp::construct):
          * kjs/string_object.cpp:
          (StringInstanceImp::StringInstanceImp):
          (StringPrototypeImp::StringPrototypeImp):
          (replace):
          (StringProtoFuncImp::callAsFunction):
          (StringObjectImp::StringObjectImp):
          (StringObjectImp::callAsFunction):
          (StringObjectFuncImp::StringObjectFuncImp):
          (StringObjectFuncImp::callAsFunction):
          * kjs/testkjs.cpp:
          (TestFunctionImp::callAsFunction):
          (VersionFunctionImp::callAsFunction):
          * kjs/value.h:
  
  WebCore:
  
          Reviewed by Maciej.
  
          - eliminated the old Undefined(), Null(), Boolean(), Number(), and String()
  
          Code now uses jsUndefined(), jsNull(), jsBoolean(), jsNumber(), and jsString().
  
          * khtml/ecma/domparser.cpp:
          (KJS::DOMParserProtoFunc::callAsFunction):
          * khtml/ecma/kjs_binding.cpp:
          (KJS::jsStringOrNull):
          (KJS::setDOMException):
          * khtml/ecma/kjs_binding.h:
          (KJS::DOMFunction::toPrimitive):
          * khtml/ecma/kjs_css.cpp:
          (KJS::DOMCSSStyleDeclaration::indexGetter):
          (KJS::DOMCSSStyleDeclaration::cssPropertyGetter):
          (KJS::DOMCSSStyleDeclaration::getValueProperty):
          (KJS::DOMCSSStyleDeclarationProtoFunc::callAsFunction):
          (KJS::DOMStyleSheet::getValueProperty):
          (KJS::getDOMStyleSheet):
          (KJS::DOMStyleSheetList::getValueProperty):
          (KJS::getDOMStyleSheetList):
          (KJS::DOMStyleSheetListFunc::callAsFunction):
          (KJS::DOMMediaList::getValueProperty):
          (KJS::DOMMediaList::indexGetter):
          (KJS::KJS::DOMMediaListProtoFunc::callAsFunction):
          (KJS::DOMCSSStyleSheet::getValueProperty):
          (KJS::DOMCSSStyleSheetProtoFunc::callAsFunction):
          (KJS::DOMCSSRuleList::getValueProperty):
          (KJS::DOMCSSRuleListFunc::callAsFunction):
          (KJS::DOMCSSRule::getValueProperty):
          (KJS::DOMCSSRuleFunc::callAsFunction):
          (KJS::CSSRuleConstructor::getValueProperty):
          (KJS::DOMCSSValue::getValueProperty):
          (KJS::getDOMCSSValue):
          (KJS::CSSValueConstructor::getValueProperty):
          (KJS::DOMCSSPrimitiveValue::getValueProperty):
          (KJS::DOMCSSPrimitiveValueProtoFunc::callAsFunction):
          (KJS::CSSPrimitiveValueConstructor::getValueProperty):
          (KJS::DOMCSSValueList::getValueProperty):
          (KJS::DOMCSSValueListFunc::callAsFunction):
          (KJS::DOMCounter::getValueProperty):
          * khtml/ecma/kjs_dom.cpp:
          (KJS::DOMNode::getValueProperty):
          (KJS::DOMNode::toPrimitive):
          (KJS::DOMNode::getListener):
          (KJS::DOMNodeProtoFunc::callAsFunction):
          (KJS::DOMNodeList::toPrimitive):
          (KJS::DOMNodeList::getValueProperty):
          (KJS::DOMNodeList::callAsFunction):
          (KJS::DOMAttr::getValueProperty):
          (KJS::DOMDocument::getValueProperty):
          (KJS::DOMDocumentProtoFunc::callAsFunction):
          (KJS::DOMElement::getValueProperty):
          (KJS::DOMElement::attributeGetter):
          (KJS::DOMElementProtoFunc::callAsFunction):
          (KJS::DOMDOMImplementationProtoFunc::callAsFunction):
          (KJS::DOMDocumentType::getValueProperty):
          (KJS::DOMNamedNodeMap::lengthGetter):
          (KJS::DOMNamedNodeMapProtoFunc::callAsFunction):
          (KJS::DOMProcessingInstruction::getValueProperty):
          (KJS::DOMNotation::getValueProperty):
          (KJS::DOMEntity::getValueProperty):
          (KJS::getDOMNode):
          (KJS::NodeConstructor::getValueProperty):
          (KJS::DOMExceptionConstructor::getValueProperty):
          (KJS::DOMNamedNodesCollection::lengthGetter):
          (KJS::DOMCharacterData::getValueProperty):
          (KJS::DOMCharacterDataProtoFunc::callAsFunction):
          (KJS::DOMTextProtoFunc::callAsFunction):
          * khtml/ecma/kjs_events.cpp:
          (KJS::JSLazyEventListener::parseCode):
          (KJS::EventConstructor::getValueProperty):
          (KJS::DOMEvent::getValueProperty):
          (KJS::DOMEventProtoFunc::callAsFunction):
          (KJS::getDOMEvent):
          (KJS::EventExceptionConstructor::getValueProperty):
          (KJS::DOMUIEvent::getValueProperty):
          (KJS::DOMUIEventProtoFunc::callAsFunction):
          (KJS::DOMMouseEvent::getValueProperty):
          (KJS::DOMMouseEventProtoFunc::callAsFunction):
          (KJS::DOMKeyboardEvent::getValueProperty):
          (KJS::DOMKeyboardEventProtoFunc::callAsFunction):
          (KJS::MutationEventConstructor::getValueProperty):
          (KJS::DOMMutationEvent::getValueProperty):
          (KJS::DOMMutationEventProtoFunc::callAsFunction):
          (KJS::DOMWheelEvent::getValueProperty):
          (KJS::DOMWheelEventProtoFunc::callAsFunction):
          (KJS::stringOrUndefined):
          (KJS::Clipboard::getValueProperty):
          (KJS::ClipboardProtoFunc::callAsFunction):
          * khtml/ecma/kjs_html.cpp:
          (KJS::KJS::HTMLDocFunction::callAsFunction):
          (KJS::HTMLDocument::getValueProperty):
          (KJS::HTMLElement::framesetNameGetter):
          (KJS::HTMLElement::frameWindowPropertyGetter):
          (KJS::HTMLElement::runtimeObjectPropertyGetter):
          (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::HTMLCollection::lengthGetter):
          (KJS::KJS::HTMLCollection::callAsFunction):
          (KJS::KJS::HTMLCollection::getNamedItems):
          (KJS::KJS::HTMLCollectionProtoFunc::callAsFunction):
          (KJS::HTMLSelectCollection::selectedIndexGetter):
          (KJS::HTMLSelectCollection::getOwnPropertySlot):
          (KJS::OptionConstructorImp::OptionConstructorImp):
          (KJS::Image::getValueProperty):
          (KJS::KJS::Context2DFunction::callAsFunction):
          (KJS::Context2D::getValueProperty):
          (KJS::Context2D::Context2D):
          (KJS::GradientFunction::callAsFunction):
          (KJS::Gradient::getValueProperty):
          (KJS::ImagePattern::getValueProperty):
          (KJS::getSelectHTMLCollection):
          * khtml/ecma/kjs_navigator.cpp:
          (KJS::Navigator::getValueProperty):
          (KJS::Plugins::getValueProperty):
          (KJS::Plugins::nameGetter):
          (KJS::MimeTypes::getValueProperty):
          (KJS::MimeTypes::nameGetter):
          (KJS::Plugin::getValueProperty):
          (KJS::Plugin::nameGetter):
          (KJS::MimeType::getValueProperty):
          (KJS::PluginsFunc::callAsFunction):
          (KJS::NavigatorFunc::callAsFunction):
          * khtml/ecma/kjs_proxy.cpp:
          (TestFunctionImp::callAsFunction):
          * khtml/ecma/kjs_range.cpp:
          (KJS::DOMRange::getValueProperty):
          (KJS::DOMRangeProtoFunc::callAsFunction):
          (KJS::RangeConstructor::getValueProperty):
          * khtml/ecma/kjs_traversal.cpp:
          (KJS::DOMNodeIterator::getValueProperty):
          (KJS::DOMNodeIteratorProtoFunc::callAsFunction):
          (KJS::NodeFilterConstructor::getValueProperty):
          (KJS::DOMNodeFilterProtoFunc::callAsFunction):
          (KJS::DOMTreeWalker::getValueProperty):
          (KJS::DOMTreeWalkerProtoFunc::callAsFunction):
          * khtml/ecma/kjs_views.cpp:
          (KJS::DOMAbstractViewProtoFunc::callAsFunction):
          * khtml/ecma/kjs_window.cpp:
          (KJS::Screen::getValueProperty):
          (KJS::Window::retrieve):
          (KJS::showModalDialog):
          (KJS::Window::getValueProperty):
          (KJS::Window::getListener):
          (KJS::WindowFunc::callAsFunction):
          (KJS::FrameArray::getValueProperty):
          (KJS::FrameArray::indexGetter):
          (KJS::FrameArray::nameGetter):
          (KJS::Location::getValueProperty):
          (KJS::Location::toPrimitive):
          (KJS::LocationFunc::callAsFunction):
          (KJS::Selection::getValueProperty):
          (KJS::Selection::toPrimitive):
          (KJS::SelectionFunc::callAsFunction):
          (KJS::BarInfo::getValueProperty):
          (KJS::History::getValueProperty):
          (KJS::HistoryFunc::callAsFunction):
          * khtml/ecma/xmlhttprequest.cpp:
          (KJS::XMLHttpRequest::getValueProperty):
          (KJS::XMLHttpRequest::getAllResponseHeaders):
          (KJS::XMLHttpRequest::getResponseHeader):
          (KJS::XMLHttpRequest::getStatus):
          (KJS::XMLHttpRequest::getStatusText):
          (KJS::XMLHttpRequestProtoFunc::callAsFunction):
          * khtml/ecma/xmlserializer.cpp:
          (KJS::XMLSerializerProtoFunc::callAsFunction):
          * ksvg2/ecma/Ecma.cpp:
          (KSVG::getSVGPathSeg):
          * ksvg2/ecma/GlobalObject.cpp:
          (GlobalObject::get):
          * kwq/WebCoreScriptDebugger.mm:
          (-[WebCoreScriptCallFrame evaluateWebScript:]):
  
  Revision  Changes    Path
  1.897     +156 -0    JavaScriptCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/ChangeLog,v
  retrieving revision 1.896
  retrieving revision 1.897
  diff -u -r1.896 -r1.897
  --- ChangeLog	10 Dec 2005 19:05:19 -0000	1.896
  +++ ChangeLog	11 Dec 2005 00:37:42 -0000	1.897
  @@ -1,3 +1,159 @@
  +2005-12-10  Darin Adler  <darin at apple.com>
  +
  +        Reviewed by Maciej.
  +
  +        - eliminated the old Undefined(), Null(), Boolean(), Number(), and String()
  +
  +        Code now uses jsUndefined(), jsNull(), jsBoolean(), jsNumber(), and jsString().
  +
  +        * bindings/NP_jsobject.cpp:
  +        (_NPN_Evaluate):
  +        * bindings/c/c_instance.cpp:
  +        (KJS::Bindings::CInstance::invokeMethod):
  +        (KJS::Bindings::CInstance::invokeDefaultMethod):
  +        * bindings/c/c_runtime.cpp:
  +        (CField::valueFromInstance):
  +        * bindings/c/c_utility.cpp:
  +        (KJS::Bindings::convertNPVariantToValue):
  +        * bindings/jni/jni_instance.cpp:
  +        (JavaInstance::invokeMethod):
  +        (JavaInstance::invokeDefaultMethod):
  +        * bindings/jni/jni_jsobject.cpp:
  +        (JSObject::eval):
  +        (JSObject::convertJObjectToValue):
  +        * bindings/jni/jni_runtime.cpp:
  +        (JavaArray::convertJObjectToArray):
  +        (JavaField::valueFromInstance):
  +        (JavaArray::valueAt):
  +        * bindings/objc/WebScriptObject.mm:
  +        (-[WebScriptObject callWebScriptMethod:withArguments:]):
  +        (-[WebScriptObject evaluateWebScript:]):
  +        (-[WebScriptObject valueForKey:]):
  +        (-[WebScriptObject webScriptValueAtIndex:]):
  +        * bindings/objc/objc_instance.mm:
  +        (ObjcInstance::invokeMethod):
  +        (ObjcInstance::invokeDefaultMethod):
  +        (ObjcInstance::getValueOfUndefinedField):
  +        * bindings/objc/objc_runtime.mm:
  +        (ObjcField::valueFromInstance):
  +        (ObjcFallbackObjectImp::callAsFunction):
  +        * bindings/objc/objc_utility.mm:
  +        (KJS::Bindings::convertNSStringToString):
  +        (KJS::Bindings::convertObjcValueToValue):
  +        * bindings/runtime.h:
  +        (KJS::Bindings::Class::fallbackObject):
  +        (KJS::Bindings::Instance::getValueOfUndefinedField):
  +        (KJS::Bindings::Instance::valueOf):
  +        * bindings/runtime_array.cpp:
  +        (RuntimeArrayImp::lengthGetter):
  +        * bindings/runtime_method.cpp:
  +        (RuntimeMethodImp::lengthGetter):
  +        (RuntimeMethodImp::callAsFunction):
  +        (RuntimeMethodImp::execute):
  +        * kjs/array_object.cpp:
  +        (ArrayInstanceImp::lengthGetter):
  +        (CompareWithCompareFunctionArguments::CompareWithCompareFunctionArguments):
  +        (ArrayPrototypeImp::ArrayPrototypeImp):
  +        (ArrayProtoFuncImp::ArrayProtoFuncImp):
  +        (ArrayProtoFuncImp::callAsFunction):
  +        (ArrayObjectImp::ArrayObjectImp):
  +        * kjs/bool_object.cpp:
  +        (BooleanPrototypeImp::BooleanPrototypeImp):
  +        (BooleanProtoFuncImp::callAsFunction):
  +        (BooleanObjectImp::BooleanObjectImp):
  +        (BooleanObjectImp::callAsFunction):
  +        * kjs/error_object.cpp:
  +        (ErrorPrototypeImp::ErrorPrototypeImp):
  +        (ErrorProtoFuncImp::ErrorProtoFuncImp):
  +        (ErrorProtoFuncImp::callAsFunction):
  +        (ErrorObjectImp::ErrorObjectImp):
  +        (NativeErrorImp::NativeErrorImp):
  +        * kjs/function.cpp:
  +        (KJS::FunctionImp::callAsFunction):
  +        (KJS::FunctionImp::processParameters):
  +        (KJS::FunctionImp::argumentsGetter):
  +        (KJS::FunctionImp::lengthGetter):
  +        (KJS::DeclaredFunctionImp::execute):
  +        (KJS::encode):
  +        (KJS::decode):
  +        (KJS::GlobalFuncImp::callAsFunction):
  +        * kjs/function_object.cpp:
  +        (FunctionPrototypeImp::FunctionPrototypeImp):
  +        (FunctionPrototypeImp::callAsFunction):
  +        (FunctionProtoFuncImp::callAsFunction):
  +        (FunctionObjectImp::FunctionObjectImp):
  +        * kjs/internal.cpp:
  +        (KJS::InterpreterImp::initGlobalObject):
  +        * kjs/interpreter.h:
  +        * kjs/lookup.h:
  +        * kjs/math_object.cpp:
  +        (MathObjectImp::getValueProperty):
  +        (MathFuncImp::callAsFunction):
  +        * kjs/nodes.cpp:
  +        (Node::setExceptionDetailsIfNeeded):
  +        (NullNode::evaluate):
  +        (PropertyNode::evaluate):
  +        (FunctionCallBracketNode::evaluate):
  +        (FunctionCallDotNode::evaluate):
  +        (PostfixBracketNode::evaluate):
  +        (PostfixDotNode::evaluate):
  +        (VoidNode::evaluate):
  +        (PrefixBracketNode::evaluate):
  +        (PrefixDotNode::evaluate):
  +        (ShiftNode::evaluate):
  +        (valueForReadModifyAssignment):
  +        (AssignDotNode::evaluate):
  +        (AssignBracketNode::evaluate):
  +        (VarDeclNode::evaluate):
  +        (VarDeclNode::processVarDecls):
  +        (VarDeclListNode::evaluate):
  +        (ReturnNode::execute):
  +        (CaseClauseNode::evalStatements):
  +        (ParameterNode::evaluate):
  +        (FuncDeclNode::processFuncDecl):
  +        * kjs/nodes.h:
  +        (KJS::StatementNode::evaluate):
  +        * kjs/number_object.cpp:
  +        (NumberPrototypeImp::NumberPrototypeImp):
  +        (NumberProtoFuncImp::callAsFunction):
  +        (NumberObjectImp::NumberObjectImp):
  +        (NumberObjectImp::getValueProperty):
  +        (NumberObjectImp::callAsFunction):
  +        * kjs/object.cpp:
  +        (KJS::ObjectImp::get):
  +        (KJS::Error::create):
  +        * kjs/object_object.cpp:
  +        (ObjectPrototypeImp::ObjectPrototypeImp):
  +        (ObjectProtoFuncImp::callAsFunction):
  +        (ObjectObjectImp::ObjectObjectImp):
  +        * kjs/property_slot.cpp:
  +        (KJS::PropertySlot::undefinedGetter):
  +        * kjs/regexp_object.cpp:
  +        (RegExpPrototypeImp::RegExpPrototypeImp):
  +        (RegExpProtoFuncImp::callAsFunction):
  +        (RegExpObjectImp::RegExpObjectImp):
  +        (RegExpObjectImp::arrayOfMatches):
  +        (RegExpObjectImp::getBackref):
  +        (RegExpObjectImp::getLastMatch):
  +        (RegExpObjectImp::getLastParen):
  +        (RegExpObjectImp::getLeftContext):
  +        (RegExpObjectImp::getRightContext):
  +        (RegExpObjectImp::getValueProperty):
  +        (RegExpObjectImp::construct):
  +        * kjs/string_object.cpp:
  +        (StringInstanceImp::StringInstanceImp):
  +        (StringPrototypeImp::StringPrototypeImp):
  +        (replace):
  +        (StringProtoFuncImp::callAsFunction):
  +        (StringObjectImp::StringObjectImp):
  +        (StringObjectImp::callAsFunction):
  +        (StringObjectFuncImp::StringObjectFuncImp):
  +        (StringObjectFuncImp::callAsFunction):
  +        * kjs/testkjs.cpp:
  +        (TestFunctionImp::callAsFunction):
  +        (VersionFunctionImp::callAsFunction):
  +        * kjs/value.h:
  +
   2005-12-10  Oliver Hunt  <ojh16 at student.canterbury.ac.nz>
   
           Reviewed by Maciej, landed by Darin.
  
  
  
  1.26      +2 -2      JavaScriptCore/bindings/NP_jsobject.cpp
  
  Index: NP_jsobject.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/NP_jsobject.cpp,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- NP_jsobject.cpp	27 Nov 2005 07:54:41 -0000	1.25
  +++ NP_jsobject.cpp	11 Dec 2005 00:37:45 -0000	1.26
  @@ -197,11 +197,11 @@
           if (type == Normal) {
               result = completion.value();
               if (!result) {
  -                result = Undefined();
  +                result = jsUndefined();
               }
           }
           else
  -            result = Undefined();
  +            result = jsUndefined();
               
           free ((void *)scriptString);
           
  
  
  
  1.33      +3 -3      JavaScriptCore/bindings/runtime.h
  
  Index: runtime.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/runtime.h,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- runtime.h	16 Sep 2005 22:42:27 -0000	1.32
  +++ runtime.h	11 Dec 2005 00:37:45 -0000	1.33
  @@ -114,7 +114,7 @@
       
       virtual Field *fieldNamed(const char *name, Instance *instance) const = 0;
   
  -    virtual ValueImp *fallbackObject(ExecState *, Instance *, const Identifier &) { return Undefined(); }
  +    virtual ValueImp *fallbackObject(ExecState *, Instance *, const Identifier &) { return jsUndefined(); }
       
       virtual ~Class() {}
   };
  @@ -152,7 +152,7 @@
       virtual Class *getClass() const = 0;
       
       virtual ValueImp *getValueOfField(ExecState *exec, const Field *aField) const;
  -    virtual ValueImp *getValueOfUndefinedField(ExecState *exec, const Identifier &property, Type hint) const { return Undefined(); }
  +    virtual ValueImp *getValueOfUndefinedField(ExecState *exec, const Identifier &property, Type hint) const { return jsUndefined(); }
       virtual void setValueOfField(ExecState *exec, const Field *aField, ValueImp *aValue) const;
       virtual bool supportsSetValueOfUndefinedField() { return false; }
       virtual void setValueOfUndefinedField(ExecState *exec, const Identifier &property, ValueImp *aValue) {}
  @@ -162,7 +162,7 @@
       
       virtual ValueImp *defaultValue(Type hint) const = 0;
       
  -    virtual ValueImp *valueOf() const { return String(getClass()->name()); }
  +    virtual ValueImp *valueOf() const { return jsString(getClass()->name()); }
       
       void setExecutionContext(const RootObject *r) { _executionContext = r; }
       const RootObject *executionContext() const { return _executionContext; }
  
  
  
  1.13      +1 -1      JavaScriptCore/bindings/runtime_array.cpp
  
  Index: runtime_array.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/runtime_array.cpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- runtime_array.cpp	3 Oct 2005 21:11:41 -0000	1.12
  +++ runtime_array.cpp	11 Dec 2005 00:37:45 -0000	1.13
  @@ -47,7 +47,7 @@
   ValueImp *RuntimeArrayImp::lengthGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
   {
       RuntimeArrayImp *thisObj = static_cast<RuntimeArrayImp *>(slot.slotBase());
  -    return Number(thisObj->getLength());
  +    return jsNumber(thisObj->getLength());
   }
   
   ValueImp *RuntimeArrayImp::indexGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
  
  
  
  1.15      +3 -3      JavaScriptCore/bindings/runtime_method.cpp
  
  Index: runtime_method.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/runtime_method.cpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- runtime_method.cpp	3 Oct 2005 21:11:41 -0000	1.14
  +++ runtime_method.cpp	11 Dec 2005 00:37:45 -0000	1.15
  @@ -51,7 +51,7 @@
       // Java does.
       // FIXME: a better solution might be to give the maximum number of parameters
       // of any method
  -    return Number(thisObj->_methodList.methodAt(0)->numParameters());
  +    return jsNumber(thisObj->_methodList.methodAt(0)->numParameters());
   }
   
   bool RuntimeMethodImp::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot &slot)
  @@ -96,7 +96,7 @@
           }
       }
       
  -    return Undefined();
  +    return jsUndefined();
   }
   
   CodeType RuntimeMethodImp::codeType() const
  @@ -107,6 +107,6 @@
   
   Completion RuntimeMethodImp::execute(ExecState *exec)
   {
  -    return Completion(Normal, Undefined());
  +    return Completion(Normal, jsUndefined());
   }
   
  
  
  
  1.15      +3 -3      JavaScriptCore/bindings/c/c_instance.cpp
  
  Index: c_instance.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/c/c_instance.cpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- c_instance.cpp	3 Oct 2005 21:11:44 -0000	1.14
  +++ c_instance.cpp	11 Dec 2005 00:37:46 -0000	1.15
  @@ -108,7 +108,7 @@
   
       NPIdentifier ident = _NPN_GetStringIdentifier (method->name());
       if (!_object->_class->hasMethod (_object, ident)) {
  -        return Undefined();
  +        return jsUndefined();
       }
   
       unsigned i, count = args.size();
  @@ -143,7 +143,7 @@
           return resultValue;
       }
       
  -    return Undefined();
  +    return jsUndefined();
   }
   
   
  @@ -185,7 +185,7 @@
           }
       }
       
  -    return Undefined();
  +    return jsUndefined();
   }
   
   
  
  
  
  1.9       +1 -1      JavaScriptCore/bindings/c/c_runtime.cpp
  
  Index: c_runtime.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/c/c_runtime.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- c_runtime.cpp	3 Oct 2005 21:11:44 -0000	1.8
  +++ c_runtime.cpp	11 Dec 2005 00:37:46 -0000	1.9
  @@ -54,7 +54,7 @@
           aValue = convertNPVariantToValue (exec, &property);
       }
       else {
  -        aValue = Undefined();
  +        aValue = jsUndefined();
       }
       return aValue;
   }
  
  
  
  1.13      +7 -7      JavaScriptCore/bindings/c/c_utility.cpp
  
  Index: c_utility.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/c/c_utility.cpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- c_utility.cpp	3 Oct 2005 21:11:44 -0000	1.12
  +++ c_utility.cpp	11 Dec 2005 00:37:47 -0000	1.13
  @@ -137,22 +137,22 @@
           return jsBoolean(false);
       }
       else if (type == NPVariantType_Null) {
  -        return Null();
  +        return jsNull();
       }
       else if (type == NPVariantType_Void) {
  -        return Undefined();
  +        return jsUndefined();
       }
       else if (type == NPVariantType_Int32) {
           int32_t anInt;
           if (NPN_VariantToInt32(variant, &anInt))
  -            return Number(anInt);
  -        return Number(0);
  +            return jsNumber(anInt);
  +        return jsNumber(0);
       }
       else if (type == NPVariantType_Double) {
           double aDouble;
           if (NPN_VariantToDouble(variant, &aDouble))
  -            return Number(aDouble);
  -        return Number(0);
  +            return jsNumber(aDouble);
  +        return jsNumber(0);
       }
       else if (type == NPVariantType_String) {
           NPUTF16 *stringValue;
  @@ -176,7 +176,7 @@
           }
       }
       
  -    return Undefined();
  +    return jsUndefined();
   }
   
   } }
  
  
  
  1.32      +13 -13    JavaScriptCore/bindings/jni/jni_instance.cpp
  
  Index: jni_instance.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/jni/jni_instance.cpp,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- jni_instance.cpp	3 Oct 2005 21:11:45 -0000	1.31
  +++ jni_instance.cpp	11 Dec 2005 00:37:47 -0000	1.32
  @@ -120,7 +120,7 @@
       }
       if (method == 0) {
           JS_LOG ("unable to find an appropiate method\n");
  -        return Undefined();
  +        return jsUndefined();
       }
       
       const JavaMethod *jMethod = static_cast<const JavaMethod*>(method);
  @@ -154,7 +154,7 @@
           if (exceptionDescription) {
               throwError(exec, GeneralError, exceptionDescription->toString(exec));
               free (jArgs);
  -            return Undefined();
  +            return jsUndefined();
           }
       }
       
  @@ -222,7 +222,7 @@
           
       switch (jMethod->JNIReturnType()){
           case void_type: {
  -            resultValue = Undefined();
  +            resultValue = jsUndefined();
           }
           break;
           
  @@ -237,33 +237,33 @@
                   }
               }
               else {
  -                resultValue = Undefined();
  +                resultValue = jsUndefined();
               }
           }
           break;
           
           case boolean_type: {
  -            resultValue = Boolean(result.z);
  +            resultValue = jsBoolean(result.z);
           }
           break;
           
           case byte_type: {
  -            resultValue = Number(result.b);
  +            resultValue = jsNumber(result.b);
           }
           break;
           
           case char_type: {
  -            resultValue = Number(result.c);
  +            resultValue = jsNumber(result.c);
           }
           break;
           
           case short_type: {
  -            resultValue = Number(result.s);
  +            resultValue = jsNumber(result.s);
           }
           break;
           
           case int_type: {
  -            resultValue = Number(result.i);
  +            resultValue = jsNumber(result.i);
           }
           break;
           
  @@ -273,18 +273,18 @@
           break;
           
           case float_type: {
  -            resultValue = Number(result.f);
  +            resultValue = jsNumber(result.f);
           }
           break;
           
           case double_type: {
  -            resultValue = Number(result.d);
  +            resultValue = jsNumber(result.d);
           }
           break;
   
           case invalid_type:
           default: {
  -            resultValue = Undefined();
  +            resultValue = jsUndefined();
           }
           break;
       }
  @@ -296,7 +296,7 @@
   
   ValueImp *JavaInstance::invokeDefaultMethod (ExecState *exec, const List &args)
   {
  -    return Undefined();
  +    return jsUndefined();
   }
   
   
  
  
  
  1.17      +4 -4      JavaScriptCore/bindings/jni/jni_jsobject.cpp
  
  Index: jni_jsobject.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/jni/jni_jsobject.cpp,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- jni_jsobject.cpp	27 Nov 2005 07:54:43 -0000	1.16
  +++ jni_jsobject.cpp	11 Dec 2005 00:37:47 -0000	1.17
  @@ -204,9 +204,9 @@
       if (type == Normal) {
           result = completion.value();
           if (!result)
  -            result = Undefined();
  +            result = jsUndefined();
       } else
  -        result = Undefined();
  +        result = jsUndefined();
       
       return convertValueToJObject (result);
   }
  @@ -412,11 +412,11 @@
           JNIEnv *env = getJNIEnv();
           jfieldID fieldID = env->GetFieldID((jclass)classOfInstance, "nativeJSObject", "int");
           if (fieldID == NULL) {
  -            return Undefined();
  +            return jsUndefined();
           }
           jlong nativeHandle = env->GetLongField(theObject, fieldID);
           if (nativeHandle == UndefinedHandle) {
  -            return Undefined();
  +            return jsUndefined();
           }
           ObjectImp *imp = static_cast<ObjectImp*>(jlong_to_impptr(nativeHandle));
           return imp;
  
  
  
  1.31      +17 -20    JavaScriptCore/bindings/jni/jni_runtime.cpp
  
  Index: jni_runtime.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/jni/jni_runtime.cpp,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- jni_runtime.cpp	3 Oct 2005 21:11:45 -0000	1.30
  +++ jni_runtime.cpp	11 Dec 2005 00:37:48 -0000	1.31
  @@ -71,7 +71,7 @@
   ValueImp *JavaArray::convertJObjectToArray (ExecState *exec, jobject anObject, const char *type, const RootObject *r)
   {
       if (type[0] != '[')
  -        return Undefined();
  +        return jsUndefined();
   
       return new RuntimeArrayImp(exec, new JavaArray((jobject)anObject, type, r));
   }
  @@ -108,7 +108,7 @@
   {
       const JavaInstance *instance = static_cast<const JavaInstance *>(i);
   
  -    ValueImp *jsresult = Undefined();
  +    ValueImp *jsresult = jsUndefined();
       
       switch (_JNIType) {
           case object_type: {
  @@ -125,12 +125,9 @@
           }
           break;
               
  -        case boolean_type: {
  -	    jvalue result = dispatchValueFromInstance (exec, instance, "getBoolean", "(Ljava/lang/Object;)Z", boolean_type);
  -	    jboolean value = result.z;
  -            jsresult = Boolean((bool)value);
  -        }
  -        break;
  +        case boolean_type:
  +            jsresult = jsBoolean(dispatchValueFromInstance(exec, instance, "getBoolean", "(Ljava/lang/Object;)Z", boolean_type).z);
  +            break;
               
           case byte_type:
           case char_type:
  @@ -140,7 +137,7 @@
               jint value;
   	    jvalue result = dispatchValueFromInstance (exec, instance, "getInt", "(Ljava/lang/Object;)I", int_type);
   	    value = result.i;
  -            jsresult = Number((int)value);
  +            jsresult = jsNumber((int)value);
   	}
   	break;
   
  @@ -150,7 +147,7 @@
               jdouble value;
   	    jvalue result = dispatchValueFromInstance (exec, instance, "getDouble", "(Ljava/lang/Object;)D", double_type);
   	    value = result.i;
  -            jsresult = Number((double)value);
  +            jsresult = jsNumber((double)value);
           }
           break;
           default:
  @@ -471,7 +468,7 @@
   
               // No object?
               if (!anObject) {
  -                return Null();
  +                return jsNull();
               }
               
               // Nested array?
  @@ -486,21 +483,21 @@
               jbooleanArray booleanArray = (jbooleanArray)javaArray();
               jboolean aBoolean;
               env->GetBooleanArrayRegion(booleanArray, index, 1, &aBoolean);
  -            return Boolean (aBoolean);
  +            return jsBoolean(aBoolean);
           }
               
           case byte_type: {
               jbyteArray byteArray = (jbyteArray)javaArray();
               jbyte aByte;
               env->GetByteArrayRegion(byteArray, index, 1, &aByte);
  -            return Number (aByte);
  +            return jsNumber(aByte);
           }
               
           case char_type: {
               jcharArray charArray = (jcharArray)javaArray();
               jchar aChar;
               env->GetCharArrayRegion(charArray, index, 1, &aChar);
  -            return Number (aChar);
  +            return jsNumber(aChar);
               break;
           }
               
  @@ -508,40 +505,40 @@
               jshortArray shortArray = (jshortArray)javaArray();
               jshort aShort;
               env->GetShortArrayRegion(shortArray, index, 1, &aShort);
  -            return Number (aShort);
  +            return jsNumber(aShort);
           }
               
           case int_type: {
               jintArray intArray = (jintArray)javaArray();
               jint anInt;
               env->GetIntArrayRegion(intArray, index, 1, &anInt);
  -            return Number (anInt);
  +            return jsNumber(anInt);
           }
               
           case long_type: {
               jlongArray longArray = (jlongArray)javaArray();
               jlong aLong;
               env->GetLongArrayRegion(longArray, index, 1, &aLong);
  -            return Number ((long int)aLong);
  +            return jsNumber(aLong);
           }
               
           case float_type: {
               jfloatArray floatArray = (jfloatArray)javaArray();
               jfloat aFloat;
               env->GetFloatArrayRegion(floatArray, index, 1, &aFloat);
  -            return Number (aFloat);
  +            return jsNumber(aFloat);
           }
               
           case double_type: {
               jdoubleArray doubleArray = (jdoubleArray)javaArray();
               jdouble aDouble;
               env->GetDoubleArrayRegion(doubleArray, index, 1, &aDouble);
  -            return Number (aDouble);
  +            return jsNumber(aDouble);
           }
           default:
           break;
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   unsigned int JavaArray::getLength() const
  
  
  
  1.28      +6 -6      JavaScriptCore/bindings/objc/WebScriptObject.mm
  
  Index: WebScriptObject.mm
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/objc/WebScriptObject.mm,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- WebScriptObject.mm	27 Nov 2005 07:54:43 -0000	1.27
  +++ WebScriptObject.mm	11 Dec 2005 00:37:49 -0000	1.28
  @@ -210,7 +210,7 @@
   
       if (exec->hadException()) {
           LOG_EXCEPTION (exec);
  -        result = Undefined();
  +        result = jsUndefined();
       }
   
       // Convert and return the result of the function call.
  @@ -241,13 +241,13 @@
       if (type == Normal) {
           result = completion.value();
           if (!result)
  -            result = Undefined();
  +            result = jsUndefined();
       } else
  -        result = Undefined();
  +        result = jsUndefined();
       
       if (exec->hadException()) {
           LOG_EXCEPTION (exec);
  -        result = Undefined();
  +        result = jsUndefined();
       }
       
       id resultObj = [WebScriptObject _convertValueToObjcValue:result originExecutionContext:[self _originExecutionContext] executionContext:[self _executionContext]];
  @@ -294,7 +294,7 @@
       
       if (exec->hadException()) {
           LOG_EXCEPTION (exec);
  -        result = Undefined();
  +        result = jsUndefined();
       }
   
       id resultObj = [WebScriptObject _convertValueToObjcValue:result originExecutionContext:[self _originExecutionContext] executionContext:[self _executionContext]];
  @@ -358,7 +358,7 @@
   
       if (exec->hadException()) {
           LOG_EXCEPTION (exec);
  -        result = Undefined();
  +        result = jsUndefined();
       }
   
       id resultObj = [WebScriptObject _convertValueToObjcValue:result originExecutionContext:[self _originExecutionContext] executionContext:[self _executionContext]];
  
  
  
  1.16      +7 -7      JavaScriptCore/bindings/objc/objc_instance.mm
  
  Index: objc_instance.mm
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/objc/objc_instance.mm,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- objc_instance.mm	9 Nov 2005 06:34:56 -0000	1.15
  +++ objc_instance.mm	11 Dec 2005 00:37:49 -0000	1.16
  @@ -143,7 +143,7 @@
       if (method->isFallbackMethod()) {
           if (objcValueTypeForType([signature methodReturnType]) != ObjcObjectType) {
               NSLog(@"Incorrect signature for invokeUndefinedMethodFromWebScript:withArguments: -- return type must be object.");
  -            NS_VALUERETURN(Undefined(), ValueImp *);
  +            NS_VALUERETURN(jsUndefined(), ValueImp *);
           }
           
           // Invoke invokeUndefinedMethodFromWebScript:withArguments:, pass JavaScript function
  @@ -223,7 +223,7 @@
       assert ([signature methodReturnLength] < 1024);
       
       if (*type == 'v') {
  -        resultValue = Undefined();
  +        resultValue = jsUndefined();
       }
       else {
           [invocation getReturnValue:buffer];
  @@ -232,7 +232,7 @@
   
   NS_HANDLER
       
  -    resultValue = Undefined();
  +    resultValue = jsUndefined();
   
   NS_ENDHANDLER
   
  @@ -246,7 +246,7 @@
   NS_DURING
   
       if (![_instance respondsToSelector:@selector(invokeDefaultMethodWithArguments:)])
  -        NS_VALUERETURN(Undefined(), ValueImp *);
  +        NS_VALUERETURN(jsUndefined(), ValueImp *);
       
       NSMethodSignature *signature = [_instance methodSignatureForSelector:@selector(invokeDefaultMethodWithArguments:)];
       NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
  @@ -256,7 +256,7 @@
       
       if (objcValueTypeForType([signature methodReturnType]) != ObjcObjectType) {
           NSLog(@"Incorrect signature for invokeDefaultMethodWithArguments: -- return type must be object.");
  -        NS_VALUERETURN(Undefined(), ValueImp *);
  +        NS_VALUERETURN(jsUndefined(), ValueImp *);
       }
       
       NSMutableArray *objcArgs = [NSMutableArray array];
  @@ -283,7 +283,7 @@
   
   NS_HANDLER
   
  -    resultValue = Undefined();
  +    resultValue = jsUndefined();
   
   NS_ENDHANDLER
   
  @@ -334,7 +334,7 @@
   
   ValueImp *ObjcInstance::getValueOfUndefinedField (ExecState *exec, const Identifier &property, Type hint) const
   {
  -    ValueImp *volatile result = Undefined();
  +    ValueImp *volatile result = jsUndefined();
       
       id targetObject = getObject();
       
  
  
  
  1.23      +2 -2      JavaScriptCore/bindings/objc/objc_runtime.mm
  
  Index: objc_runtime.mm
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/objc/objc_runtime.mm,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- objc_runtime.mm	3 Oct 2005 21:11:47 -0000	1.22
  +++ objc_runtime.mm	11 Dec 2005 00:37:49 -0000	1.23
  @@ -123,7 +123,7 @@
       if (objcValue)
           aValue = convertObjcValueToValue (exec, &objcValue, ObjcObjectType);
       else
  -        aValue = Undefined();
  +        aValue = jsUndefined();
   
       return aValue;
   }
  @@ -299,7 +299,7 @@
   
   ValueImp *ObjcFallbackObjectImp::callAsFunction(ExecState *exec, ObjectImp *thisObj, const List &args)
   {
  -    ValueImp *result = Undefined();
  +    ValueImp *result = jsUndefined();
       
       RuntimeObjectImp *imp = static_cast<RuntimeObjectImp*>(thisObj);
       if (imp) {
  
  
  
  1.22      +24 -51    JavaScriptCore/bindings/objc/objc_utility.mm
  
  Index: objc_utility.mm
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/objc/objc_utility.mm,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- objc_utility.mm	3 Oct 2005 21:11:47 -0000	1.21
  +++ objc_utility.mm	11 Dec 2005 00:37:49 -0000	1.22
  @@ -173,7 +173,7 @@
       chars = (unichar *)malloc(sizeof(unichar)*length);
       [nsstring getCharacters:chars];
       UString u((const UChar*)chars, length);
  -    ValueImp *aValue = String (u);
  +    ValueImp *aValue = jsString(u);
       free((void *)chars);
       return aValue;
   }
  @@ -210,78 +210,51 @@
                       id       to Object wrapper
                   */
                   if ([*obj isKindOfClass:[NSString class]]){
  -                    NSString *string = (NSString *)*obj;
  -                    aValue = convertNSStringToString (string);
  -                }
  -                else if (*obj == [WebUndefined undefined]) {
  -                    return Undefined();
  -                }
  -                else if ((CFBooleanRef)*obj == kCFBooleanTrue) {
  -                    aValue = Boolean(true);
  -                }
  -                else if ((CFBooleanRef)*obj == kCFBooleanFalse) {
  -                    aValue = Boolean(false);
  -                }
  -                else if ([*obj isKindOfClass:[NSNumber class]]) {
  -                    aValue = Number([*obj doubleValue]);
  -                }
  -                else if ([*obj isKindOfClass:[NSArray class]]) {
  -                    aValue = new RuntimeArrayImp(exec, new ObjcArray (*obj));
  -                }
  -                else if ([*obj isKindOfClass:[WebScriptObject class]]) {
  +                    aValue = convertNSStringToString((NSString *)*obj);
  +                } else if (*obj == [WebUndefined undefined]) {
  +                    return jsUndefined();
  +                }  else if ((CFBooleanRef)*obj == kCFBooleanTrue) {
  +                    aValue = jsBoolean(true);
  +                } else if ((CFBooleanRef)*obj == kCFBooleanFalse) {
  +                    aValue = jsBoolean(false);
  +                } else if ([*obj isKindOfClass:[NSNumber class]]) {
  +                    aValue = jsNumber([*obj doubleValue]);
  +                } else if ([*obj isKindOfClass:[NSArray class]]) {
  +                    aValue = new RuntimeArrayImp(exec, new ObjcArray(*obj));
  +                } else if ([*obj isKindOfClass:[WebScriptObject class]]) {
                       WebScriptObject *jsobject = (WebScriptObject *)*obj;
                       aValue = [jsobject _imp];
  -                }
  -                else if (*obj == 0) {
  -                    return Undefined();
  -                }
  -                else {
  +                } else if (*obj == 0) {
  +                    return jsUndefined();
  +                } else {
   		    aValue = Instance::createRuntimeObject(Instance::ObjectiveCLanguage, (void *)*obj);
                   }
               }
               break;
           case ObjcCharType:
  -            {
  -                char *objcVal = (char *)buffer;
  -                aValue = Number ((short)*objcVal);
  -            }
  +            aValue = jsNumber(*(char *)buffer);
               break;
           case ObjcShortType:
  -            {
  -                short *objcVal = (short *)buffer;
  -                aValue = Number ((short)*objcVal);
  -            }
  +            aValue = jsNumber(*(short *)buffer);
               break;
           case ObjcIntType:
  -            {
  -                int *objcVal = (int *)buffer;
  -                aValue = Number ((int)*objcVal);
  -            }
  +            aValue = jsNumber(*(int *)buffer);
               break;
           case ObjcLongType:
  -            {
  -                long *objcVal = (long *)buffer;
  -                aValue = Number ((long)*objcVal);
  -            }
  +            aValue = jsNumber(*(long *)buffer);
               break;
           case ObjcFloatType:
  -            {
  -                float *objcVal = (float *)buffer;
  -                aValue = Number ((float)*objcVal);
  -            }
  +            aValue = jsNumber(*(float *)buffer);
               break;
           case ObjcDoubleType:
  -            {
  -                double *objcVal = (double *)buffer;
  -                aValue = Number ((double)*objcVal);
  -            }
  +            aValue = jsNumber(*(double *)buffer);
               break;
           default:
               // Should never get here.  Argument types are filtered (and
               // the assert above should have fired in the impossible case
               // of an invalid type anyway).
  -            fprintf (stderr, "%s:  invalid type (%d)\n", __PRETTY_FUNCTION__, (int)type);
  -            assert (true);
  +            fprintf(stderr, "%s: invalid type (%d)\n", __PRETTY_FUNCTION__, (int)type);
  +            assert(false);
       }
       
       return aValue;
  
  
  
  1.56      +26 -26    JavaScriptCore/kjs/array_object.cpp
  
  Index: array_object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/array_object.cpp,v
  retrieving revision 1.55
  retrieving revision 1.56
  diff -u -r1.55 -r1.56
  --- array_object.cpp	10 Dec 2005 19:05:21 -0000	1.55
  +++ array_object.cpp	11 Dec 2005 00:37:50 -0000	1.56
  @@ -76,7 +76,7 @@
   
   ValueImp *ArrayInstanceImp::lengthGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
   {
  -  return Number(static_cast<ArrayInstanceImp *>(slot.slotBase())->length);
  +  return jsNumber(static_cast<ArrayInstanceImp *>(slot.slotBase())->length);
   }
   
   bool ArrayInstanceImp::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot& slot)
  @@ -291,8 +291,8 @@
           , compareFunction(cf)
           , globalObject(e->dynamicInterpreter()->globalObject())
       {
  -        arguments.append(Undefined());
  -        arguments.append(Undefined());
  +        arguments.append(jsUndefined());
  +        arguments.append(jsUndefined());
       }
   
       ExecState *exec;
  @@ -400,7 +400,7 @@
                                        ObjectPrototypeImp *objProto)
     : ArrayInstanceImp(objProto, 0)
   {
  -  setInternalValue(Null());
  +  setInternalValue(jsNull());
   }
   
   bool ArrayPrototypeImp::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot& slot)
  @@ -415,7 +415,7 @@
       static_cast<FunctionPrototypeImp*>(exec->lexicalInterpreter()->builtinFunctionPrototype())
       ), id(i)
   {
  -  put(exec,lengthPropertyName,Number(len),DontDelete|ReadOnly|DontEnum);
  +  put(exec,lengthPropertyName,jsNumber(len),DontDelete|ReadOnly|DontEnum);
   }
   
   bool ArrayProtoFuncImp::implementsCall() const
  @@ -494,7 +494,7 @@
           break;
       }
       visitedElems.remove(thisObj);
  -    result = String(str);
  +    result = jsString(str);
       break;
     }
     case Concat: {
  @@ -525,18 +525,18 @@
         curArg = *it;
         curObj = static_cast<ObjectImp *>(it++); // may be 0
       }
  -    arr->put(exec,lengthPropertyName, Number(n), DontEnum | DontDelete);
  +    arr->put(exec,lengthPropertyName, jsNumber(n), DontEnum | DontDelete);
   
       result = arr;
       break;
     }
     case Pop:{
       if (length == 0) {
  -      thisObj->put(exec, lengthPropertyName, Number(length), DontEnum | DontDelete);
  -      result = Undefined();
  +      thisObj->put(exec, lengthPropertyName, jsNumber(length), DontEnum | DontDelete);
  +      result = jsUndefined();
       } else {
         result = thisObj->get(exec, length - 1);
  -      thisObj->put(exec, lengthPropertyName, Number(length - 1), DontEnum | DontDelete);
  +      thisObj->put(exec, lengthPropertyName, jsNumber(length - 1), DontEnum | DontDelete);
       }
       break;
     }
  @@ -544,8 +544,8 @@
       for (int n = 0; n < args.size(); n++)
         thisObj->put(exec, length + n, args[n]);
       length += args.size();
  -    thisObj->put(exec,lengthPropertyName, Number(length), DontEnum | DontDelete);
  -    result = Number(length);
  +    thisObj->put(exec,lengthPropertyName, jsNumber(length), DontEnum | DontDelete);
  +    result = jsNumber(length);
       break;
     }
     case Reverse: {
  @@ -572,8 +572,8 @@
     }
     case Shift: {
       if (length == 0) {
  -      thisObj->put(exec, lengthPropertyName, Number(length), DontEnum | DontDelete);
  -      result = Undefined();
  +      thisObj->put(exec, lengthPropertyName, jsNumber(length), DontEnum | DontDelete);
  +      result = jsUndefined();
       } else {
         result = thisObj->get(exec, 0);
         for(unsigned int k = 1; k < length; k++) {
  @@ -583,7 +583,7 @@
             thisObj->deleteProperty(exec, k-1);
         }
         thisObj->deleteProperty(exec, length - 1);
  -      thisObj->put(exec, lengthPropertyName, Number(length - 1), DontEnum | DontDelete);
  +      thisObj->put(exec, lengthPropertyName, jsNumber(length - 1), DontEnum | DontDelete);
       }
       break;
     }
  @@ -626,7 +626,7 @@
         if (ValueImp *v = getProperty(exec, thisObj, k))
           resObj->put(exec, n, v);
       }
  -    resObj->put(exec, lengthPropertyName, Number(n), DontEnum | DontDelete);
  +    resObj->put(exec, lengthPropertyName, jsNumber(n), DontEnum | DontDelete);
       break;
     }
     case Sort:{
  @@ -653,7 +653,7 @@
       }
   
       if (length == 0) {
  -      thisObj->put(exec, lengthPropertyName, Number(0), DontEnum | DontDelete);
  +      thisObj->put(exec, lengthPropertyName, jsNumber(0), DontEnum | DontDelete);
         result = thisObj;
         break;
       }
  @@ -719,7 +719,7 @@
         if (ValueImp *v = getProperty(exec, thisObj, k+begin))
           resObj->put(exec, k, v);
       }
  -    resObj->put(exec, lengthPropertyName, Number(deleteCount), DontEnum | DontDelete);
  +    resObj->put(exec, lengthPropertyName, jsNumber(deleteCount), DontEnum | DontDelete);
   
       unsigned int additionalArgs = maxInt( args.size() - 2, 0 );
       if ( additionalArgs != deleteCount )
  @@ -751,7 +751,7 @@
       {
         thisObj->put(exec, k+begin, args[k+2]);
       }
  -    thisObj->put(exec, lengthPropertyName, Number(length - deleteCount + additionalArgs), DontEnum | DontDelete);
  +    thisObj->put(exec, lengthPropertyName, jsNumber(length - deleteCount + additionalArgs), DontEnum | DontDelete);
       break;
     }
     case UnShift: { // 15.4.4.13
  @@ -765,7 +765,7 @@
       }
       for ( unsigned int k = 0; k < nrArgs; ++k )
         thisObj->put(exec, k, args[k]);
  -    result = Number(length + nrArgs);
  +    result = jsNumber(length + nrArgs);
       thisObj->put(exec, lengthPropertyName, result, DontEnum | DontDelete);
       break;
     }
  @@ -785,7 +785,7 @@
       ObjectImp *applyThis = args[1]->isUndefinedOrNull() ? exec->dynamicInterpreter()->globalObject() :  args[1]->toObject(exec);
       
       if (id == Some || id == Every)
  -      result = Boolean(id == Every);
  +      result = jsBoolean(id == Every);
       else
         result = thisObj;
       
  @@ -794,17 +794,17 @@
         List eachArguments;
         
         eachArguments.append(thisObj->get(exec, k));
  -      eachArguments.append(Number(k));
  +      eachArguments.append(jsNumber(k));
         eachArguments.append(thisObj);
         
         bool predicateResult = eachFunction->call(exec, applyThis, eachArguments)->toBoolean(exec);
         
         if (id == Every && !predicateResult) {
  -        result = Boolean(false);
  +        result = jsBoolean(false);
           break;
         }
         if (id == Some && predicateResult) {
  -        result = Boolean(true);
  +        result = jsBoolean(true);
           break;
         }
       }
  @@ -827,10 +827,10 @@
     : InternalFunctionImp(funcProto)
   {
     // ECMA 15.4.3.1 Array.prototype
  -  put(exec,prototypePropertyName, arrayProto, DontEnum|DontDelete|ReadOnly);
  +  put(exec, prototypePropertyName, arrayProto, DontEnum|DontDelete|ReadOnly);
   
     // no. of arguments for constructor
  -  put(exec,lengthPropertyName, Number(1), ReadOnly|DontDelete|DontEnum);
  +  put(exec, lengthPropertyName, jsNumber(1), ReadOnly|DontDelete|DontEnum);
   }
   
   bool ArrayObjectImp::implementsConstruct() const
  
  
  
  1.15      +6 -6      JavaScriptCore/kjs/bool_object.cpp
  
  Index: bool_object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/bool_object.cpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- bool_object.cpp	3 Oct 2005 21:11:48 -0000	1.14
  +++ bool_object.cpp	11 Dec 2005 00:37:50 -0000	1.15
  @@ -55,7 +55,7 @@
   
     putDirect(toStringPropertyName, new BooleanProtoFuncImp(exec,funcProto,BooleanProtoFuncImp::ToString,0), DontEnum);
     putDirect(valueOfPropertyName,  new BooleanProtoFuncImp(exec,funcProto,BooleanProtoFuncImp::ValueOf,0),  DontEnum);
  -  setInternalValue(Boolean(false));
  +  setInternalValue(jsBoolean(false));
   }
   
   
  @@ -88,8 +88,8 @@
     assert(v);
   
     if (id == ToString)
  -    return String(v->toString(exec));
  -  return Boolean(v->toBoolean(exec)); /* TODO: optimize for bool case */
  +    return jsString(v->toString(exec));
  +  return jsBoolean(v->toBoolean(exec)); /* TODO: optimize for bool case */
   }
   
   // ------------------------------ BooleanObjectImp -----------------------------
  @@ -102,7 +102,7 @@
     putDirect(prototypePropertyName, booleanProto, DontEnum|DontDelete|ReadOnly);
   
     // no. of arguments for constructor
  -  putDirect(lengthPropertyName, jsOne(), ReadOnly|DontDelete|DontEnum);
  +  putDirect(lengthPropertyName, jsNumber(1), ReadOnly|DontDelete|DontEnum);
   }
   
   
  @@ -136,8 +136,8 @@
   ValueImp *BooleanObjectImp::callAsFunction(ExecState *exec, ObjectImp */*thisObj*/, const List &args)
   {
     if (args.isEmpty())
  -    return Boolean(false);
  +    return jsBoolean(false);
     else
  -    return Boolean(args[0]->toBoolean(exec)); /* TODO: optimize for bool case */
  +    return jsBoolean(args[0]->toBoolean(exec)); /* TODO: optimize for bool case */
   }
   
  
  
  
  1.20      +8 -8      JavaScriptCore/kjs/error_object.cpp
  
  Index: error_object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/error_object.cpp,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- error_object.cpp	3 Oct 2005 21:11:48 -0000	1.19
  +++ error_object.cpp	11 Dec 2005 00:37:50 -0000	1.20
  @@ -48,11 +48,11 @@
                                        FunctionPrototypeImp *funcProto)
     : ObjectImp(objectProto)
   {
  -  setInternalValue(Undefined());
  +  setInternalValue(jsUndefined());
     // The constructor will be added later in ErrorObjectImp's constructor
   
  -  put(exec, namePropertyName,     String("Error"), DontEnum);
  -  put(exec, messagePropertyName,  String("Unknown error"), DontEnum);
  +  put(exec, namePropertyName,     jsString("Error"), DontEnum);
  +  put(exec, messagePropertyName,  jsString("Unknown error"), DontEnum);
     putDirect(toStringPropertyName, new ErrorProtoFuncImp(exec,funcProto), DontEnum);
   }
   
  @@ -61,7 +61,7 @@
   ErrorProtoFuncImp::ErrorProtoFuncImp(ExecState *exec, FunctionPrototypeImp *funcProto)
     : InternalFunctionImp(funcProto)
   {
  -  putDirect(lengthPropertyName, jsZero(), DontDelete|ReadOnly|DontEnum);
  +  putDirect(lengthPropertyName, jsNumber(0), DontDelete|ReadOnly|DontEnum);
   }
   
   bool ErrorProtoFuncImp::implementsCall() const
  @@ -84,7 +84,7 @@
       s += ": " + v->toString(exec); // Mozilla compatible format
     }
   
  -  return String(s);
  +  return jsString(s);
   }
   
   // ------------------------------ ErrorObjectImp -------------------------------
  @@ -95,8 +95,8 @@
   {
     // ECMA 15.11.3.1 Error.prototype
     putDirect(prototypePropertyName, errorProto, DontEnum|DontDelete|ReadOnly);
  -  putDirect(lengthPropertyName, jsOne(), DontDelete|ReadOnly|DontEnum);
  -  //putDirect(namePropertyName, String(n));
  +  putDirect(lengthPropertyName, jsNumber(1), DontDelete|ReadOnly|DontEnum);
  +  //putDirect(namePropertyName, jsString(n));
   }
   
   bool ErrorObjectImp::implementsConstruct() const
  @@ -148,7 +148,7 @@
                                  ObjectImp *prot)
     : InternalFunctionImp(funcProto), proto(prot)
   {
  -  putDirect(lengthPropertyName, jsOne(), DontDelete|ReadOnly|DontEnum); // ECMA 15.11.7.5
  +  putDirect(lengthPropertyName, jsNumber(1), DontDelete|ReadOnly|DontEnum); // ECMA 15.11.7.5
     putDirect(prototypePropertyName, proto, DontDelete|ReadOnly|DontEnum);
   }
   
  
  
  
  1.62      +17 -17    JavaScriptCore/kjs/function.cpp
  
  Index: function.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/function.cpp,v
  retrieving revision 1.61
  retrieving revision 1.62
  diff -u -r1.61 -r1.62
  --- function.cpp	1 Dec 2005 10:31:58 -0000	1.61
  +++ function.cpp	11 Dec 2005 00:37:50 -0000	1.62
  @@ -100,7 +100,7 @@
       bool cont = dbg->callEvent(&newExec,sid,lineno,this,args);
       if (!cont) {
         dbg->imp()->abort();
  -      return Undefined();
  +      return jsUndefined();
       }
     }
   
  @@ -129,7 +129,7 @@
       int cont = dbg->returnEvent(&newExec,sid,lineno,this);
       if (!cont) {
         dbg->imp()->abort();
  -      return Undefined();
  +      return jsUndefined();
       }
     }
   
  @@ -140,7 +140,7 @@
     else if (comp.complType() == ReturnValue)
       return comp.value();
     else
  -    return Undefined();
  +    return jsUndefined();
   }
   
   void FunctionImp::addParameter(const Identifier &n)
  @@ -190,7 +190,7 @@
   	variable->put(exec, p->name, *it);
   	it++;
         } else
  -	variable->put(exec, p->name, Undefined());
  +	variable->put(exec, p->name, jsUndefined());
         p = p->next;
       }
     }
  @@ -216,7 +216,7 @@
       }
       context = context->callingContext();
     }
  -  return Null();
  +  return jsNull();
   }
   
   ValueImp *FunctionImp::lengthGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
  @@ -228,7 +228,7 @@
       ++count;
       p = p->next;
     }
  -  return Number(count);
  +  return jsNumber(count);
   }
   
   bool FunctionImp::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot& slot)
  @@ -337,7 +337,7 @@
   
     if (result.complType() == Throw || result.complType() == ReturnValue)
         return result;
  -  return Completion(Normal, Undefined()); // TODO: or ReturnValue ?
  +  return Completion(Normal, jsUndefined()); // TODO: or ReturnValue ?
   }
   
   void DeclaredFunctionImp::processVarDecls(ExecState *exec)
  @@ -575,7 +575,7 @@
         r += tmp;
       }
     }
  -  return String(r);
  +  return jsString(r);
   }
   
   static ValueImp *decode(ExecState *exec, const List &args, const char *do_not_unescape, bool strict)
  @@ -640,7 +640,7 @@
       k++;
       s.append(c);
     }
  -  return String(s);
  +  return jsString(s);
   }
   
   static bool isStrWhiteSpace(unsigned short c)
  @@ -787,7 +787,7 @@
           if (dbg) {
             bool cont = dbg->sourceParsed(exec, sid, UString(), s, errLine);
             if (!cont)
  -            return Undefined();
  +            return jsUndefined();
           }
   
           // no program node means a syntax occurred
  @@ -814,7 +814,7 @@
           if (newExec.hadException())
             exec->setException(newExec.exception());
   
  -        res = Undefined();
  +        res = jsUndefined();
           if (c.complType() == Throw)
             exec->setException(c.value());
           else if (c.isValueCompletion())
  @@ -823,17 +823,17 @@
         break;
       }
     case ParseInt:
  -    res = Number(parseInt(args[0]->toString(exec), args[1]->toInt32(exec)));
  +    res = jsNumber(parseInt(args[0]->toString(exec), args[1]->toInt32(exec)));
       break;
     case ParseFloat:
  -    res = Number(parseFloat(args[0]->toString(exec)));
  +    res = jsNumber(parseFloat(args[0]->toString(exec)));
       break;
     case IsNaN:
  -    res = Boolean(isNaN(args[0]->toNumber(exec)));
  +    res = jsBoolean(isNaN(args[0]->toNumber(exec)));
       break;
     case IsFinite: {
       double n = args[0]->toNumber(exec);
  -    res = Boolean(!isNaN(n) && !isInf(n));
  +    res = jsBoolean(!isNaN(n) && !isInf(n));
       break;
     }
     case DecodeURI:
  @@ -867,7 +867,7 @@
           }
           r += s;
         }
  -      res = String(r);
  +      res = jsString(r);
         break;
       }
     case UnEscape:
  @@ -894,7 +894,7 @@
           k++;
           s += UString(c, 1);
         }
  -      res = String(s);
  +      res = jsString(s);
         break;
       }
   #ifndef NDEBUG
  
  
  
  1.35      +6 -6      JavaScriptCore/kjs/function_object.cpp
  
  Index: function_object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/function_object.cpp,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- function_object.cpp	1 Dec 2005 10:31:59 -0000	1.34
  +++ function_object.cpp	11 Dec 2005 00:37:51 -0000	1.35
  @@ -40,7 +40,7 @@
   
   FunctionPrototypeImp::FunctionPrototypeImp(ExecState *exec)
   {
  -  putDirect(lengthPropertyName,   jsZero(),                                                       DontDelete|ReadOnly|DontEnum);
  +  putDirect(lengthPropertyName,   jsNumber(0),                                                       DontDelete|ReadOnly|DontEnum);
     putDirect(toStringPropertyName, new FunctionProtoFuncImp(exec, this, FunctionProtoFuncImp::ToString, 0), DontEnum);
     static const Identifier applyPropertyName("apply");
     putDirect(applyPropertyName,    new FunctionProtoFuncImp(exec, this, FunctionProtoFuncImp::Apply,    2), DontEnum);
  @@ -60,7 +60,7 @@
   // ECMA 15.3.4
   ValueImp *FunctionPrototypeImp::callAsFunction(ExecState */*exec*/, ObjectImp */*thisObj*/, const List &/*args*/)
   {
  -  return Undefined();
  +  return jsUndefined();
   }
   
   // ------------------------------ FunctionProtoFuncImp -------------------------
  @@ -94,14 +94,14 @@
       if (thisObj->inherits(&DeclaredFunctionImp::info)) {
          DeclaredFunctionImp *fi = static_cast<DeclaredFunctionImp*>
                                    (thisObj);
  -       return String("function " + fi->name().ustring() + "(" +
  +       return jsString("function " + fi->name().ustring() + "(" +
            fi->parameterString() + ") " + fi->body->toString());
       } else if (thisObj->inherits(&FunctionImp::info) &&
           !static_cast<FunctionImp*>(thisObj)->name().isNull()) {
  -      result = String("function " + static_cast<FunctionImp*>(thisObj)->name().ustring() + "()");
  +      result = jsString("function " + static_cast<FunctionImp*>(thisObj)->name().ustring() + "()");
       }
       else {
  -      result = String("(Internal Function)");
  +      result = jsString("(Internal Function)");
       }
       }
       break;
  @@ -165,7 +165,7 @@
     putDirect(prototypePropertyName, funcProto, DontEnum|DontDelete|ReadOnly);
   
     // no. of arguments for constructor
  -  putDirect(lengthPropertyName, jsOne(), ReadOnly|DontDelete|DontEnum);
  +  putDirect(lengthPropertyName, jsNumber(1), ReadOnly|DontDelete|DontEnum);
   }
   
   FunctionObjectImp::~FunctionObjectImp()
  
  
  
  1.81      +2 -2      JavaScriptCore/kjs/internal.cpp
  
  Index: internal.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/internal.cpp,v
  retrieving revision 1.80
  retrieving revision 1.81
  diff -u -r1.80 -r1.81
  --- internal.cpp	1 Dec 2005 10:31:59 -0000	1.80
  +++ internal.cpp	11 Dec 2005 00:37:51 -0000	1.81
  @@ -529,8 +529,8 @@
   
     // built-in values
     global->put(&globExec, "NaN",        jsNaN(), DontEnum|DontDelete);
  -  global->put(&globExec, "Infinity",   Number(Inf), DontEnum|DontDelete);
  -  global->put(&globExec, "undefined",  Undefined(), DontEnum|DontDelete);
  +  global->put(&globExec, "Infinity",   jsNumber(Inf), DontEnum|DontDelete);
  +  global->put(&globExec, "undefined",  jsUndefined(), DontEnum|DontDelete);
   
     // built-in functions
     global->put(&globExec, "eval",       new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::Eval, 1), DontEnum);
  
  
  
  1.30      +1 -1      JavaScriptCore/kjs/interpreter.h
  
  Index: interpreter.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/interpreter.h,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- interpreter.h	23 Nov 2005 05:41:19 -0000	1.29
  +++ interpreter.h	11 Dec 2005 00:37:51 -0000	1.30
  @@ -200,7 +200,7 @@
        *
        * @param code The code to evaluate
        * @param thisV The value to pass in as the "this" value for the script
  -     * execution. This should either be Null() or an Object.
  +     * execution. This should either be jsNull() or an Object.
        * @return A completion object representing the result of the execution.
        */
       Completion evaluate(const UString &sourceURL, int startingLineNumber, const UString &code, ValueImp *thisV = NULL);
  
  
  
  1.19      +1 -1      JavaScriptCore/kjs/lookup.h
  
  Index: lookup.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/lookup.h,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- lookup.h	8 Aug 2005 04:07:28 -0000	1.18
  +++ lookup.h	11 Dec 2005 00:37:51 -0000	1.19
  @@ -329,7 +329,7 @@
     public: \
       ClassFunc(ExecState *exec, int i, int len) : id(i) \
       { \
  -       put(exec, lengthPropertyName, Number(len), DontDelete|ReadOnly|DontEnum); \
  +       put(exec, lengthPropertyName, jsNumber(len), DontDelete|ReadOnly|DontEnum); \
       } \
       /* Macro user needs to implement the callAsFunction function. */ \
       virtual ValueImp *callAsFunction(ExecState *exec, ObjectImp *thisObj, const List &args); \
  
  
  
  1.21      +2 -2      JavaScriptCore/kjs/math_object.cpp
  
  Index: math_object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/math_object.cpp,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- math_object.cpp	6 Oct 2005 01:13:18 -0000	1.20
  +++ math_object.cpp	11 Dec 2005 00:37:51 -0000	1.21
  @@ -145,7 +145,7 @@
       assert(0);
     }
   
  -  return Number(d);
  +  return jsNumber(d);
   }
   
   // ------------------------------ MathObjectImp --------------------------------
  @@ -282,5 +282,5 @@
       assert(0);
     }
   
  -  return Number(result);
  +  return jsNumber(result);
   }
  
  
  
  1.89      +29 -29    JavaScriptCore/kjs/nodes.cpp
  
  Index: nodes.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/nodes.cpp,v
  retrieving revision 1.88
  retrieving revision 1.89
  diff -u -r1.88 -r1.89
  --- nodes.cpp	16 Oct 2005 00:46:21 -0000	1.88
  +++ nodes.cpp	11 Dec 2005 00:37:51 -0000	1.89
  @@ -70,10 +70,10 @@
   #define KJS_CHECKEXCEPTIONVALUE \
     if (exec->hadException()) { \
       setExceptionDetailsIfNeeded(exec); \
  -    return Undefined(); \
  +    return jsUndefined(); \
     } \
     if (Collector::outOfMemory()) \
  -    return Undefined(); // will be picked up by KJS_CHECKEXCEPTION
  +    return jsUndefined(); // will be picked up by KJS_CHECKEXCEPTION
   
   #define KJS_CHECKEXCEPTIONLIST \
     if (exec->hadException()) { \
  @@ -174,8 +174,8 @@
       if (exceptionValue->isObject()) {
           ObjectImp *exception = static_cast<ObjectImp *>(exceptionValue);
           if (!exception->hasProperty(exec, "line") && !exception->hasProperty(exec, "sourceURL")) {
  -            exception->put(exec, "line", Number(line));
  -            exception->put(exec, "sourceURL", String(sourceURL));
  +            exception->put(exec, "line", jsNumber(line));
  +            exception->put(exec, "sourceURL", jsString(sourceURL));
           }
       }
   }
  @@ -216,7 +216,7 @@
   
   ValueImp *NullNode::evaluate(ExecState *)
   {
  -  return Null();
  +  return jsNull();
   }
   
   // ------------------------------ BooleanNode ----------------------------------
  @@ -380,9 +380,9 @@
     ValueImp *s;
   
     if (str.isNull()) {
  -    s = String(UString::from(numeric));
  +    s = jsString(UString::from(numeric));
     } else {
  -    s = String(str.ustring());
  +    s = jsString(str.ustring());
     }
   
     return s;
  @@ -571,13 +571,13 @@
       if (baseObj->getPropertySlot(exec, i, slot))
         funcVal = slot.getValue(exec, i);
       else
  -      funcVal = Undefined();
  +      funcVal = jsUndefined();
     } else {
       Identifier ident(subscriptVal->toString(exec));
       if (baseObj->getPropertySlot(exec, ident, slot))
         funcVal = baseObj->get(exec, ident);
       else
  -      funcVal = Undefined();
  +      funcVal = jsUndefined();
     }
   
     KJS_CHECKEXCEPTIONVALUE
  @@ -620,7 +620,7 @@
   
     ObjectImp *baseObj = baseVal->toObject(exec);
     PropertySlot slot;
  -  ValueImp *funcVal = baseObj->getPropertySlot(exec, ident, slot) ? slot.getValue(exec, ident) : Undefined();
  +  ValueImp *funcVal = baseObj->getPropertySlot(exec, ident, slot) ? slot.getValue(exec, ident) : jsUndefined();
     KJS_CHECKEXCEPTIONVALUE
   
     if (!funcVal->isObject())
  @@ -690,7 +690,7 @@
     uint32_t propertyIndex;
     if (subscript->getUInt32(propertyIndex)) {
       PropertySlot slot;
  -    ValueImp *v = base->getPropertySlot(exec, propertyIndex, slot) ? slot.getValue(exec, propertyIndex) : Undefined();
  +    ValueImp *v = base->getPropertySlot(exec, propertyIndex, slot) ? slot.getValue(exec, propertyIndex) : jsUndefined();
       KJS_CHECKEXCEPTIONVALUE
   
       double n = v->toNumber(exec);
  @@ -703,7 +703,7 @@
   
     Identifier propertyName(subscript->toString(exec));
     PropertySlot slot;
  -  ValueImp *v = base->getPropertySlot(exec, propertyName, slot) ? slot.getValue(exec, propertyName) : Undefined();
  +  ValueImp *v = base->getPropertySlot(exec, propertyName, slot) ? slot.getValue(exec, propertyName) : jsUndefined();
     KJS_CHECKEXCEPTIONVALUE
   
     double n = v->toNumber(exec);
  @@ -723,7 +723,7 @@
     ObjectImp *base = baseValue->toObject(exec);
   
     PropertySlot slot;
  -  ValueImp *v = base->getPropertySlot(exec, m_ident, slot) ? slot.getValue(exec, m_ident) : Undefined();
  +  ValueImp *v = base->getPropertySlot(exec, m_ident, slot) ? slot.getValue(exec, m_ident) : jsUndefined();
     KJS_CHECKEXCEPTIONVALUE
   
     double n = v->toNumber(exec);
  @@ -806,7 +806,7 @@
     expr->evaluate(exec);
     KJS_CHECKEXCEPTIONVALUE
   
  -  return Undefined();
  +  return jsUndefined();
   }
   
   // ECMA 11.4.3
  @@ -917,7 +917,7 @@
     uint32_t propertyIndex;
     if (subscript->getUInt32(propertyIndex)) {
       PropertySlot slot;
  -    ValueImp *v = base->getPropertySlot(exec, propertyIndex, slot) ? slot.getValue(exec, propertyIndex) : Undefined();
  +    ValueImp *v = base->getPropertySlot(exec, propertyIndex, slot) ? slot.getValue(exec, propertyIndex) : jsUndefined();
       KJS_CHECKEXCEPTIONVALUE
   
       double n = v->toNumber(exec);
  @@ -931,7 +931,7 @@
   
     Identifier propertyName(subscript->toString(exec));
     PropertySlot slot;
  -  ValueImp *v = base->getPropertySlot(exec, propertyName, slot) ? slot.getValue(exec, propertyName) : Undefined();
  +  ValueImp *v = base->getPropertySlot(exec, propertyName, slot) ? slot.getValue(exec, propertyName) : jsUndefined();
     KJS_CHECKEXCEPTIONVALUE
   
     double n = v->toNumber(exec);
  @@ -952,7 +952,7 @@
     ObjectImp *base = baseValue->toObject(exec);
   
     PropertySlot slot;
  -  ValueImp *v = base->getPropertySlot(exec, m_ident, slot) ? slot.getValue(exec, m_ident) : Undefined();
  +  ValueImp *v = base->getPropertySlot(exec, m_ident, slot) ? slot.getValue(exec, m_ident) : jsUndefined();
     KJS_CHECKEXCEPTIONVALUE
   
     double n = v->toNumber(exec);
  @@ -1056,7 +1056,7 @@
       return jsNumber(v1->toUInt32(exec) >> i2);
     default:
       assert(!"ShiftNode: unhandled switch case");
  -    return Undefined();
  +    return jsUndefined();
     }
   }
   
  @@ -1255,7 +1255,7 @@
       break;
     default:
       assert(0);
  -    v = Undefined();
  +    v = jsUndefined();
     }
     
     return v;
  @@ -1317,7 +1317,7 @@
       v = m_right->evaluate(exec);
     } else {
       PropertySlot slot;
  -    ValueImp *v1 = base->getPropertySlot(exec, m_ident, slot) ? slot.getValue(exec, m_ident) : Undefined();
  +    ValueImp *v1 = base->getPropertySlot(exec, m_ident, slot) ? slot.getValue(exec, m_ident) : jsUndefined();
       KJS_CHECKEXCEPTIONVALUE
       ValueImp *v2 = m_right->evaluate(exec);
       v = valueForReadModifyAssignment(exec, v1, v2, m_oper);
  @@ -1347,7 +1347,7 @@
         v = m_right->evaluate(exec);
       } else {
         PropertySlot slot;
  -      ValueImp *v1 = base->getPropertySlot(exec, propertyIndex, slot) ? slot.getValue(exec, propertyIndex) : Undefined();
  +      ValueImp *v1 = base->getPropertySlot(exec, propertyIndex, slot) ? slot.getValue(exec, propertyIndex) : jsUndefined();
         KJS_CHECKEXCEPTIONVALUE
         ValueImp *v2 = m_right->evaluate(exec);
         v = valueForReadModifyAssignment(exec, v1, v2, m_oper);
  @@ -1366,7 +1366,7 @@
       v = m_right->evaluate(exec);
     } else {
       PropertySlot slot;
  -    ValueImp *v1 = base->getPropertySlot(exec, propertyName, slot) ? slot.getValue(exec, propertyName) : Undefined();
  +    ValueImp *v1 = base->getPropertySlot(exec, propertyName, slot) ? slot.getValue(exec, propertyName) : jsUndefined();
       KJS_CHECKEXCEPTIONVALUE
       ValueImp *v2 = m_right->evaluate(exec);
       v = valueForReadModifyAssignment(exec, v1, v2, m_oper);
  @@ -1466,7 +1466,7 @@
         // built-in properties of the global object with var declarations.
         if (variable->getDirect(ident)) 
             return 0;
  -      val = Undefined();
  +      val = jsUndefined();
     }
   
   #ifdef KJS_VERBOSE
  @@ -1496,7 +1496,7 @@
         flags |= DontDelete;
       if (varType == VarDeclNode::Constant)
         flags |= ReadOnly;
  -    variable->put(exec, ident, Undefined(), flags);
  +    variable->put(exec, ident, jsUndefined(), flags);
     }
   }
   
  @@ -1509,7 +1509,7 @@
       n->var->evaluate(exec);
       KJS_CHECKEXCEPTIONVALUE
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   void VarDeclListNode::processVarDecls(ExecState *exec)
  @@ -1918,7 +1918,7 @@
     }
   
     if (!value)
  -    return Completion(ReturnValue, Undefined());
  +    return Completion(ReturnValue, jsUndefined());
   
     ValueImp *v = value->evaluate(exec);
     KJS_CHECKEXCEPTION
  @@ -1966,7 +1966,7 @@
     if (list)
       return list->execute(exec);
     else
  -    return Completion(Normal, Undefined());
  +    return Completion(Normal, jsUndefined());
   }
   
   void CaseClauseNode::processVarDecls(ExecState *exec)
  @@ -2191,7 +2191,7 @@
   // ECMA 13
   ValueImp *ParameterNode::evaluate(ExecState *)
   {
  -  return Undefined();
  +  return jsUndefined();
   }
   
   // ------------------------------ FunctionBodyNode -----------------------------
  @@ -2226,7 +2226,7 @@
     for(ParameterNode *p = param.get(); p != 0L; p = p->nextParam(), plen++)
       func->addParameter(p->ident());
   
  -  func->put(exec, lengthPropertyName, Number(plen), ReadOnly|DontDelete|DontEnum);
  +  func->put(exec, lengthPropertyName, jsNumber(plen), ReadOnly|DontDelete|DontEnum);
   
     // ECMA 10.2.2
     context->variableObject()->put(exec, ident, func, Internal | (context->codeType() == EvalCode ? 0 : DontDelete));
  
  
  
  1.42      +1 -1      JavaScriptCore/kjs/nodes.h
  
  Index: nodes.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/nodes.h,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- nodes.h	1 Dec 2005 10:31:59 -0000	1.41
  +++ nodes.h	11 Dec 2005 00:37:51 -0000	1.42
  @@ -134,7 +134,7 @@
     protected:
       LabelStack ls;
     private:
  -    ValueImp *evaluate(ExecState */*exec*/) { return Undefined(); }
  +    ValueImp *evaluate(ExecState */*exec*/) { return jsUndefined(); }
       int l0, l1;
       int sid;
       bool breakPoint;
  
  
  
  1.25      +27 -27    JavaScriptCore/kjs/number_object.cpp
  
  Index: number_object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/number_object.cpp,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- number_object.cpp	6 Oct 2005 01:13:18 -0000	1.24
  +++ number_object.cpp	11 Dec 2005 00:37:52 -0000	1.25
  @@ -53,7 +53,7 @@
                                          FunctionPrototypeImp *funcProto)
     : NumberInstanceImp(objProto)
   {
  -  setInternalValue(jsZero());
  +  setInternalValue(jsNumber(0));
   
     // The constructor will be added later, after NumberObjectImp has been constructed
   
  @@ -148,14 +148,14 @@
           *--p = "0123456789abcdefghijklmnopqrstuvwxyz"[i % radix];
           i /= radix;
         } while (i);
  -      return String(p);
  +      return jsString(p);
       } else
  -      return String(v->toString(exec));
  +      return jsString(v->toString(exec));
     }
     case ToLocaleString: /* TODO */
  -    return String(v->toString(exec));
  +    return jsString(v->toString(exec));
     case ValueOf:
  -    return Number(v->toNumber(exec));
  +    return jsNumber(v->toNumber(exec));
     case ToFixed: 
     {
         ValueImp *fractionDigits = args[0];
  @@ -166,7 +166,7 @@
         
         double x = v->toNumber(exec);
         if (isNaN(x))
  -          return String("NaN");
  +          return jsString("NaN");
         
         UString s = "";
         if (x < 0) {
  @@ -175,7 +175,7 @@
         }
         
         if (x >= pow(10.0, 21.0))
  -          return String(s+UString::from(x));
  +          return jsString(s+UString::from(x));
         
         double n = floor(x*pow(10.0, f));
         if (fabs(n / pow(10.0, f) - x) > fabs((n + 1) / pow(10.0, f) - x))
  @@ -193,15 +193,15 @@
             assert(k == m.size());
         }
         if (k-f < m.size())
  -          return String(s+m.substr(0,k-f)+"."+m.substr(k-f));
  +          return jsString(s+m.substr(0,k-f)+"."+m.substr(k-f));
         else
  -          return String(s+m.substr(0,k-f));
  +          return jsString(s+m.substr(0,k-f));
     }
     case ToExponential: {
         double x = v->toNumber(exec);
         
         if (isNaN(x) || isInf(x))
  -          return String(UString::from(x));
  +          return jsString(UString::from(x));
         
         ValueImp *fractionDigits = args[0];
         double df = fractionDigits->toInteger(exec);
  @@ -229,7 +229,7 @@
         int sign;
         
         if (isNaN(x))
  -          return String("NaN");
  +          return jsString("NaN");
         
         char *result = kjs_dtoa(x, 0, 0, &decimalPoint, &sign, NULL);
         int length = strlen(result);
  @@ -285,7 +285,7 @@
         
         kjs_freedtoa(result);
         
  -      return String(UString(buf));
  +      return jsString(buf);
     }
     case ToPrecision:
     {
  @@ -295,7 +295,7 @@
         double dp = args[0]->toInteger(exec);
         double x = v->toNumber(exec);
         if (isNaN(dp) || isNaN(x) || isInf(x))
  -          return String(v->toString(exec));
  +          return jsString(v->toString(exec));
         
         UString s = "";
         if (x < 0) {
  @@ -325,9 +325,9 @@
                 if (m.size() > 1)
                     m = m.substr(0,1)+"."+m.substr(1);
                 if (e >= 0)
  -                  return String(s+m+"e+"+UString::from(e));
  +                  return jsString(s+m+"e+"+UString::from(e));
                 else
  -                  return String(s+m+"e-"+UString::from(-e));
  +                  return jsString(s+m+"e-"+UString::from(-e));
             }
         }
         else {
  @@ -336,16 +336,16 @@
         }
         
         if (e == p-1) {
  -          return String(s+m);
  +          return jsString(s+m);
         }
         else if (e >= 0) {
             if (e+1 < m.size())
  -              return String(s+m.substr(0,e+1)+"."+m.substr(e+1));
  +              return jsString(s+m.substr(0,e+1)+"."+m.substr(e+1));
             else
  -              return String(s+m.substr(0,e+1));
  +              return jsString(s+m.substr(0,e+1));
         }
         else {
  -          return String(s+"0."+char_sequence('0',-(e+1))+m);
  +          return jsString(s+"0."+char_sequence('0',-(e+1))+m);
         }
      }
         
  @@ -375,7 +375,7 @@
     putDirect(prototypePropertyName, numberProto,DontEnum|DontDelete|ReadOnly);
   
     // no. of arguments for constructor
  -  putDirect(lengthPropertyName, jsOne(), ReadOnly|DontDelete|DontEnum);
  +  putDirect(lengthPropertyName, jsNumber(1), ReadOnly|DontDelete|DontEnum);
   }
   
   bool NumberObjectImp::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot& slot)
  @@ -390,15 +390,15 @@
     case NaNValue:
       return jsNaN();
     case NegInfinity:
  -    return Number(-Inf);
  +    return jsNumber(-Inf);
     case PosInfinity:
  -    return Number(Inf);
  +    return jsNumber(Inf);
     case MaxValue:
  -    return Number(1.7976931348623157E+308);
  +    return jsNumber(1.7976931348623157E+308);
     case MinValue:
  -    return Number(5E-324);
  +    return jsNumber(5E-324);
     }
  -  return Null();
  +  return jsNull();
   }
   
   bool NumberObjectImp::implementsConstruct() const
  @@ -433,7 +433,7 @@
   ValueImp *NumberObjectImp::callAsFunction(ExecState *exec, ObjectImp */*thisObj*/, const List &args)
   {
     if (args.isEmpty())
  -    return Number(0);
  +    return jsNumber(0);
     else
  -    return Number(args[0]->toNumber(exec));
  +    return jsNumber(args[0]->toNumber(exec));
   }
  
  
  
  1.57      +5 -5      JavaScriptCore/kjs/object.cpp
  
  Index: object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/object.cpp,v
  retrieving revision 1.56
  retrieving revision 1.57
  diff -u -r1.56 -r1.57
  --- object.cpp	4 Dec 2005 23:28:56 -0000	1.56
  +++ object.cpp	11 Dec 2005 00:37:52 -0000	1.57
  @@ -155,7 +155,7 @@
     if (const_cast<ObjectImp *>(this)->getPropertySlot(exec, propertyName, slot))
       return slot.getValue(exec, propertyName);
       
  -  return Undefined();
  +  return jsUndefined();
   }
   
   ValueImp *ObjectImp::get(ExecState *exec, unsigned propertyName) const
  @@ -164,7 +164,7 @@
     if (const_cast<ObjectImp *>(this)->getPropertySlot(exec, propertyName, slot))
       return slot.getValue(exec, propertyName);
       
  -  return Undefined();
  +  return jsUndefined();
   }
   
   bool ObjectImp::getPropertySlot(ExecState *exec, unsigned propertyName, PropertySlot& slot)
  @@ -511,12 +511,12 @@
     ObjectImp *err = static_cast<ObjectImp *>(cons->construct(exec,args));
   
     if (lineno != -1)
  -    err->put(exec, "line", Number(lineno));
  +    err->put(exec, "line", jsNumber(lineno));
     if (sourceId != -1)
  -    err->put(exec, "sourceId", Number(sourceId));
  +    err->put(exec, "sourceId", jsNumber(sourceId));
   
     if(sourceURL)
  -   err->put(exec,"sourceURL", String(*sourceURL));
  +   err->put(exec,"sourceURL", jsString(*sourceURL));
    
     return err;
   
  
  
  
  1.17      +3 -3      JavaScriptCore/kjs/object_object.cpp
  
  Index: object_object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/object_object.cpp,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- object_object.cpp	4 Dec 2005 23:28:56 -0000	1.16
  +++ object_object.cpp	11 Dec 2005 00:37:52 -0000	1.17
  @@ -36,7 +36,7 @@
   
   ObjectPrototypeImp::ObjectPrototypeImp(ExecState *exec,
                                          FunctionPrototypeImp *funcProto)
  -  : ObjectImp() // [[Prototype]] is Null()
  +  : ObjectImp() // [[Prototype]] is null
   {
       putDirect(toStringPropertyName, new ObjectProtoFuncImp(exec, funcProto, ObjectProtoFuncImp::ToString,               0), DontEnum);
       putDirect(toLocaleStringPropertyName, new ObjectProtoFuncImp(exec, funcProto, ObjectProtoFuncImp::ToLocaleString,   0), DontEnum);
  @@ -79,7 +79,7 @@
               return jsString(thisObj->toString(exec));
           case ToString:
           default:
  -            return String("[object " + thisObj->className() + "]");
  +            return jsString("[object " + thisObj->className() + "]");
       }
   }
   
  @@ -94,7 +94,7 @@
     putDirect(prototypePropertyName, objProto, DontEnum|DontDelete|ReadOnly);
   
     // no. of arguments for constructor
  -  putDirect(lengthPropertyName, jsOne(), ReadOnly|DontDelete|DontEnum);
  +  putDirect(lengthPropertyName, jsNumber(1), ReadOnly|DontDelete|DontEnum);
   }
   
   
  
  
  
  1.4       +1 -1      JavaScriptCore/kjs/property_slot.cpp
  
  Index: property_slot.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/property_slot.cpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- property_slot.cpp	3 Oct 2005 21:11:50 -0000	1.3
  +++ property_slot.cpp	11 Dec 2005 00:37:52 -0000	1.4
  @@ -28,7 +28,7 @@
   
   ValueImp *PropertySlot::undefinedGetter(ExecState *, const Identifier& propertyName, const PropertySlot& slot)
   {
  -    return Undefined();
  +    return jsUndefined();
   }
   
   }
  
  
  
  1.28      +27 -27    JavaScriptCore/kjs/regexp_object.cpp
  
  Index: regexp_object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/regexp_object.cpp,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- regexp_object.cpp	3 Nov 2005 18:11:58 -0000	1.27
  +++ regexp_object.cpp	11 Dec 2005 00:37:52 -0000	1.28
  @@ -49,7 +49,7 @@
                                          FunctionPrototypeImp *funcProto)
     : ObjectImp(objProto)
   {
  -  setInternalValue(String(""));
  +  setInternalValue(jsString(""));
   
     // The constructor will be added later in RegExpObject's constructor (?)
   
  @@ -79,7 +79,7 @@
     if (!thisObj->inherits(&RegExpImp::info)) {
       if (thisObj->inherits(&RegExpPrototypeImp::info)) {
         switch (id) {
  -        case ToString: return String("//");
  +        case ToString: return jsString("//");
         }
       }
       
  @@ -105,8 +105,8 @@
       if (!globalFlag)
         lastIndex = 0;
       if (lastIndex < 0 || lastIndex > input.size()) {
  -      thisObj->put(exec, "lastIndex", jsZero(), DontDelete | DontEnum);
  -      return Null();
  +      thisObj->put(exec, "lastIndex", jsNumber(0), DontDelete | DontEnum);
  +      return jsNull();
       }
   
       int foundIndex;
  @@ -115,17 +115,17 @@
   
       // Test
       if (id == Test)
  -      return Boolean(didMatch);
  +      return jsBoolean(didMatch);
   
       // Exec
       if (didMatch) {
         if (globalFlag)
  -        thisObj->put(exec, "lastIndex", Number(foundIndex + match.size()), DontDelete | DontEnum);
  +        thisObj->put(exec, "lastIndex", jsNumber(foundIndex + match.size()), DontDelete | DontEnum);
         return regExpObj->arrayOfMatches(exec, match);
       } else {
         if (globalFlag)
  -        thisObj->put(exec, "lastIndex", jsZero(), DontDelete | DontEnum);
  -      return Null();
  +        thisObj->put(exec, "lastIndex", jsNumber(0), DontDelete | DontEnum);
  +      return jsNull();
       }
     }
     break;
  @@ -140,10 +140,10 @@
       if (thisObj->get(exec, "multiline")->toBoolean(exec)) {
         result += "m";
       }
  -    return String(result);
  +    return jsString(result);
     }
   
  -  return Undefined();
  +  return jsUndefined();
   }
   
   // ------------------------------ RegExpImp ------------------------------------
  @@ -200,7 +200,7 @@
     putDirect(prototypePropertyName, regProto, DontEnum|DontDelete|ReadOnly);
   
     // no. of arguments for constructor
  -  putDirect(lengthPropertyName, jsTwo(), ReadOnly|DontDelete|DontEnum);
  +  putDirect(lengthPropertyName, jsNumber(2), ReadOnly|DontDelete|DontEnum);
   }
   
   RegExpObjectImp::~RegExpObjectImp()
  @@ -240,7 +240,7 @@
   {
     List list;
     // The returned array contains 'result' as first item, followed by the list of matches
  -  list.append(String(result));
  +  list.append(jsString(result));
     if ( lastOvector )
       for ( unsigned i = 1 ; i < lastNumSubPatterns + 1 ; ++i )
       {
  @@ -249,12 +249,12 @@
           list.append(jsUndefined());
         else {
           UString substring = lastInput.substr( start, lastOvector[2*i+1] - start );
  -        list.append(String(substring));
  +        list.append(jsString(substring));
         }
       }
     ObjectImp *arr = exec->lexicalInterpreter()->builtinArray()->construct(exec, list);
  -  arr->put(exec, "index", Number(lastOvector[0]));
  -  arr->put(exec, "input", String(lastInput));
  +  arr->put(exec, "index", jsNumber(lastOvector[0]));
  +  arr->put(exec, "input", jsString(lastInput));
     return arr;
   }
   
  @@ -262,20 +262,20 @@
   {
     if (lastOvector && i < lastNumSubPatterns + 1) {
       UString substring = lastInput.substr(lastOvector[2*i], lastOvector[2*i+1] - lastOvector[2*i] );
  -    return String(substring);
  +    return jsString(substring);
     } 
   
  -  return String("");
  +  return jsString("");
   }
   
   ValueImp *RegExpObjectImp::getLastMatch() const
   {
     if (lastOvector) {
       UString substring = lastInput.substr(lastOvector[0], lastOvector[1] - lastOvector[0]);
  -    return String(substring);
  +    return jsString(substring);
     }
     
  -  return String("");
  +  return jsString("");
   }
   
   ValueImp *RegExpObjectImp::getLastParen() const
  @@ -284,20 +284,20 @@
     if (i > 0) {
       assert(lastOvector);
       UString substring = lastInput.substr(lastOvector[2*i], lastOvector[2*i+1] - lastOvector[2*i]);
  -    return String(substring);
  +    return jsString(substring);
     }
       
  -  return String("");
  +  return jsString("");
   }
   
   ValueImp *RegExpObjectImp::getLeftContext() const
   {
     if (lastOvector) {
       UString substring = lastInput.substr(0, lastOvector[0]);
  -    return String(substring);
  +    return jsString(substring);
     }
     
  -  return String("");
  +  return jsString("");
   }
   
   ValueImp *RegExpObjectImp::getRightContext() const
  @@ -305,10 +305,10 @@
     if (lastOvector) {
       UString s = lastInput;
       UString substring = s.substr(lastOvector[1], s.size() - lastOvector[1]);
  -    return String(substring);
  +    return jsString(substring);
     }
     
  -  return String("");
  +  return jsString("");
   }
   
   bool RegExpObjectImp::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot& slot)
  @@ -353,7 +353,7 @@
         assert(0);
     }
   
  -  return String("");
  +  return jsString("");
   }
   
   void RegExpObjectImp::put(ExecState *exec, const Identifier &propertyName, ValueImp *value, int attr)
  @@ -406,7 +406,7 @@
     dat->putDirect("multiline", jsBoolean(multiline), DontDelete | ReadOnly | DontEnum);
   
     dat->putDirect("source", jsString(p), DontDelete | ReadOnly | DontEnum);
  -  dat->putDirect("lastIndex", jsZero(), DontDelete | DontEnum);
  +  dat->putDirect("lastIndex", jsNumber(0), DontDelete | DontEnum);
   
     int reflags = RegExp::None;
     if (global)
  
  
  
  1.51      +48 -48    JavaScriptCore/kjs/string_object.cpp
  
  Index: string_object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/string_object.cpp,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- string_object.cpp	6 Nov 2005 05:48:45 -0000	1.50
  +++ string_object.cpp	11 Dec 2005 00:37:52 -0000	1.51
  @@ -43,13 +43,13 @@
   StringInstanceImp::StringInstanceImp(ObjectImp *proto)
     : ObjectImp(proto)
   {
  -  setInternalValue(String(""));
  +  setInternalValue(jsString(""));
   }
   
   StringInstanceImp::StringInstanceImp(ObjectImp *proto, const UString &string)
     : ObjectImp(proto)
   {
  -  setInternalValue(String(string));
  +  setInternalValue(jsString(string));
   }
   
   ValueImp *StringInstanceImp::lengthGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot &slot)
  @@ -145,7 +145,7 @@
     : StringInstanceImp(objProto)
   {
     // The constructor will be added later, after StringObjectImp has been built
  -  putDirect(lengthPropertyName, jsZero(), DontDelete|ReadOnly|DontEnum);
  +  putDirect(lengthPropertyName, jsNumber(0), DontDelete|ReadOnly|DontEnum);
   }
   
   bool StringPrototypeImp::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot &slot)
  @@ -338,7 +338,7 @@
       delete [] sourceRanges;
       delete [] replacements;
   
  -    return String(result);
  +    return jsString(result);
     }
     
     // First arg is a string
  @@ -347,7 +347,7 @@
     int matchLen = patternString.size();
     // Do the replacement
     if (matchPos == -1)
  -    return String(source);
  +    return jsString(source);
     
     if (replacementFunction) {
         List args;
  @@ -360,7 +360,7 @@
                                                       args)->toString(exec);
     }
   
  -  return String(source.substr(0, matchPos) + replacementString + source.substr(matchPos + matchLen));
  +  return jsString(source.substr(0, matchPos) + replacementString + source.substr(matchPos + matchLen));
   }
   
   // ECMA 15.5.4.2 - 15.5.4.20
  @@ -373,7 +373,7 @@
       if (!thisObj || !thisObj->inherits(&StringInstanceImp::info))
         return throwError(exec, TypeError);
   
  -    return String(thisObj->internalValue()->toString(exec));
  +    return jsString(thisObj->internalValue()->toString(exec));
     }
   
     UString u, u2, u3;
  @@ -400,14 +400,14 @@
         u = s.substr(static_cast<int>(dpos), 1);
       else
         u = "";
  -    result = String(u);
  +    result = jsString(u);
       break;
     case CharCodeAt:
       // Other browsers treat an omitted parameter as 0 rather than NaN.
       // That doesn't match the ECMA standard, but is needed for site compatibility.
       dpos = a0->isUndefined() ? 0 : a0->toInteger(exec);
       if (dpos >= 0 && dpos < len) // false for NaN
  -      result = Number(s[static_cast<int>(dpos)].unicode());
  +      result = jsNumber(s[static_cast<int>(dpos)].unicode());
       else
         result = jsNaN();
       break;
  @@ -416,7 +416,7 @@
       for ( ; it != args.end() ; ++it) {
           s += it->toString(exec);
       }
  -    result = String(s);
  +    result = jsString(s);
       break;
     }
     case IndexOf:
  @@ -431,7 +431,7 @@
         } else
           dpos = 0;
       }
  -    result = Number(s.find(u2, static_cast<int>(dpos)));
  +    result = jsNumber(s.find(u2, static_cast<int>(dpos)));
       break;
     case LastIndexOf:
       u2 = a0->toString(exec);
  @@ -446,7 +446,7 @@
         } else
           dpos = 0;
       }
  -    result = Number(s.rfind(u2, static_cast<int>(dpos)));
  +    result = jsNumber(s.rfind(u2, static_cast<int>(dpos)));
       break;
     case Match:
     case Search: {
  @@ -467,13 +467,13 @@
       RegExpObjectImp* regExpObj = static_cast<RegExpObjectImp*>(exec->lexicalInterpreter()->builtinRegExp());
       UString mstr = regExpObj->performMatch(reg, u, 0, &pos);
       if (id == Search) {
  -      result = Number(pos);
  +      result = jsNumber(pos);
       } else {
         // Exec
         if ((reg->flags() & RegExp::Global) == 0) {
   	// case without 'g' flag is handled like RegExp.prototype.exec
   	if (mstr.isNull()) {
  -	  result = Null();
  +	  result = jsNull();
   	} else {
   	  result = regExpObj->arrayOfMatches(exec,mstr);
   	}
  @@ -485,18 +485,18 @@
             if (mstr.isNull())
               list.append(jsUndefined());
             else
  -	    list.append(String(mstr));
  +	    list.append(jsString(mstr));
   	  lastIndex = pos;
   	  pos += mstr.isEmpty() ? 1 : mstr.size();
   	  mstr = regExpObj->performMatch(reg, u, pos, &pos);
   	}
   	if (imp)
  -	  imp->put(exec, "lastIndex", Number(lastIndex), DontDelete|DontEnum);
  +	  imp->put(exec, "lastIndex", jsNumber(lastIndex), DontDelete|DontEnum);
   	if (list.isEmpty()) {
   	  // if there are no matches at all, it's important to return
   	  // Null instead of an empty array, because this matches
   	  // other browsers and because Null is a false value.
  -	  result = Null(); 
  +	  result = jsNull(); 
   	} else {
   	  result = exec->lexicalInterpreter()->builtinArray()->construct(exec, list);
   	}
  @@ -520,9 +520,9 @@
             from = 0;
           if (to > len)
             to = len;
  -        result = String(s.substr(static_cast<int>(from), static_cast<int>(to - from)));
  +        result = jsString(s.substr(static_cast<int>(from), static_cast<int>(to - from)));
         } else {
  -        result = String("");
  +        result = jsString("");
         }
         break;
       }
  @@ -538,7 +538,7 @@
         RegExp reg(obj0->get(exec,"source")->toString(exec));
         if (u.isEmpty() && !reg.match(u, 0).isNull()) {
   	// empty string matched by regexp -> empty array
  -	res->put(exec,lengthPropertyName, Number(0));
  +	res->put(exec,lengthPropertyName, jsNumber(0));
   	break;
         }
         pos = 0;
  @@ -552,7 +552,7 @@
   	  break;
   	pos = mpos + (mstr.isEmpty() ? 1 : mstr.size());
   	if (mpos != p0 || !mstr.isEmpty()) {
  -	  res->put(exec,i, String(u.substr(p0, mpos-p0)));
  +	  res->put(exec,i, jsString(u.substr(p0, mpos-p0)));
   	  p0 = mpos + mstr.size();
   	  i++;
   	}
  @@ -562,15 +562,15 @@
         if (u2.isEmpty()) {
   	if (u.isEmpty()) {
   	  // empty separator matches empty string -> empty array
  -	  put(exec,lengthPropertyName, Number(0));
  +	  put(exec,lengthPropertyName, jsNumber(0));
   	  break;
   	} else {
   	  while (static_cast<uint32_t>(i) != limit && i < u.size()-1)
  -	    res->put(exec, i++, String(u.substr(p0++, 1)));
  +	    res->put(exec, i++, jsString(u.substr(p0++, 1)));
   	}
         } else {
   	while (static_cast<uint32_t>(i) != limit && (pos = u.find(u2, p0)) >= 0) {
  -	  res->put(exec, i, String(u.substr(p0, pos-p0)));
  +	  res->put(exec, i, jsString(u.substr(p0, pos-p0)));
   	  p0 = pos + u2.size();
   	  i++;
   	}
  @@ -578,8 +578,8 @@
       }
       // add remaining string, if any
       if (static_cast<uint32_t>(i) != limit)
  -      res->put(exec, i++, String(u.substr(p0)));
  -    res->put(exec,lengthPropertyName, Number(i));
  +      res->put(exec, i++, jsString(u.substr(p0)));
  +    res->put(exec,lengthPropertyName, jsNumber(i));
       }
       break;
     case Substr: {
  @@ -598,7 +598,7 @@
         if (d2 > len - d)
           d2 = len - d;
       }
  -    result = String(s.substr(static_cast<int>(d), static_cast<int>(d2)));
  +    result = jsString(s.substr(static_cast<int>(d), static_cast<int>(d2)));
       break;
     }
     case Substring: {
  @@ -623,7 +623,7 @@
         end = start;
         start = temp;
       }
  -    result = String(s.substr((int)start, (int)end-(int)start));
  +    result = jsString(s.substr((int)start, (int)end-(int)start));
       }
       break;
     case ToLowerCase:
  @@ -631,54 +631,54 @@
       u = s;
       for (i = 0; i < len; i++)
         u[i] = u[i].toLower();
  -    result = String(u);
  +    result = jsString(u);
       break;
     case ToUpperCase:
     case ToLocaleUpperCase: // FIXME: To get this 100% right we need to detect Turkish and change i to uppercase I with a dot.
       u = s;
       for (i = 0; i < len; i++)
         u[i] = u[i].toUpper();
  -    result = String(u);
  +    result = jsString(u);
       break;
   #ifndef KJS_PURE_ECMA
     case Big:
  -    result = String("<big>" + s + "</big>");
  +    result = jsString("<big>" + s + "</big>");
       break;
     case Small:
  -    result = String("<small>" + s + "</small>");
  +    result = jsString("<small>" + s + "</small>");
       break;
     case Blink:
  -    result = String("<blink>" + s + "</blink>");
  +    result = jsString("<blink>" + s + "</blink>");
       break;
     case Bold:
  -    result = String("<b>" + s + "</b>");
  +    result = jsString("<b>" + s + "</b>");
       break;
     case Fixed:
  -    result = String("<tt>" + s + "</tt>");
  +    result = jsString("<tt>" + s + "</tt>");
       break;
     case Italics:
  -    result = String("<i>" + s + "</i>");
  +    result = jsString("<i>" + s + "</i>");
       break;
     case Strike:
  -    result = String("<strike>" + s + "</strike>");
  +    result = jsString("<strike>" + s + "</strike>");
       break;
     case Sub:
  -    result = String("<sub>" + s + "</sub>");
  +    result = jsString("<sub>" + s + "</sub>");
       break;
     case Sup:
  -    result = String("<sup>" + s + "</sup>");
  +    result = jsString("<sup>" + s + "</sup>");
       break;
     case Fontcolor:
  -    result = String("<font color=\"" + a0->toString(exec) + "\">" + s + "</font>");
  +    result = jsString("<font color=\"" + a0->toString(exec) + "\">" + s + "</font>");
       break;
     case Fontsize:
  -    result = String("<font size=\"" + a0->toString(exec) + "\">" + s + "</font>");
  +    result = jsString("<font size=\"" + a0->toString(exec) + "\">" + s + "</font>");
       break;
     case Anchor:
  -    result = String("<a name=\"" + a0->toString(exec) + "\">" + s + "</a>");
  +    result = jsString("<a name=\"" + a0->toString(exec) + "\">" + s + "</a>");
       break;
     case Link:
  -    result = String("<a href=\"" + a0->toString(exec) + "\">" + s + "</a>");
  +    result = jsString("<a href=\"" + a0->toString(exec) + "\">" + s + "</a>");
       break;
   #endif
     }
  @@ -699,7 +699,7 @@
     putDirect(fromCharCodePropertyName, new StringObjectFuncImp(exec, funcProto), DontEnum);
   
     // no. of arguments for constructor
  -  putDirect(lengthPropertyName, jsOne(), ReadOnly|DontDelete|DontEnum);
  +  putDirect(lengthPropertyName, jsNumber(1), ReadOnly|DontDelete|DontEnum);
   }
   
   
  @@ -726,10 +726,10 @@
   ValueImp *StringObjectImp::callAsFunction(ExecState *exec, ObjectImp */*thisObj*/, const List &args)
   {
     if (args.isEmpty())
  -    return String("");
  +    return jsString("");
     else {
       ValueImp *v = args[0];
  -    return String(v->toString(exec));
  +    return jsString(v->toString(exec));
     }
   }
   
  @@ -739,7 +739,7 @@
   StringObjectFuncImp::StringObjectFuncImp(ExecState *exec, FunctionPrototypeImp *funcProto)
     : InternalFunctionImp(funcProto)
   {
  -  putDirect(lengthPropertyName, jsOne(), DontDelete|ReadOnly|DontEnum);
  +  putDirect(lengthPropertyName, jsNumber(1), DontDelete|ReadOnly|DontEnum);
   }
   
   bool StringObjectFuncImp::implementsCall() const
  @@ -763,5 +763,5 @@
     } else
       s = "";
   
  -  return String(s);
  +  return jsString(s);
   }
  
  
  
  1.19      +4 -4      JavaScriptCore/kjs/testkjs.cpp
  
  Index: testkjs.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/testkjs.cpp,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- testkjs.cpp	27 Nov 2005 07:54:45 -0000	1.18
  +++ testkjs.cpp	11 Dec 2005 00:37:52 -0000	1.19
  @@ -58,10 +58,10 @@
     case Print:
     case Debug:
       fprintf(stderr,"--> %s\n",args[0]->toString(exec).ascii());
  -    return Undefined();
  +    return jsUndefined();
     case Quit:
       exit(0);
  -    return Undefined();
  +    return jsUndefined();
     case GC:
     {
       JSLock lock;
  @@ -72,7 +72,7 @@
       break;
     }
   
  -  return Undefined();
  +  return jsUndefined();
   }
   
   class VersionFunctionImp : public ObjectImp {
  @@ -86,7 +86,7 @@
   {
     // We need this function for compatibility with the Mozilla JS tests but for now
     // we don't actually do any version-specific handling
  -  return Undefined();
  +  return jsUndefined();
   }
   
   class GlobalImp : public ObjectImp {
  
  
  
  1.38      +1 -28     JavaScriptCore/kjs/value.h
  
  Index: value.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/value.h,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- value.h	16 Nov 2005 01:45:12 -0000	1.37
  +++ value.h	11 Dec 2005 00:37:52 -0000	1.38
  @@ -175,13 +175,10 @@
   AllocatedValueImp *jsUndefined();
   AllocatedValueImp *jsNull();
   
  -AllocatedValueImp *jsBoolean(bool = false);
  +AllocatedValueImp *jsBoolean(bool);
   
   ValueImp *jsNumber(double);
   ValueImp *jsNaN();
  -ValueImp *jsZero();
  -ValueImp *jsOne();
  -ValueImp *jsTwo();
   
   AllocatedValueImp *jsString(const UString &); // returns empty string if passed null string
   AllocatedValueImp *jsString(const char * = ""); // returns empty string if passed 0
  @@ -418,30 +415,6 @@
       return downcast()->toString(exec);
   }
   
  -inline ValueImp *jsZero()
  -{
  -    return SimpleNumber::make(0.0);
  -}
  -
  -inline ValueImp *jsOne()
  -{
  -    return SimpleNumber::make(1.0);
  -}
  -
  -inline ValueImp *jsTwo()
  -{
  -    return SimpleNumber::make(2.0);
  -}
  -
  -// compatibility names so we don't have to change so much code
  -
  -inline AllocatedValueImp *Undefined() { return jsUndefined(); }
  -inline AllocatedValueImp *Null() { return jsNull(); }
  -inline AllocatedValueImp *Boolean(bool b) { return jsBoolean(b); }
  -inline ValueImp *Number(double n) { return jsNumber(n); }
  -inline AllocatedValueImp *String(const UString& s) { return jsString(s); }
  -inline AllocatedValueImp *String(const char *s) { return jsString(s); }
  -
   } // namespace
   
   #endif // KJS_VALUE_H
  
  
  
  1.505     +235 -0    WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.504
  retrieving revision 1.505
  diff -u -r1.504 -r1.505
  --- ChangeLog	11 Dec 2005 00:07:20 -0000	1.504
  +++ ChangeLog	11 Dec 2005 00:37:56 -0000	1.505
  @@ -1,3 +1,238 @@
  +2005-12-10  Darin Adler  <darin at apple.com>
  +
  +        Reviewed by Maciej.
  +
  +        - eliminated the old Undefined(), Null(), Boolean(), Number(), and String()
  +
  +        Code now uses jsUndefined(), jsNull(), jsBoolean(), jsNumber(), and jsString().
  +
  +        * khtml/ecma/domparser.cpp:
  +        (KJS::DOMParserProtoFunc::callAsFunction):
  +        * khtml/ecma/kjs_binding.cpp:
  +        (KJS::jsStringOrNull):
  +        (KJS::setDOMException):
  +        * khtml/ecma/kjs_binding.h:
  +        (KJS::DOMFunction::toPrimitive):
  +        * khtml/ecma/kjs_css.cpp:
  +        (KJS::DOMCSSStyleDeclaration::indexGetter):
  +        (KJS::DOMCSSStyleDeclaration::cssPropertyGetter):
  +        (KJS::DOMCSSStyleDeclaration::getValueProperty):
  +        (KJS::DOMCSSStyleDeclarationProtoFunc::callAsFunction):
  +        (KJS::DOMStyleSheet::getValueProperty):
  +        (KJS::getDOMStyleSheet):
  +        (KJS::DOMStyleSheetList::getValueProperty):
  +        (KJS::getDOMStyleSheetList):
  +        (KJS::DOMStyleSheetListFunc::callAsFunction):
  +        (KJS::DOMMediaList::getValueProperty):
  +        (KJS::DOMMediaList::indexGetter):
  +        (KJS::KJS::DOMMediaListProtoFunc::callAsFunction):
  +        (KJS::DOMCSSStyleSheet::getValueProperty):
  +        (KJS::DOMCSSStyleSheetProtoFunc::callAsFunction):
  +        (KJS::DOMCSSRuleList::getValueProperty):
  +        (KJS::DOMCSSRuleListFunc::callAsFunction):
  +        (KJS::DOMCSSRule::getValueProperty):
  +        (KJS::DOMCSSRuleFunc::callAsFunction):
  +        (KJS::CSSRuleConstructor::getValueProperty):
  +        (KJS::DOMCSSValue::getValueProperty):
  +        (KJS::getDOMCSSValue):
  +        (KJS::CSSValueConstructor::getValueProperty):
  +        (KJS::DOMCSSPrimitiveValue::getValueProperty):
  +        (KJS::DOMCSSPrimitiveValueProtoFunc::callAsFunction):
  +        (KJS::CSSPrimitiveValueConstructor::getValueProperty):
  +        (KJS::DOMCSSValueList::getValueProperty):
  +        (KJS::DOMCSSValueListFunc::callAsFunction):
  +        (KJS::DOMCounter::getValueProperty):
  +        * khtml/ecma/kjs_dom.cpp:
  +        (KJS::DOMNode::getValueProperty):
  +        (KJS::DOMNode::toPrimitive):
  +        (KJS::DOMNode::getListener):
  +        (KJS::DOMNodeProtoFunc::callAsFunction):
  +        (KJS::DOMNodeList::toPrimitive):
  +        (KJS::DOMNodeList::getValueProperty):
  +        (KJS::DOMNodeList::callAsFunction):
  +        (KJS::DOMAttr::getValueProperty):
  +        (KJS::DOMDocument::getValueProperty):
  +        (KJS::DOMDocumentProtoFunc::callAsFunction):
  +        (KJS::DOMElement::getValueProperty):
  +        (KJS::DOMElement::attributeGetter):
  +        (KJS::DOMElementProtoFunc::callAsFunction):
  +        (KJS::DOMDOMImplementationProtoFunc::callAsFunction):
  +        (KJS::DOMDocumentType::getValueProperty):
  +        (KJS::DOMNamedNodeMap::lengthGetter):
  +        (KJS::DOMNamedNodeMapProtoFunc::callAsFunction):
  +        (KJS::DOMProcessingInstruction::getValueProperty):
  +        (KJS::DOMNotation::getValueProperty):
  +        (KJS::DOMEntity::getValueProperty):
  +        (KJS::getDOMNode):
  +        (KJS::NodeConstructor::getValueProperty):
  +        (KJS::DOMExceptionConstructor::getValueProperty):
  +        (KJS::DOMNamedNodesCollection::lengthGetter):
  +        (KJS::DOMCharacterData::getValueProperty):
  +        (KJS::DOMCharacterDataProtoFunc::callAsFunction):
  +        (KJS::DOMTextProtoFunc::callAsFunction):
  +        * khtml/ecma/kjs_events.cpp:
  +        (KJS::JSLazyEventListener::parseCode):
  +        (KJS::EventConstructor::getValueProperty):
  +        (KJS::DOMEvent::getValueProperty):
  +        (KJS::DOMEventProtoFunc::callAsFunction):
  +        (KJS::getDOMEvent):
  +        (KJS::EventExceptionConstructor::getValueProperty):
  +        (KJS::DOMUIEvent::getValueProperty):
  +        (KJS::DOMUIEventProtoFunc::callAsFunction):
  +        (KJS::DOMMouseEvent::getValueProperty):
  +        (KJS::DOMMouseEventProtoFunc::callAsFunction):
  +        (KJS::DOMKeyboardEvent::getValueProperty):
  +        (KJS::DOMKeyboardEventProtoFunc::callAsFunction):
  +        (KJS::MutationEventConstructor::getValueProperty):
  +        (KJS::DOMMutationEvent::getValueProperty):
  +        (KJS::DOMMutationEventProtoFunc::callAsFunction):
  +        (KJS::DOMWheelEvent::getValueProperty):
  +        (KJS::DOMWheelEventProtoFunc::callAsFunction):
  +        (KJS::stringOrUndefined):
  +        (KJS::Clipboard::getValueProperty):
  +        (KJS::ClipboardProtoFunc::callAsFunction):
  +        * khtml/ecma/kjs_html.cpp:
  +        (KJS::KJS::HTMLDocFunction::callAsFunction):
  +        (KJS::HTMLDocument::getValueProperty):
  +        (KJS::HTMLElement::framesetNameGetter):
  +        (KJS::HTMLElement::frameWindowPropertyGetter):
  +        (KJS::HTMLElement::runtimeObjectPropertyGetter):
  +        (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::HTMLCollection::lengthGetter):
  +        (KJS::KJS::HTMLCollection::callAsFunction):
  +        (KJS::KJS::HTMLCollection::getNamedItems):
  +        (KJS::KJS::HTMLCollectionProtoFunc::callAsFunction):
  +        (KJS::HTMLSelectCollection::selectedIndexGetter):
  +        (KJS::HTMLSelectCollection::getOwnPropertySlot):
  +        (KJS::OptionConstructorImp::OptionConstructorImp):
  +        (KJS::Image::getValueProperty):
  +        (KJS::KJS::Context2DFunction::callAsFunction):
  +        (KJS::Context2D::getValueProperty):
  +        (KJS::Context2D::Context2D):
  +        (KJS::GradientFunction::callAsFunction):
  +        (KJS::Gradient::getValueProperty):
  +        (KJS::ImagePattern::getValueProperty):
  +        (KJS::getSelectHTMLCollection):
  +        * khtml/ecma/kjs_navigator.cpp:
  +        (KJS::Navigator::getValueProperty):
  +        (KJS::Plugins::getValueProperty):
  +        (KJS::Plugins::nameGetter):
  +        (KJS::MimeTypes::getValueProperty):
  +        (KJS::MimeTypes::nameGetter):
  +        (KJS::Plugin::getValueProperty):
  +        (KJS::Plugin::nameGetter):
  +        (KJS::MimeType::getValueProperty):
  +        (KJS::PluginsFunc::callAsFunction):
  +        (KJS::NavigatorFunc::callAsFunction):
  +        * khtml/ecma/kjs_proxy.cpp:
  +        (TestFunctionImp::callAsFunction):
  +        * khtml/ecma/kjs_range.cpp:
  +        (KJS::DOMRange::getValueProperty):
  +        (KJS::DOMRangeProtoFunc::callAsFunction):
  +        (KJS::RangeConstructor::getValueProperty):
  +        * khtml/ecma/kjs_traversal.cpp:
  +        (KJS::DOMNodeIterator::getValueProperty):
  +        (KJS::DOMNodeIteratorProtoFunc::callAsFunction):
  +        (KJS::NodeFilterConstructor::getValueProperty):
  +        (KJS::DOMNodeFilterProtoFunc::callAsFunction):
  +        (KJS::DOMTreeWalker::getValueProperty):
  +        (KJS::DOMTreeWalkerProtoFunc::callAsFunction):
  +        * khtml/ecma/kjs_views.cpp:
  +        (KJS::DOMAbstractViewProtoFunc::callAsFunction):
  +        * khtml/ecma/kjs_window.cpp:
  +        (KJS::Screen::getValueProperty):
  +        (KJS::Window::retrieve):
  +        (KJS::showModalDialog):
  +        (KJS::Window::getValueProperty):
  +        (KJS::Window::getListener):
  +        (KJS::WindowFunc::callAsFunction):
  +        (KJS::FrameArray::getValueProperty):
  +        (KJS::FrameArray::indexGetter):
  +        (KJS::FrameArray::nameGetter):
  +        (KJS::Location::getValueProperty):
  +        (KJS::Location::toPrimitive):
  +        (KJS::LocationFunc::callAsFunction):
  +        (KJS::Selection::getValueProperty):
  +        (KJS::Selection::toPrimitive):
  +        (KJS::SelectionFunc::callAsFunction):
  +        (KJS::BarInfo::getValueProperty):
  +        (KJS::History::getValueProperty):
  +        (KJS::HistoryFunc::callAsFunction):
  +        * khtml/ecma/xmlhttprequest.cpp:
  +        (KJS::XMLHttpRequest::getValueProperty):
  +        (KJS::XMLHttpRequest::getAllResponseHeaders):
  +        (KJS::XMLHttpRequest::getResponseHeader):
  +        (KJS::XMLHttpRequest::getStatus):
  +        (KJS::XMLHttpRequest::getStatusText):
  +        (KJS::XMLHttpRequestProtoFunc::callAsFunction):
  +        * khtml/ecma/xmlserializer.cpp:
  +        (KJS::XMLSerializerProtoFunc::callAsFunction):
  +        * ksvg2/ecma/Ecma.cpp:
  +        (KSVG::getSVGPathSeg):
  +        * ksvg2/ecma/GlobalObject.cpp:
  +        (GlobalObject::get):
  +        * kwq/WebCoreScriptDebugger.mm:
  +        (-[WebCoreScriptCallFrame evaluateWebScript:]):
  +
   2005-12-10  Maciej Stachowiak  <mjs at apple.com>
   
           Reviewed by Darin and Tim Hatcher.
  
  
  
  1.9       +1 -1      WebCore/khtml/ecma/domparser.cpp
  
  Index: domparser.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/domparser.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- domparser.cpp	21 Nov 2005 04:01:53 -0000	1.8
  +++ domparser.cpp	11 Dec 2005 00:38:00 -0000	1.9
  @@ -98,7 +98,7 @@
       }
     }
   		
  -  return Undefined();
  +  return jsUndefined();
   }
   
   } // end namespace
  
  
  
  1.49      +5 -6      WebCore/khtml/ecma/kjs_binding.cpp
  
  Index: kjs_binding.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_binding.cpp,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- kjs_binding.cpp	6 Dec 2005 09:21:15 -0000	1.48
  +++ kjs_binding.cpp	11 Dec 2005 00:38:00 -0000	1.49
  @@ -309,12 +309,11 @@
     return QString((QChar*) data(), size());
   }
   
  -ValueImp *getStringOrNull(DOMString s)
  +ValueImp *jsStringOrNull(const DOMString &s)
   {
  -  if (s.isNull())
  -    return Null();
  -  else
  -    return String(s);
  +    if (s.isNull())
  +        return jsNull();
  +    return jsString(s);
   }
   
   DOMString valueToStringWithNullCheck(ExecState *exec, ValueImp *val)
  @@ -366,7 +365,7 @@
     sprintf(buffer, "%s exception %d", type, code);
   
     ObjectImp *errorObject = throwError(exec, GeneralError, buffer);
  -  errorObject->put(exec, "code", Number(code));
  +  errorObject->put(exec, "code", jsNumber(code));
   }
   
   }
  
  
  
  1.36      +3 -3      WebCore/khtml/ecma/kjs_binding.h
  
  Index: kjs_binding.h
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_binding.h,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- kjs_binding.h	21 Nov 2005 01:19:54 -0000	1.35
  +++ kjs_binding.h	11 Dec 2005 00:38:00 -0000	1.36
  @@ -57,7 +57,7 @@
     public:
       virtual bool implementsCall() const { return true; }
       virtual bool toBoolean(ExecState *) const { return true; }
  -    virtual ValueImp *toPrimitive(ExecState *exec, Type) const { return String(toString(exec)); }
  +    virtual ValueImp *toPrimitive(ExecState *exec, Type) const { return jsString(toString(exec)); }
       virtual UString toString(ExecState *) const { return UString("[function]"); }
     };
   
  @@ -148,9 +148,9 @@
     };
   
     /**
  -   *  Get a String object, or Null() if s is null
  +   *  Get a String object, or jsNull() if s is null
      */
  -  ValueImp *getStringOrNull(DOM::DOMString s);
  +  ValueImp *jsStringOrNull(const DOM::DOMString&);
   
     /**
      *  Get a DOMString object or a null DOMString if the value is null
  
  
  
  1.42      +75 -75    WebCore/khtml/ecma/kjs_css.cpp
  
  Index: kjs_css.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_css.cpp,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- kjs_css.cpp	7 Dec 2005 01:12:37 -0000	1.41
  +++ kjs_css.cpp	11 Dec 2005 00:38:00 -0000	1.42
  @@ -141,7 +141,7 @@
   ValueImp *DOMCSSStyleDeclaration::indexGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
   {
     DOMCSSStyleDeclaration *thisObj = static_cast<DOMCSSStyleDeclaration *>(slot.slotBase());
  -  return getStringOrNull(thisObj->m_impl->item(slot.index()));
  +  return jsStringOrNull(thisObj->m_impl->item(slot.index()));
   }
   
   ValueImp *DOMCSSStyleDeclaration::cssPropertyGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
  @@ -158,11 +158,11 @@
     CSSValueImpl *v = thisObj->m_impl->getPropertyCSSValue(prop);
     if (v) {
       if (pixelOrPos && v->cssValueType() == CSSValue::CSS_PRIMITIVE_VALUE)
  -      return Number(static_cast<CSSPrimitiveValueImpl *>(v)->getFloatValue(CSSPrimitiveValue::CSS_PX));
  +      return jsNumber(static_cast<CSSPrimitiveValueImpl *>(v)->getFloatValue(CSSPrimitiveValue::CSS_PX));
       else
  -      return getStringOrNull(v->cssText());
  +      return jsStringOrNull(v->cssText());
     } else
  -    return String("");
  +    return jsString("");
   }
   
   bool DOMCSSStyleDeclaration::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot& slot)
  @@ -193,14 +193,14 @@
   {
     switch (token) {
     case CssText:
  -    return getStringOrNull(m_impl->cssText());
  +    return jsStringOrNull(m_impl->cssText());
     case Length:
       return jsNumber(m_impl->length());
     case ParentRule:
       return getDOMCSSRule(exec, m_impl->parentRule());
     default:
       assert(0);
  -    return Undefined();
  +    return jsUndefined();
     }
   }
   
  @@ -252,24 +252,24 @@
   
     switch (id) {
       case DOMCSSStyleDeclaration::GetPropertyValue:
  -      return getStringOrNull(styleDecl.getPropertyValue(s));
  +      return jsStringOrNull(styleDecl.getPropertyValue(s));
       case DOMCSSStyleDeclaration::GetPropertyCSSValue:
         return getDOMCSSValue(exec,styleDecl.getPropertyCSSValue(s));
       case DOMCSSStyleDeclaration::RemoveProperty:
  -      return getStringOrNull(styleDecl.removeProperty(s, exception));
  +      return jsStringOrNull(styleDecl.removeProperty(s, exception));
       case DOMCSSStyleDeclaration::GetPropertyPriority:
  -      return getStringOrNull(styleDecl.getPropertyPriority(s));
  +      return jsStringOrNull(styleDecl.getPropertyPriority(s));
       case DOMCSSStyleDeclaration::GetPropertyShorthand:
  -      return getStringOrNull(styleDecl.getPropertyShorthand(s));
  +      return jsStringOrNull(styleDecl.getPropertyShorthand(s));
       case DOMCSSStyleDeclaration::IsPropertyImplicit:
  -      return Boolean(styleDecl.isPropertyImplicit(s));
  +      return jsBoolean(styleDecl.isPropertyImplicit(s));
       case DOMCSSStyleDeclaration::SetProperty:
         styleDecl.setProperty(s, args[1]->toString(exec).domString(), args[2]->toString(exec).domString(), exception);
  -      return Undefined();
  +      return jsUndefined();
       case DOMCSSStyleDeclaration::Item:
  -      return getStringOrNull(styleDecl.item(args[0]->toInt32(exec)));
  +      return jsStringOrNull(styleDecl.item(args[0]->toInt32(exec)));
       default:
  -      return Undefined();
  +      return jsUndefined();
     }
   }
   
  @@ -308,17 +308,17 @@
     StyleSheetImpl &styleSheet = *m_impl;
     switch (token) {
     case Type:
  -    return getStringOrNull(styleSheet.type());
  +    return jsStringOrNull(styleSheet.type());
     case Disabled:
  -    return Boolean(styleSheet.disabled());
  +    return jsBoolean(styleSheet.disabled());
     case OwnerNode:
       return getDOMNode(exec,styleSheet.ownerNode());
     case ParentStyleSheet:
       return getDOMStyleSheet(exec,styleSheet.parentStyleSheet());
     case Href:
  -    return getStringOrNull(styleSheet.href());
  +    return jsStringOrNull(styleSheet.href());
     case Title:
  -    return getStringOrNull(styleSheet.title());
  +    return jsStringOrNull(styleSheet.title());
     case Media:
       return getDOMMediaList(exec, styleSheet.media());
     }
  @@ -338,7 +338,7 @@
   {
     DOMObject *ret;
     if (!ss)
  -    return Null();
  +    return jsNull();
     ScriptInterpreter *interp = static_cast<ScriptInterpreter *>(exec->dynamicInterpreter());
     if ((ret = interp->getDOMObject(ss)))
       return ret;
  @@ -373,10 +373,10 @@
   {
       switch(token) {
       case Length:
  -      return Number(m_impl->length());
  +      return jsNumber(m_impl->length());
       default:
         assert(0);
  -      return Undefined();
  +      return jsUndefined();
       }
   }
   
  @@ -437,7 +437,7 @@
     // Can't use the cacheDOMObject macro because of the doc argument
     DOMObject *ret;
     if (!ssl)
  -    return Null();
  +    return jsNull();
     ScriptInterpreter* interp = static_cast<ScriptInterpreter *>(exec->dynamicInterpreter());
     if ((ret = interp->getDOMObject(ssl)))
       return ret;
  @@ -455,7 +455,7 @@
     StyleSheetListImpl &styleSheetList = *static_cast<DOMStyleSheetList *>(thisObj)->impl();
     if (id == DOMStyleSheetList::Item)
       return getDOMStyleSheet(exec, styleSheetList.item(args[0]->toInt32(exec)));
  -  return Undefined();
  +  return jsUndefined();
   }
   
   // -------------------------------------------------------------------------
  @@ -492,19 +492,19 @@
   {
     switch (token) {
     case MediaText:
  -    return getStringOrNull(m_impl->mediaText());
  +    return jsStringOrNull(m_impl->mediaText());
     case Length:
  -    return Number(m_impl->length());
  +    return jsNumber(m_impl->length());
     default:
       assert(0);
  -    return Undefined();
  +    return jsUndefined();
     }
   }
   
   ValueImp *DOMMediaList::indexGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
   {
     DOMMediaList *thisObj = static_cast<DOMMediaList *>(slot.slotBase());
  -  return getStringOrNull(thisObj->m_impl->item(slot.index()));
  +  return jsStringOrNull(thisObj->m_impl->item(slot.index()));
   }
   
   bool DOMMediaList::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot& slot)
  @@ -546,15 +546,15 @@
     MediaListImpl &mediaList = *static_cast<DOMMediaList *>(thisObj)->impl();
     switch (id) {
       case DOMMediaList::Item:
  -      return getStringOrNull(mediaList.item(args[0]->toInt32(exec)));
  +      return jsStringOrNull(mediaList.item(args[0]->toInt32(exec)));
       case DOMMediaList::DeleteMedium:
         mediaList.deleteMedium(args[0]->toString(exec).domString());
  -      return Undefined();
  +      return jsUndefined();
       case DOMMediaList::AppendMedium:
         mediaList.appendMedium(args[0]->toString(exec).domString());
  -      return Undefined();
  +      return jsUndefined();
       default:
  -      return Undefined();
  +      return jsUndefined();
     }
   }
   
  @@ -600,7 +600,7 @@
       return getDOMCSSRuleList(exec, static_cast<CSSStyleSheetImpl *>(impl())->cssRules());
     default:
       assert(0);
  -    return Undefined();
  +    return jsUndefined();
     }
   }
   
  @@ -617,18 +617,18 @@
     CSSStyleSheetImpl &styleSheet = *static_cast<CSSStyleSheetImpl *>(static_cast<DOMCSSStyleSheet *>(thisObj)->impl());
     switch (id) {
       case DOMCSSStyleSheet::InsertRule:
  -      return Number(styleSheet.insertRule(args[0]->toString(exec).domString(), args[1]->toInt32(exec), exception));
  +      return jsNumber(styleSheet.insertRule(args[0]->toString(exec).domString(), args[1]->toInt32(exec), exception));
       case DOMCSSStyleSheet::DeleteRule:
         styleSheet.deleteRule(args[0]->toInt32(exec), exception);
  -      return Undefined();
  +      return jsUndefined();
       case DOMCSSStyleSheet::AddRule: {
         int index = args.size() >= 3 ? args[2]->toInt32(exec) : -1;
         styleSheet.addRule(args[0]->toString(exec).domString(), args[1]->toString(exec).domString(), index, exception);
         // As per Microsoft documentation, always return -1.
  -      return Number(-1);
  +      return jsNumber(-1);
       }
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   // -------------------------------------------------------------------------
  @@ -651,10 +651,10 @@
   {
     switch (token) {
     case Length:
  -    return Number(m_impl->length());
  +    return jsNumber(m_impl->length());
     default:
       assert(0);
  -    return Undefined();
  +    return jsUndefined();
     }
   }
   
  @@ -697,7 +697,7 @@
       case DOMCSSRuleList::Item:
         return getDOMCSSRule(exec,cssRuleList.item(args[0]->toInt32(exec)));
       default:
  -      return Undefined();
  +      return jsUndefined();
     }
   }
   
  @@ -795,9 +795,9 @@
     CSSRuleImpl &cssRule = *m_impl;
     switch (token) {
     case Type:
  -    return Number(cssRule.type());
  +    return jsNumber(cssRule.type());
     case CssText:
  -    return getStringOrNull(cssRule.cssText());
  +    return jsStringOrNull(cssRule.cssText());
     case ParentStyleSheet:
       return getDOMStyleSheet(exec,cssRule.parentStyleSheet());
     case ParentRule:
  @@ -805,7 +805,7 @@
   
     // for DOM::CSSRule::STYLE_RULE:
     case Style_SelectorText:
  -    return getStringOrNull(static_cast<CSSStyleRuleImpl *>(m_impl.get())->selectorText());
  +    return jsStringOrNull(static_cast<CSSStyleRuleImpl *>(m_impl.get())->selectorText());
     case Style_Style:
       return getDOMCSSStyleDeclaration(exec, static_cast<CSSStyleRuleImpl *>(m_impl.get())->style());
   
  @@ -821,13 +821,13 @@
   
     // for DOM::CSSRule::PAGE_RULE:
     case Page_SelectorText:
  -    return getStringOrNull(static_cast<CSSPageRuleImpl *>(m_impl.get())->selectorText());
  +    return jsStringOrNull(static_cast<CSSPageRuleImpl *>(m_impl.get())->selectorText());
     case Page_Style:
       return getDOMCSSStyleDeclaration(exec, static_cast<CSSPageRuleImpl *>(m_impl.get())->style());
   
     // for DOM::CSSRule::IMPORT_RULE:
     case Import_Href:
  -    return getStringOrNull(static_cast<CSSImportRuleImpl *>(m_impl.get())->href());
  +    return jsStringOrNull(static_cast<CSSImportRuleImpl *>(m_impl.get())->href());
     case Import_Media:
       return getDOMMediaList(exec, static_cast<CSSImportRuleImpl *>(m_impl.get())->media());
     case Import_StyleSheet:
  @@ -835,12 +835,12 @@
   
     // for DOM::CSSRule::CHARSET_RULE:
     case Charset_Encoding:
  -    return getStringOrNull(static_cast<CSSCharsetRuleImpl *>(m_impl.get())->encoding());
  +    return jsStringOrNull(static_cast<CSSCharsetRuleImpl *>(m_impl.get())->encoding());
   
     default:
       assert(0);
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   void DOMCSSRule::put(ExecState *exec, const Identifier &propertyName, ValueImp *value, int attr)
  @@ -894,12 +894,12 @@
     if (cssRule.type() == DOM::CSSRule::MEDIA_RULE) {
       CSSMediaRuleImpl &rule = static_cast<CSSMediaRuleImpl &>(cssRule);
       if (id == DOMCSSRule::Media_InsertRule)
  -      return Number(rule.insertRule(args[0]->toString(exec).domString(), args[1]->toInt32(exec)));
  +      return jsNumber(rule.insertRule(args[0]->toString(exec).domString(), args[1]->toInt32(exec)));
       else if (id == DOMCSSRule::Media_DeleteRule)
         rule.deleteRule(args[0]->toInt32(exec));
     }
   
  -  return Undefined();
  +  return jsUndefined();
   }
   
   ValueImp *getDOMCSSRule(ExecState *exec, CSSRuleImpl *r)
  @@ -931,19 +931,19 @@
   {
     switch (token) {
     case UNKNOWN_RULE:
  -    return Number(DOM::CSSRule::UNKNOWN_RULE);
  +    return jsNumber(DOM::CSSRule::UNKNOWN_RULE);
     case STYLE_RULE:
  -    return Number(DOM::CSSRule::STYLE_RULE);
  +    return jsNumber(DOM::CSSRule::STYLE_RULE);
     case CHARSET_RULE:
  -    return Number(DOM::CSSRule::CHARSET_RULE);
  +    return jsNumber(DOM::CSSRule::CHARSET_RULE);
     case IMPORT_RULE:
  -    return Number(DOM::CSSRule::IMPORT_RULE);
  +    return jsNumber(DOM::CSSRule::IMPORT_RULE);
     case MEDIA_RULE:
  -    return Number(DOM::CSSRule::MEDIA_RULE);
  +    return jsNumber(DOM::CSSRule::MEDIA_RULE);
     case FONT_FACE_RULE:
  -    return Number(DOM::CSSRule::FONT_FACE_RULE);
  +    return jsNumber(DOM::CSSRule::FONT_FACE_RULE);
     case PAGE_RULE:
  -    return Number(DOM::CSSRule::PAGE_RULE);
  +    return jsNumber(DOM::CSSRule::PAGE_RULE);
     }
     return NULL;
   }
  @@ -973,12 +973,12 @@
     CSSValueImpl &cssValue = *m_impl;
     switch (token) {
     case CssText:
  -    return getStringOrNull(cssValue.cssText());
  +    return jsStringOrNull(cssValue.cssText());
     case CssValueType:
  -    return Number(cssValue.cssValueType());
  +    return jsNumber(cssValue.cssValueType());
     default:
       assert(0);
  -    return Undefined();
  +    return jsUndefined();
     }
   }
   
  @@ -1000,7 +1000,7 @@
   {
     DOMObject *ret;
     if (!v)
  -    return Null();
  +    return jsNull();
     ScriptInterpreter* interp = static_cast<ScriptInterpreter *>(exec->dynamicInterpreter());
     if ((ret = interp->getDOMObject(v)))
       return ret;
  @@ -1036,13 +1036,13 @@
   {
     switch (token) {
     case CSS_INHERIT:
  -    return Number(DOM::CSSValue::CSS_INHERIT);
  +    return jsNumber(DOM::CSSValue::CSS_INHERIT);
     case CSS_PRIMITIVE_VALUE:
  -    return Number(DOM::CSSValue::CSS_PRIMITIVE_VALUE);
  +    return jsNumber(DOM::CSSValue::CSS_PRIMITIVE_VALUE);
     case CSS_VALUE_LIST:
  -    return Number(DOM::CSSValue::CSS_VALUE_LIST);
  +    return jsNumber(DOM::CSSValue::CSS_VALUE_LIST);
     case CSS_CUSTOM:
  -    return Number(DOM::CSSValue::CSS_CUSTOM);
  +    return jsNumber(DOM::CSSValue::CSS_CUSTOM);
     }
     return NULL;
   }
  @@ -1082,7 +1082,7 @@
   ValueImp *DOMCSSPrimitiveValue::getValueProperty(ExecState *exec, int token)
   {
     assert(token == PrimitiveType);
  -  return Number(static_cast<CSSPrimitiveValueImpl *>(impl())->primitiveType());
  +  return jsNumber(static_cast<CSSPrimitiveValueImpl *>(impl())->primitiveType());
   }
   
   bool DOMCSSPrimitiveValue::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot& slot)
  @@ -1099,14 +1099,14 @@
     switch (id) {
       case DOMCSSPrimitiveValue::SetFloatValue:
         val.setFloatValue(args[0]->toInt32(exec), args[1]->toNumber(exec), exception);
  -      return Undefined();
  +      return jsUndefined();
       case DOMCSSPrimitiveValue::GetFloatValue:
  -      return Number(val.getFloatValue(args[0]->toInt32(exec)));
  +      return jsNumber(val.getFloatValue(args[0]->toInt32(exec)));
       case DOMCSSPrimitiveValue::SetStringValue:
         val.setStringValue(args[0]->toInt32(exec), args[1]->toString(exec).domString(), exception);
  -      return Undefined();
  +      return jsUndefined();
       case DOMCSSPrimitiveValue::GetStringValue:
  -      return getStringOrNull(val.getStringValue());
  +      return jsStringOrNull(val.getStringValue());
       case DOMCSSPrimitiveValue::GetCounterValue:
         return getDOMCounter(exec,val.getCounterValue());
       case DOMCSSPrimitiveValue::GetRectValue:
  @@ -1114,7 +1114,7 @@
       case DOMCSSPrimitiveValue::GetRGBColorValue:
         return getDOMRGBColor(exec,val.getRGBColorValue());
       default:
  -      return Undefined();
  +      return jsUndefined();
     }
   }
   
  @@ -1161,7 +1161,7 @@
   ValueImp *CSSPrimitiveValueConstructor::getValueProperty(ExecState *, int token) const
   {
     // We use the token as the value to return directly
  -  return Number(token);
  +  return jsNumber(token);
   }
   
   ValueImp *getCSSPrimitiveValueConstructor(ExecState *exec)
  @@ -1189,7 +1189,7 @@
   ValueImp *DOMCSSValueList::getValueProperty(ExecState *exec, int token) const
   {
     assert(token == Length);
  -  return Number(static_cast<CSSValueListImpl *>(impl())->length());
  +  return jsNumber(static_cast<CSSValueListImpl *>(impl())->length());
   }
   
   ValueImp *DOMCSSValueList::indexGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
  @@ -1228,7 +1228,7 @@
       case DOMCSSValueList::Item:
         return getDOMCSSValue(exec,valueList.item(args[0]->toInt32(exec)));
       default:
  -      return Undefined();
  +      return jsUndefined();
     }
   }
   
  @@ -1345,11 +1345,11 @@
     CounterImpl &counter = *m_counter;
     switch (token) {
     case identifier:
  -    return getStringOrNull(counter.identifier());
  +    return jsStringOrNull(counter.identifier());
     case listStyle:
  -    return getStringOrNull(counter.listStyle());
  +    return jsStringOrNull(counter.listStyle());
     case separator:
  -    return getStringOrNull(counter.separator());
  +    return jsStringOrNull(counter.separator());
     default:
       return NULL;
     }
  
  
  
  1.117     +98 -98    WebCore/khtml/ecma/kjs_dom.cpp
  
  Index: kjs_dom.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_dom.cpp,v
  retrieving revision 1.116
  retrieving revision 1.117
  diff -u -r1.116 -r1.117
  --- kjs_dom.cpp	2 Dec 2005 03:48:05 -0000	1.116
  +++ kjs_dom.cpp	11 Dec 2005 00:38:01 -0000	1.117
  @@ -280,11 +280,11 @@
     NodeImpl &node = *m_impl;
     switch (token) {
     case NodeName:
  -    return getStringOrNull(node.nodeName());
  +    return jsStringOrNull(node.nodeName());
     case NodeValue:
  -    return getStringOrNull(node.nodeValue());
  +    return jsStringOrNull(node.nodeValue());
     case NodeType:
  -    return Number(node.nodeType());
  +    return jsNumber(node.nodeType());
     case ParentNode:
     case ParentElement: // IE only apparently
       return getDOMNode(exec,node.parentNode());
  @@ -301,15 +301,15 @@
     case Attributes:
       return getDOMNamedNodeMap(exec,node.attributes());
     case NamespaceURI:
  -    return getStringOrNull(node.namespaceURI());
  +    return jsStringOrNull(node.namespaceURI());
     case Prefix:
  -    return getStringOrNull(node.prefix());
  +    return jsStringOrNull(node.prefix());
     case LocalName:
  -    return getStringOrNull(node.localName());
  +    return jsStringOrNull(node.localName());
     case OwnerDocument:
       return getDOMNode(exec,node.ownerDocument());
     case TextContent:
  -    return getStringOrNull(node.textContent());
  +    return jsStringOrNull(node.textContent());
     case OnAbort:
       return getListener(abortEvent);
     case OnBlur:
  @@ -427,9 +427,9 @@
       case ScrollHeight:
           return rend ? jsNumber(rend->scrollHeight()) : static_cast<ValueImp *>(jsUndefined());
       case ScrollLeft:
  -      return Number(rend && rend->layer() ? rend->layer()->scrollXOffset() : 0);
  +      return jsNumber(rend && rend->layer() ? rend->layer()->scrollXOffset() : 0);
       case ScrollTop:
  -      return Number(rend && rend->layer() ? rend->layer()->scrollYOffset() : 0);
  +      return jsNumber(rend && rend->layer() ? rend->layer()->scrollYOffset() : 0);
       default:
         kdWarning() << "Unhandled token in DOMNode::getValueProperty : " << token << endl;
         break;
  @@ -608,9 +608,9 @@
   ValueImp *DOMNode::toPrimitive(ExecState *exec, Type /*preferred*/) const
   {
     if (!m_impl)
  -    return Null();
  +    return jsNull();
   
  -  return String(toString(exec));
  +  return jsString(toString(exec));
   }
   
   UString DOMNode::toString(ExecState *) const
  @@ -632,7 +632,7 @@
       if ( jsListener && jsListener->listenerObjImp() )
   	return jsListener->listenerObj();
       else
  -	return Null();
  +	return jsNull();
   }
   
   void DOMNode::pushEventHandlerScope(ExecState *, ScopeChain &) const
  @@ -647,41 +647,41 @@
     NodeImpl &node = *static_cast<DOMNode *>(thisObj)->impl();
     switch (id) {
       case DOMNode::HasAttributes:
  -      return Boolean(node.hasAttributes());
  +      return jsBoolean(node.hasAttributes());
       case DOMNode::HasChildNodes:
  -      return Boolean(node.hasChildNodes());
  +      return jsBoolean(node.hasChildNodes());
       case DOMNode::CloneNode:
         return getDOMNode(exec,node.cloneNode(args[0]->toBoolean(exec)));
       case DOMNode::Normalize:
         node.normalize();
  -      return Undefined();
  +      return jsUndefined();
       case DOMNode::IsSupported:
  -        return Boolean(node.isSupported(args[0]->toString(exec).domString(),
  +        return jsBoolean(node.isSupported(args[0]->toString(exec).domString(),
               args[1]->isUndefinedOrNull() ? DOMString() : args[1]->toString(exec).domString()));
       case DOMNode::IsSameNode:
  -        return Boolean(node.isSameNode(toNode(args[0])));
  +        return jsBoolean(node.isSameNode(toNode(args[0])));
       case DOMNode::IsEqualNode:
  -        return Boolean(node.isEqualNode(toNode(args[0])));
  +        return jsBoolean(node.isEqualNode(toNode(args[0])));
       case DOMNode::IsDefaultNamespace:
  -        return Boolean(node.isDefaultNamespace(valueToStringWithNullCheck(exec, args[0])));
  +        return jsBoolean(node.isDefaultNamespace(valueToStringWithNullCheck(exec, args[0])));
       case DOMNode::LookupNamespaceURI:
  -        return getStringOrNull(node.lookupNamespaceURI(valueToStringWithNullCheck(exec, args[0])));
  +        return jsStringOrNull(node.lookupNamespaceURI(valueToStringWithNullCheck(exec, args[0])));
       case DOMNode::LookupPrefix:
  -        return getStringOrNull(node.lookupPrefix(valueToStringWithNullCheck(exec, args[0])));
  +        return jsStringOrNull(node.lookupPrefix(valueToStringWithNullCheck(exec, args[0])));
       case DOMNode::AddEventListener: {
           JSEventListener *listener = Window::retrieveActive(exec)->getJSEventListener(args[1]);
           if (listener)
               node.addEventListener(AtomicString(args[0]->toString(exec).domString()), listener,args[2]->toBoolean(exec));
  -        return Undefined();
  +        return jsUndefined();
       }
       case DOMNode::RemoveEventListener: {
           JSEventListener *listener = Window::retrieveActive(exec)->getJSEventListener(args[1]);
           if (listener)
               node.removeEventListener(AtomicString(args[0]->toString(exec).domString()), listener,args[2]->toBoolean(exec));
  -        return Undefined();
  +        return jsUndefined();
       }
       case DOMNode::DispatchEvent:
  -      return Boolean(node.dispatchEvent(toEvent(args[0]), exception));
  +      return jsBoolean(node.dispatchEvent(toEvent(args[0]), exception));
       case DOMNode::AppendChild:
         return getDOMNode(exec,node.appendChild(toNode(args[0]), exception));
       case DOMNode::RemoveChild:
  @@ -693,15 +693,15 @@
       case DOMNode::Contains:
         if (node.isElementNode())
           if (NodeImpl *node0 = toNode(args[0]))
  -          return Boolean(node.isAncestor(node0));
  +          return jsBoolean(node.isAncestor(node0));
         // FIXME: Is there a good reason to return undefined rather than false
         // when the parameter is not a node? When the object is not an element?
  -      return Undefined();
  +      return jsUndefined();
       case DOMNode::Item:
         return thisObj->get(exec, args[0]->toInt32(exec));
     }
   
  -  return Undefined();
  +  return jsUndefined();
   }
   
   NodeImpl *toNode(ValueImp *val)
  @@ -732,15 +732,15 @@
   ValueImp *DOMNodeList::toPrimitive(ExecState *exec, Type /*preferred*/) const
   {
     if (!m_impl)
  -    return Null();
  +    return jsNull();
   
  -  return String(toString(exec));
  +  return jsString(toString(exec));
   }
   
   ValueImp *DOMNodeList::getValueProperty(ExecState *exec, int token) const
   {
     assert(token == Length);
  -  return Number(m_impl->length());
  +  return jsNumber(m_impl->length());
   }
   
   ValueImp *DOMNodeList::indexGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
  @@ -793,7 +793,7 @@
     if (ok)
       return getDOMNode(exec, m_impl->item(u));
   
  -  return Undefined();
  +  return jsUndefined();
   }
   
   // Not a prototype class currently, but should probably be converted to one
  @@ -837,11 +837,11 @@
     AttrImpl *attr = static_cast<AttrImpl *>(impl());
     switch (token) {
     case Name:
  -    return getStringOrNull(attr->name());
  +    return jsStringOrNull(attr->name());
     case Specified:
  -    return Boolean(attr->specified());
  +    return jsBoolean(attr->specified());
     case ValueProperty:
  -    return getStringOrNull(attr->value());
  +    return jsStringOrNull(attr->value());
     case OwnerElement: // DOM2
       return getDOMNode(exec, attr->ownerElement());
     }
  @@ -970,28 +970,28 @@
     case ActualEncoding:
     case InputEncoding:
       if (Decoder* decoder = doc.decoder())
  -      return String(decoder->encoding());
  -    return Null();
  +      return jsString(decoder->encoding());
  +    return jsNull();
     case DefaultCharset:
       if (KHTMLPart* part = doc.part())
  -        return String(part->settings()->encoding());
  -    return Undefined();
  +        return jsString(part->settings()->encoding());
  +    return jsUndefined();
     case StyleSheets:
       //kdDebug() << "DOMDocument::StyleSheets, returning " << doc.styleSheets().length() << " stylesheets" << endl;
       return getDOMStyleSheetList(exec, doc.styleSheets(), &doc);
     case PreferredStylesheetSet:
  -    return getStringOrNull(doc.preferredStylesheetSet());
  +    return jsStringOrNull(doc.preferredStylesheetSet());
     case SelectedStylesheetSet:
  -    return getStringOrNull(doc.selectedStylesheetSet());
  +    return jsStringOrNull(doc.selectedStylesheetSet());
     case ReadyState:
       if (KHTMLPart* part = doc.part()) {
  -      if (part->d->m_bComplete) return String("complete");
  -      if (doc.parsing()) return String("loading");
  -      return String("loaded");
  +      if (part->d->m_bComplete) return jsString("complete");
  +      if (doc.parsing()) return jsString("loading");
  +      return jsString("loaded");
         // What does the interactive value mean ?
         // Missing support for "uninitialized"
       }
  -    return Undefined();
  +    return jsUndefined();
     case DOMDocument::DefaultView: // DOM2
       return getDOMAbstractView(exec,doc.defaultView());
     default:
  @@ -1092,21 +1092,21 @@
       if (ElementImpl *element0 = toElement(args[0]))
           return getDOMCSSStyleDeclaration(exec,doc.getOverrideStyle(element0, args[1]->toString(exec).domString()));
       // FIXME: Is undefined right here, or should we raise an exception?
  -    return Undefined();
  +    return jsUndefined();
     case DOMDocument::ExecCommand: {
  -    return Boolean(doc.execCommand(args[0]->toString(exec).domString(), args[1]->toBoolean(exec), args[2]->toString(exec).domString()));
  +    return jsBoolean(doc.execCommand(args[0]->toString(exec).domString(), args[1]->toBoolean(exec), args[2]->toString(exec).domString()));
     }
     case DOMDocument::QueryCommandEnabled: {
  -    return Boolean(doc.queryCommandEnabled(args[0]->toString(exec).domString()));
  +    return jsBoolean(doc.queryCommandEnabled(args[0]->toString(exec).domString()));
     }
     case DOMDocument::QueryCommandIndeterm: {
  -    return Boolean(doc.queryCommandIndeterm(args[0]->toString(exec).domString()));
  +    return jsBoolean(doc.queryCommandIndeterm(args[0]->toString(exec).domString()));
     }
     case DOMDocument::QueryCommandState: {
  -    return Boolean(doc.queryCommandState(args[0]->toString(exec).domString()));
  +    return jsBoolean(doc.queryCommandState(args[0]->toString(exec).domString()));
     }
     case DOMDocument::QueryCommandSupported: {
  -    return Boolean(doc.queryCommandSupported(args[0]->toString(exec).domString()));
  +    return jsBoolean(doc.queryCommandSupported(args[0]->toString(exec).domString()));
     }
     case DOMDocument::QueryCommandValue: {
       DOM::DOMString commandValue(doc.queryCommandValue(args[0]->toString(exec).domString()));
  @@ -1114,15 +1114,15 @@
       // Microsoft documentation for this method says:
       // "If not supported [for a command identifier], this method returns a Boolean set to false."
       if (commandValue.isNull())
  -        return Boolean(false);
  +        return jsBoolean(false);
       else 
  -        return String(commandValue);
  +        return jsString(commandValue);
     }
     default:
       break;
     }
   
  -  return Undefined();
  +  return jsUndefined();
   }
   
   // -------------------------------------------------------------------------
  @@ -1181,12 +1181,12 @@
     ElementImpl *element = static_cast<ElementImpl *>(impl());
     switch (token) {
     case TagName:
  -    return getStringOrNull(element->nodeName());
  +    return jsStringOrNull(element->nodeName());
     case Style:
       return getDOMCSSStyleDeclaration(exec, element->style());
     default:
       assert(0);
  -    return Undefined();
  +    return jsUndefined();
     }
   }
   
  @@ -1196,7 +1196,7 @@
   
     ElementImpl *element = static_cast<ElementImpl *>(thisObj->impl());
     DOM::DOMString attr = element->getAttribute(propertyName.domString());
  -  return getStringOrNull(attr);
  +  return jsStringOrNull(attr);
   }
   
   bool DOMElement::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot& slot)
  @@ -1240,15 +1240,15 @@
   
     switch(id) {
       case DOMElement::GetAttribute:
  -      // getStringOrNull should be used here, since if the attribute isn't present at all, you should
  +      // jsStringOrNull should be used here, since if the attribute isn't present at all, you should
         // return null and not "".
  -      return getStringOrNull(element.getAttribute(args[0]->toString(exec).domString()));
  +      return jsStringOrNull(element.getAttribute(args[0]->toString(exec).domString()));
       case DOMElement::SetAttribute:
         element.setAttribute(args[0]->toString(exec).domString(), args[1]->toString(exec).domString(), exception);
  -      return Undefined();
  +      return jsUndefined();
       case DOMElement::RemoveAttribute:
         element.removeAttribute(args[0]->toString(exec).domString(), exception);
  -      return Undefined();
  +      return jsUndefined();
       case DOMElement::GetAttributeNode:
         return getDOMNode(exec,element.getAttributeNode(args[0]->toString(exec).domString()));
       case DOMElement::SetAttributeNode:
  @@ -1258,15 +1258,15 @@
       case DOMElement::GetElementsByTagName:
         return getDOMNodeList(exec, element.getElementsByTagName(args[0]->toString(exec).domString()).get());
       case DOMElement::HasAttribute: // DOM2
  -      return Boolean(element.hasAttribute(args[0]->toString(exec).domString()));
  +      return jsBoolean(element.hasAttribute(args[0]->toString(exec).domString()));
       case DOMElement::GetAttributeNS: // DOM2
  -      return String(element.getAttributeNS(args[0]->toString(exec).domString(),args[1]->toString(exec).domString()).domString());
  +      return jsString(element.getAttributeNS(args[0]->toString(exec).domString(),args[1]->toString(exec).domString()).domString());
       case DOMElement::SetAttributeNS: // DOM2
         element.setAttributeNS(valueToStringWithNullCheck(exec, args[0]), args[1]->toString(exec).domString(), args[2]->toString(exec).domString(), exception);
  -      return Undefined();
  +      return jsUndefined();
       case DOMElement::RemoveAttributeNS: // DOM2
         element.removeAttributeNS(args[0]->toString(exec).domString(), args[1]->toString(exec).domString(), exception);
  -      return Undefined();
  +      return jsUndefined();
       case DOMElement::GetAttributeNodeNS: // DOM2
         return getDOMNode(exec,element.getAttributeNodeNS(args[0]->toString(exec).domString(),args[1]->toString(exec).domString()));
       case DOMElement::SetAttributeNodeNS: // DOM2
  @@ -1274,10 +1274,10 @@
       case DOMElement::GetElementsByTagNameNS: // DOM2
         return getDOMNodeList(exec, element.getElementsByTagNameNS(args[0]->toString(exec).domString(), args[1]->toString(exec).domString()).get());
       case DOMElement::HasAttributeNS: // DOM2
  -      return Boolean(element.hasAttributeNS(args[0]->toString(exec).domString(),args[1]->toString(exec).domString()));
  +      return jsBoolean(element.hasAttributeNS(args[0]->toString(exec).domString(),args[1]->toString(exec).domString()));
       case DOMElement::ScrollIntoView: 
           element.scrollIntoView(args[0]->isUndefinedOrNull() || args[0]->toBoolean(exec));
  -        return Undefined();
  +        return jsUndefined();
       case DOMElement::ScrollByLines:
       case DOMElement::ScrollByPages:
         if (DocumentImpl* doc = element.getDocument()) {
  @@ -1294,15 +1294,15 @@
               rend->layer()->scroll(direction, granularity, multiplier);
             }
         }
  -      return Undefined();
  +      return jsUndefined();
       case DOMElement::ElementFocus:
           element.focus();
  -        return Undefined();
  +        return jsUndefined();
       case DOMElement::ElementBlur:
           element.blur();
  -        return Undefined();
  +        return jsUndefined();
       default:
  -      return Undefined();
  +      return jsUndefined();
       }
   }
   
  @@ -1351,7 +1351,7 @@
   
     switch(id) {
     case DOMDOMImplementation::HasFeature:
  -    return Boolean(implementation.hasFeature(args[0]->toString(exec).domString(),
  +    return jsBoolean(implementation.hasFeature(args[0]->toString(exec).domString(),
           args[1]->isUndefinedOrNull() ? DOMString() : args[1]->toString(exec).domString()));
     case DOMDOMImplementation::CreateDocumentType: // DOM2
       return getDOMNode(exec, implementation.createDocumentType(args[0]->toString(exec).domString(),
  @@ -1366,7 +1366,7 @@
     default:
       break;
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   // -------------------------------------------------------------------------
  @@ -1397,17 +1397,17 @@
     DocumentTypeImpl &type = *static_cast<DocumentTypeImpl *>(impl());
     switch (token) {
     case Name:
  -    return getStringOrNull(type.name());
  +    return jsStringOrNull(type.name());
     case Entities:
       return getDOMNamedNodeMap(exec,type.entities());
     case Notations:
       return getDOMNamedNodeMap(exec,type.notations());
     case PublicId: // DOM2
  -    return getStringOrNull(type.publicId());
  +    return jsStringOrNull(type.publicId());
     case SystemId: // DOM2
  -    return getStringOrNull(type.systemId());
  +    return jsStringOrNull(type.systemId());
     case InternalSubset: // DOM2
  -    return getStringOrNull(type.internalSubset());
  +    return jsStringOrNull(type.internalSubset());
     default:
       kdWarning() << "DOMDocumentType::getValueProperty unhandled token " << token << endl;
       return NULL;
  @@ -1455,7 +1455,7 @@
   ValueImp *DOMNamedNodeMap::lengthGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
   {
     DOMNamedNodeMap *thisObj = static_cast<DOMNamedNodeMap *>(slot.slotBase());
  -  return Number(thisObj->m_impl->length());
  +  return jsNumber(thisObj->m_impl->length());
   }
   
   ValueImp *DOMNamedNodeMap::indexGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
  @@ -1524,7 +1524,7 @@
         break;
     }
   
  -  return Undefined();
  +  return jsUndefined();
   }
   
   // -------------------------------------------------------------------------
  @@ -1554,9 +1554,9 @@
     ProcessingInstructionImpl *pi = static_cast<ProcessingInstructionImpl *>(impl());
     switch (token) {
     case Target:
  -    return getStringOrNull(pi->target());
  +    return jsStringOrNull(pi->target());
     case Data:
  -    return getStringOrNull(pi->data());
  +    return jsStringOrNull(pi->data());
     case Sheet:
       return getDOMStyleSheet(exec,pi->sheet());
     default:
  @@ -1601,9 +1601,9 @@
   {
     switch (token) {
     case PublicId:
  -    return getStringOrNull(static_cast<NotationImpl *>(impl())->publicId());
  +    return jsStringOrNull(static_cast<NotationImpl *>(impl())->publicId());
     case SystemId:
  -    return getStringOrNull(static_cast<NotationImpl *>(impl())->systemId());
  +    return jsStringOrNull(static_cast<NotationImpl *>(impl())->systemId());
     default:
       kdWarning() << "DOMNotation::getValueProperty unhandled token " << token << endl;
       return NULL;
  @@ -1636,11 +1636,11 @@
   {
     switch (token) {
     case PublicId:
  -    return getStringOrNull(static_cast<EntityImpl *>(impl())->publicId());
  +    return jsStringOrNull(static_cast<EntityImpl *>(impl())->publicId());
     case SystemId:
  -    return getStringOrNull(static_cast<EntityImpl *>(impl())->systemId());
  +    return jsStringOrNull(static_cast<EntityImpl *>(impl())->systemId());
     case NotationName:
  -    return getStringOrNull(static_cast<EntityImpl *>(impl())->notationName());
  +    return jsStringOrNull(static_cast<EntityImpl *>(impl())->notationName());
     default:
       kdWarning() << "DOMEntity::getValueProperty unhandled token " << token << endl;
       return NULL;
  @@ -1689,7 +1689,7 @@
   {
     DOMNode *ret = 0;
     if (!n)
  -    return Null();
  +    return jsNull();
     ScriptInterpreter* interp = static_cast<ScriptInterpreter *>(exec->dynamicInterpreter());
     DocumentImpl *doc = n->getDocument();
   
  @@ -1807,7 +1807,7 @@
   ValueImp *NodeConstructor::getValueProperty(ExecState *, int token) const
   {
     // We use the token as the value to return directly
  -  return Number((unsigned int)token);
  +  return jsNumber(token);
   }
   
   ObjectImp *getNodeConstructor(ExecState *exec)
  @@ -1847,7 +1847,7 @@
   ValueImp *DOMExceptionConstructor::getValueProperty(ExecState *, int token) const
   {
     // We use the token as the value to return directly
  -  return Number((unsigned int)token);
  +  return jsNumber(token);
   }
   
   ObjectImp *getDOMExceptionConstructor(ExecState *exec)
  @@ -1868,7 +1868,7 @@
   ValueImp *DOMNamedNodesCollection::lengthGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
   {
     DOMNamedNodesCollection *thisObj = static_cast<DOMNamedNodesCollection *>(slot.slotBase());
  -  return Number(thisObj->m_nodes.count());
  +  return jsNumber(thisObj->m_nodes.count());
   }
   
   ValueImp *DOMNamedNodesCollection::indexGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
  @@ -1951,9 +1951,9 @@
     CharacterDataImpl &data = *static_cast<CharacterDataImpl *>(impl());
     switch (token) {
     case Data:
  -    return String(data.data());
  +    return jsString(data.data());
     case Length:
  -    return Number(data.length());
  +    return jsNumber(data.length());
     default:
       kdWarning() << "Unhandled token in DOMCharacterData::getValueProperty : " << token << endl;
       return NULL;
  @@ -1981,21 +1981,21 @@
         if (count < 0)
           setDOMException(exec, DOMException::INDEX_SIZE_ERR);
         else
  -        return getStringOrNull(data.substringData(args[0]->toInt32(exec), count, exception));
  +        return jsStringOrNull(data.substringData(args[0]->toInt32(exec), count, exception));
       }
       case DOMCharacterData::AppendData:
         data.appendData(args[0]->toString(exec).domString(), exception);
  -      return Undefined();
  +      return jsUndefined();
       case DOMCharacterData::InsertData:
         data.insertData(args[0]->toInt32(exec), args[1]->toString(exec).domString(), exception);
  -      return Undefined();
  +      return jsUndefined();
       case DOMCharacterData::DeleteData: {
         const int count = args[1]->toInt32(exec);
         if (count < 0)
           setDOMException(exec, DOMException::INDEX_SIZE_ERR);
         else
           data.deleteData(args[0]->toInt32(exec), count, exception);
  -      return Undefined();
  +      return jsUndefined();
       }
       case DOMCharacterData::ReplaceData: {
         const int count = args[1]->toInt32(exec);
  @@ -2003,10 +2003,10 @@
           setDOMException(exec, DOMException::INDEX_SIZE_ERR);
         else
           data.replaceData(args[0]->toInt32(exec), count, args[2]->toString(exec).domString(), exception);
  -      return Undefined();
  +      return jsUndefined();
       }
       default:
  -      return Undefined();
  +      return jsUndefined();
     }
   }
   
  @@ -2039,7 +2039,7 @@
       case DOMText::SplitText:
         return getDOMNode(exec, text.splitText(args[0]->toInt32(exec), exception));
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   } // namespace
  
  
  
  1.75      +84 -84    WebCore/khtml/ecma/kjs_events.cpp
  
  Index: kjs_events.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_events.cpp,v
  retrieving revision 1.74
  retrieving revision 1.75
  diff -u -r1.74 -r1.75
  --- kjs_events.cpp	4 Dec 2005 11:35:08 -0000	1.74
  +++ kjs_events.cpp	11 Dec 2005 00:38:01 -0000	1.75
  @@ -300,10 +300,10 @@
         ObjectImp *constr = interpreter->builtinFunction();
         List args;
   
  -      static ProtectedPtr<ValueImp> eventString = String("event");
  +      static ProtectedPtr<ValueImp> eventString = jsString("event");
         UString sourceURL(part->m_url.url());
         args.append(eventString);
  -      args.append(String(code));
  +      args.append(jsString(code));
         listener = constr->construct(exec, args, sourceURL, lineNumber); // ### is globalExec ok ?
   
         if (exec->hadException()) {
  @@ -386,7 +386,7 @@
   ValueImp *EventConstructor::getValueProperty(ExecState *, int token) const
   {
     // We use the token as the value to return directly
  -  return Number(token);
  +  return jsNumber(token);
   }
   
   ValueImp *getEventConstructor(ExecState *exec)
  @@ -451,24 +451,24 @@
     EventImpl &event = *m_impl;
     switch (token) {
     case Type:
  -    return String(event.type().domString());
  +    return jsString(event.type().domString());
     case Target:
     case SrcElement: /*MSIE extension - "the object that fired the event"*/
       return getDOMNode(exec, event.target());
     case CurrentTarget:
       return getDOMNode(exec, event.currentTarget());
     case EventPhase:
  -    return Number((unsigned int)event.eventPhase());
  +    return jsNumber(event.eventPhase());
     case Bubbles:
  -    return Boolean(event.bubbles());
  +    return jsBoolean(event.bubbles());
     case CancelBubble:
  -    return Boolean(event.getCancelBubble());
  +    return jsBoolean(event.getCancelBubble());
     case ReturnValue:
  -    return Boolean(!event.defaultPrevented());
  +    return jsBoolean(!event.defaultPrevented());
     case Cancelable:
  -    return Boolean(event.cancelable());
  +    return jsBoolean(event.cancelable());
     case TimeStamp:
  -    return Number(event.timeStamp());
  +    return jsNumber(event.timeStamp());
     case ClipboardData:
     {
       if (event.isClipboardEvent()) {
  @@ -478,7 +478,7 @@
         }
         return clipboard;
       } else {
  -      return Undefined();
  +      return jsUndefined();
       }
     }
     case DataTransfer:
  @@ -490,7 +490,7 @@
         }
         return clipboard;
       } else {
  -      return Undefined();
  +      return jsUndefined();
       }
     }
     default:
  @@ -529,21 +529,21 @@
     switch (id) {
       case DOMEvent::StopPropagation:
         event.stopPropagation();
  -      return Undefined();
  +      return jsUndefined();
       case DOMEvent::PreventDefault:
         event.preventDefault();
  -      return Undefined();
  +      return jsUndefined();
       case DOMEvent::InitEvent:
         event.initEvent(AtomicString(args[0]->toString(exec).domString()), args[1]->toBoolean(exec), args[2]->toBoolean(exec));
  -      return Undefined();
  +      return jsUndefined();
     };
  -  return Undefined();
  +  return jsUndefined();
   }
   
   ValueImp *getDOMEvent(ExecState *exec, EventImpl *e)
   {
     if (!e)
  -    return Null();
  +    return jsNull();
     ScriptInterpreter* interp = static_cast<ScriptInterpreter *>(exec->dynamicInterpreter());
   
     JSLock lock;
  @@ -593,7 +593,7 @@
   ValueImp *EventExceptionConstructor::getValueProperty(ExecState *, int token) const
   {
     // We use the token as the value to return directly
  -  return Number(token);
  +  return jsNumber(token);
   }
   
   ValueImp *getEventExceptionConstructor(ExecState *exec)
  @@ -646,24 +646,24 @@
     case View:
       return getDOMAbstractView(exec, event.view());
     case Detail:
  -    return Number(event.detail());
  +    return jsNumber(event.detail());
     case KeyCode:
  -    return Number(event.keyCode());
  +    return jsNumber(event.keyCode());
     case CharCode:
  -    return Number(event.charCode());
  +    return jsNumber(event.charCode());
     case LayerX:
  -    return Number(event.layerX());
  +    return jsNumber(event.layerX());
     case LayerY:
  -    return Number(event.layerY());
  +    return jsNumber(event.layerY());
     case PageX:
  -    return Number(event.pageX());
  +    return jsNumber(event.pageX());
     case PageY:
  -    return Number(event.pageY());
  +    return jsNumber(event.pageY());
     case Which:
  -    return Number(event.which());
  +    return jsNumber(event.which());
     default:
       kdWarning() << "Unhandled token in DOMUIEvent::getValueProperty : " << token << endl;
  -    return Undefined();
  +    return jsUndefined();
     }
   }
   
  @@ -679,9 +679,9 @@
                             args[2]->toBoolean(exec),
                             toAbstractView(args[3]),
                             args[4]->toInt32(exec));
  -      return Undefined();
  +      return jsUndefined();
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   // -------------------------------------------------------------------------
  @@ -758,30 +758,30 @@
     MouseEventImpl &event = *static_cast<MouseEventImpl *>(impl());
     switch (token) {
     case ScreenX:
  -    return Number(event.screenX());
  +    return jsNumber(event.screenX());
     case ScreenY:
  -    return Number(event.screenY());
  +    return jsNumber(event.screenY());
     case ClientX:
     case X:
  -    return Number(event.clientX());
  +    return jsNumber(event.clientX());
     case ClientY:
     case Y:
  -    return Number(event.clientY());
  +    return jsNumber(event.clientY());
     case OffsetX: // MSIE extension
  -    return Number(offsetFromTarget(&event).x());
  +    return jsNumber(offsetFromTarget(&event).x());
     case OffsetY: // MSIE extension
  -    return Number(offsetFromTarget(&event).y());
  +    return jsNumber(offsetFromTarget(&event).y());
     case CtrlKey:
  -    return Boolean(event.ctrlKey());
  +    return jsBoolean(event.ctrlKey());
     case ShiftKey:
  -    return Boolean(event.shiftKey());
  +    return jsBoolean(event.shiftKey());
     case AltKey:
  -    return Boolean(event.altKey());
  +    return jsBoolean(event.altKey());
     case MetaKey:
  -    return Boolean(event.metaKey());
  +    return jsBoolean(event.metaKey());
     case Button:
       // WinIE uses 1,4,2 for left/middle/right but not for click (just for mousedown/up, maybe others), but we will match the standard DOM.
  -    return Number(event.button());
  +    return jsNumber(event.button());
     case ToElement:
       // MSIE extension - "the object toward which the user is moving the mouse pointer"
       return getDOMNode(exec, event.type() == mouseoutEvent ? event.relatedTarget() : event.target());
  @@ -818,9 +818,9 @@
                                   args[12]->toBoolean(exec), // metaKeyArg
                                   args[13]->toInt32(exec), // buttonArg
                                   toNode(args[14])); // relatedTargetArg
  -      return Undefined();
  +      return jsUndefined();
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   // -------------------------------------------------------------------------
  @@ -870,19 +870,19 @@
     KeyboardEventImpl &event = *static_cast<KeyboardEventImpl *>(impl());
     switch (token) {
     case KeyIdentifier:
  -    return String(event.keyIdentifier());
  +    return jsString(event.keyIdentifier());
     case KeyLocation:
  -    return Number(event.keyLocation());
  +    return jsNumber(event.keyLocation());
     case CtrlKey:
  -    return Boolean(event.ctrlKey());
  +    return jsBoolean(event.ctrlKey());
     case ShiftKey:
  -    return Boolean(event.shiftKey());
  +    return jsBoolean(event.shiftKey());
     case AltKey:
  -    return Boolean(event.altKey());
  +    return jsBoolean(event.altKey());
     case MetaKey:
  -    return Boolean(event.metaKey());
  +    return jsBoolean(event.metaKey());
     case AltGraphKey:
  -    return Boolean(event.altGraphKey());
  +    return jsBoolean(event.altGraphKey());
     default:
       kdWarning() << "Unhandled token in DOMKeyboardEvent::getValueProperty : " << token << endl;
       return NULL;
  @@ -907,9 +907,9 @@
                                 args[8]->toBoolean(exec), // shiftKeyArg
                                 args[9]->toBoolean(exec), // metaKeyArg
                                 args[10]->toBoolean(exec)); // altGraphKeyArg
  -      return Undefined();
  +      return jsUndefined();
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   // -------------------------------------------------------------------------
  @@ -930,7 +930,7 @@
   ValueImp *MutationEventConstructor::getValueProperty(ExecState *, int token) const
   {
     // We use the token as the value to return directly
  -  return Number(token);
  +  return jsNumber(token);
   }
   
   ValueImp *getMutationEventConstructor(ExecState *exec)
  @@ -979,13 +979,13 @@
     case RelatedNode:
       return getDOMNode(exec, event.relatedNode());
     case PrevValue:
  -    return String(event.prevValue());
  +    return jsString(event.prevValue());
     case NewValue:
  -    return String(event.newValue());
  +    return jsString(event.newValue());
     case AttrName:
  -    return String(event.attrName());
  +    return jsString(event.attrName());
     case AttrChange:
  -    return Number(event.attrChange());
  +    return jsNumber(event.attrChange());
     default:
       kdWarning() << "Unhandled token in DOMMutationEvent::getValueProperty : " << token << endl;
       return NULL;
  @@ -1007,9 +1007,9 @@
                                         args[5]->toString(exec).domString(), // newValueArg
                                         args[6]->toString(exec).domString(), // attrNameArg
                                         args[7]->toInt32(exec)); // attrChangeArg
  -      return Undefined();
  +      return jsUndefined();
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   // -------------------------------------------------------------------------
  @@ -1053,38 +1053,38 @@
       DOM::WheelEventImpl *e = static_cast<DOM::WheelEventImpl *>(impl());
       switch (token) {
           case AltKey:
  -            return Boolean(e->altKey());
  +            return jsBoolean(e->altKey());
           case ClientX:
           case X:
  -            return Number(e->clientX());
  +            return jsNumber(e->clientX());
           case ClientY:
           case Y:
  -            return Number(e->clientY());
  +            return jsNumber(e->clientY());
           case CtrlKey:
  -            return Number(e->ctrlKey());
  +            return jsNumber(e->ctrlKey());
           case MetaKey:
  -            return Number(e->metaKey());
  +            return jsNumber(e->metaKey());
           case OffsetX:
  -            return Number(offsetFromTarget(e).x());
  +            return jsNumber(offsetFromTarget(e).x());
           case OffsetY:
  -            return Number(offsetFromTarget(e).y());
  +            return jsNumber(offsetFromTarget(e).y());
           case ScreenX:
  -            return Number(e->screenX());
  +            return jsNumber(e->screenX());
           case ScreenY:
  -            return Number(e->screenY());
  +            return jsNumber(e->screenY());
           case ShiftKey:
  -            return Boolean(e->shiftKey());
  +            return jsBoolean(e->shiftKey());
           case WheelDelta:
  -            return Number(e->wheelDelta());
  +            return jsNumber(e->wheelDelta());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *DOMWheelEventProtoFunc::callAsFunction(ExecState *exec, ObjectImp *thisObj, const List &args)
   {
       if (!thisObj->inherits(&DOMWheelEvent::info))
           return throwError(exec, TypeError);
  -    return Undefined();
  +    return jsUndefined();
   }
   
   // -------------------------------------------------------------------------
  @@ -1127,9 +1127,9 @@
   static ValueImp *stringOrUndefined(const DOM::DOMString &str)
   {
       if (str.isNull()) {
  -        return Undefined();
  +        return jsUndefined();
       } else {
  -        return String(str);
  +        return jsString(str);
       }
   }
   
  @@ -1151,11 +1151,11 @@
           {
               QStringList qTypes = clipboard->types();
               if (qTypes.isEmpty()) {
  -                return Null(); 
  +                return jsNull(); 
               } else {
                   List list;
                   for (QStringList::Iterator it = qTypes.begin(); it != qTypes.end(); ++it) {
  -                    list.append(String(UString(*it)));
  +                    list.append(jsString(UString(*it)));
                   }
                   return exec->lexicalInterpreter()->builtinArray()->construct(exec, list);
               }
  @@ -1199,10 +1199,10 @@
           case Clipboard::ClearData:
               if (args.size() == 0) {
                   cb->clipboard->clearAllData();
  -                return Undefined();
  +                return jsUndefined();
               } else if (args.size() == 1) {
                   cb->clipboard->clearData(args[0]->toString(exec).domString());
  -                return Undefined();
  +                return jsUndefined();
               } else {
                   return throwError(exec, SyntaxError, "clearData: Invalid number of arguments");
               }
  @@ -1212,9 +1212,9 @@
                   bool success;
                   DOM::DOMString result = cb->clipboard->getData(args[0]->toString(exec).domString(), success);
                   if (success) {
  -                    return String(result);
  +                    return jsString(result);
                   } else {
  -                    return Undefined();
  +                    return jsUndefined();
                   }
               } else {
                   return throwError(exec, SyntaxError, "getData: Invalid number of arguments");
  @@ -1222,14 +1222,14 @@
           }
           case Clipboard::SetData:
               if (args.size() == 2) {
  -                return Boolean(cb->clipboard->setData(args[0]->toString(exec).domString(), args[1]->toString(exec).domString()));
  +                return jsBoolean(cb->clipboard->setData(args[0]->toString(exec).domString(), args[1]->toString(exec).domString()));
               } else {
                   return throwError(exec, SyntaxError, "setData: Invalid number of arguments");
               }
           case Clipboard::SetDragImage:
           {
               if (!cb->clipboard->isForDragging()) {
  -                return Undefined();
  +                return jsUndefined();
               }
   
               if (args.size() != 3)
  @@ -1243,7 +1243,7 @@
               if (node) {
                   if (node->isElementNode()) {
                       cb->clipboard->setDragImageElement(node, QPoint(x,y));                    
  -                    return Undefined();
  +                    return jsUndefined();
                   } else {
                       return throwError(exec, SyntaxError, "setDragImageFromElement: Invalid first argument");
                   }
  @@ -1254,13 +1254,13 @@
               if (o->isObject() && o->inherits(&Image::info)) {
                   Image *JSImage = static_cast<Image*>(o);
                   cb->clipboard->setDragImage(JSImage->image()->pixmap(), QPoint(x,y));                
  -                return Undefined();
  +                return jsUndefined();
               } else {
                   return throwError(exec, TypeError);
               }
           }
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   }
  
  
  
  1.152     +460 -460  WebCore/khtml/ecma/kjs_html.cpp
  
  Index: kjs_html.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_html.cpp,v
  retrieving revision 1.151
  retrieving revision 1.152
  diff -u -r1.151 -r1.152
  --- kjs_html.cpp	3 Dec 2005 20:26:00 -0000	1.151
  +++ kjs_html.cpp	11 Dec 2005 00:38:01 -0000	1.152
  @@ -159,7 +159,7 @@
     switch (id) {
     case HTMLDocument::Clear: // even IE doesn't support that one...
       //doc.clear(); // TODO
  -    return Undefined();
  +    return jsUndefined();
     case HTMLDocument::Open:
       // For compatibility with other browsers, pass open calls with more than 2 parameters to the window.
       if (args.size() > 2) {
  @@ -173,15 +173,15 @@
   	  return functionObject->call(exec, window, args);
   	}
         }
  -      return Undefined();
  +      return jsUndefined();
       }
       // In the case of two parameters or fewer, do a normal document open.
       doc.open();
  -    return Undefined();
  +    return jsUndefined();
     case HTMLDocument::Close:
       // see khtmltests/ecma/tokenizer-script-recursion.html
       doc.close();
  -    return Undefined();
  +    return jsUndefined();
     case HTMLDocument::Write:
     case HTMLDocument::WriteLn: {
       // DOM only specifies single string argument, but NS & IE allow multiple
  @@ -193,7 +193,7 @@
         str += "\n";
       //kdDebug() << "document.write: " << str.ascii() << endl;
       doc.write(str.domString());
  -    return Undefined();
  +    return jsUndefined();
     }
     case HTMLDocument::GetElementsByName:
       return getDOMNodeList(exec, doc.getElementsByName(args[0]->toString(exec).domString()).get());
  @@ -203,7 +203,7 @@
       break;
     }
   
  -  return Undefined();
  +  return jsUndefined();
   }
   
   const ClassInfo KJS::HTMLDocument::info =
  @@ -296,21 +296,21 @@
       
     switch (token) {
     case Title:
  -    return String(doc.title());
  +    return jsString(doc.title());
     case Referrer:
  -    return String(doc.referrer());
  +    return jsString(doc.referrer());
     case Domain:
  -    return String(doc.domain());
  +    return jsString(doc.domain());
     case URL:
  -    return String(doc.URL());
  +    return jsString(doc.URL());
     case Body:
       return getDOMNode(exec, body);
     case Location:
       if (Window* win = Window::retrieveWindow(part))
         return win->location();
  -    return Undefined();
  +    return jsUndefined();
     case Cookie:
  -    return String(doc.cookie());
  +    return jsString(doc.cookie());
     case Images:
       return getHTMLCollection(exec, doc.images().get());
     case Embeds:
  @@ -328,49 +328,49 @@
         // To be implemented. Meanwhile, return an object with a length property set to 0
         kdWarning() << "KJS::HTMLDocument document.scripts called - not implemented" << endl;
         ObjectImp *obj = new ObjectImp;
  -      obj->put(exec, lengthPropertyName, Number(0));
  +      obj->put(exec, lengthPropertyName, jsNumber(0));
         return obj;
       }
     case All:
       // Disable document.all when we try to be Netscape-compatible
       if (exec->dynamicInterpreter()->compatMode() == Interpreter::NetscapeCompat)
  -      return Undefined();
  +      return jsUndefined();
       return getHTMLCollection(exec, doc.all().get());
     case BgColor:
       if (!bodyElement)
  -      return Undefined();
  -    return String(bodyElement->bgColor());
  +      return jsUndefined();
  +    return jsString(bodyElement->bgColor());
     case FgColor:
       if (!bodyElement)
  -      return Undefined();
  -    return String(bodyElement->text());
  +      return jsUndefined();
  +    return jsString(bodyElement->text());
     case AlinkColor:
       if (!bodyElement)
  -      return Undefined();
  -    return String(bodyElement->aLink());
  +      return jsUndefined();
  +    return jsString(bodyElement->aLink());
     case LinkColor:
       if (!bodyElement)
  -      return Undefined();
  -    return String(bodyElement->link());
  +      return jsUndefined();
  +    return jsString(bodyElement->link());
     case VlinkColor:
       if (!bodyElement)
  -      return Undefined();
  -    return String(bodyElement->vLink());
  +      return jsUndefined();
  +    return jsString(bodyElement->vLink());
     case LastModified:
  -    return String(doc.lastModified());
  +    return jsString(doc.lastModified());
     case Height:
  -    return Number(view ? view->contentsHeight() : 0);
  +    return jsNumber(view ? view->contentsHeight() : 0);
     case Width:
  -    return Number(view ? view->contentsWidth() : 0);
  +    return jsNumber(view ? view->contentsWidth() : 0);
     case Dir:
       if (!bodyElement)
  -      return Undefined();
  -    return String(bodyElement->dir());
  +      return jsUndefined();
  +    return jsString(bodyElement->dir());
     case DesignMode:
  -    return String(doc.inDesignMode() ? "on" : "off");
  +    return jsString(doc.inDesignMode() ? "on" : "off");
     default:
       assert(0);
  -    return Undefined();
  +    return jsUndefined();
     }
   }
   
  @@ -1293,7 +1293,7 @@
           if (Window *window = Window::retrieveWindow(doc->part()))
               return window;
   
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::frameWindowPropertyGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
  @@ -1304,7 +1304,7 @@
           if (Window *window = Window::retrieveWindow(doc->part()))
               return window->get(exec, propertyName);
   
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::runtimeObjectGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
  @@ -1322,7 +1322,7 @@
   
       if (ValueImp *runtimeObject = getRuntimeObject(exec, element))
           return static_cast<ObjectImp *>(runtimeObject)->get(exec, propertyName);
  -    return Undefined();
  +    return jsUndefined();
   }
   
   bool HTMLElement::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot& slot)
  @@ -1435,23 +1435,23 @@
           if (ValueImp *runtimeObject = getRuntimeObject(exec, element))
               return static_cast<ObjectImp *>(runtimeObject)->call(exec, thisObj, args);
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::htmlGetter(ExecState* exec, int token) const
   {
       HTMLHtmlElementImpl& html = *static_cast<HTMLHtmlElementImpl*>(impl());
       if (token == HtmlVersion)
  -        return String(html.version());
  -    return Undefined();
  +        return jsString(html.version());
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::headGetter(ExecState* exec, int token) const
   {
       HTMLHeadElementImpl &head = *static_cast<HTMLHeadElementImpl*>(impl());
       if (token == HeadProfile)
  -        return String(head.profile());
  -    return Undefined();
  +        return jsString(head.profile());
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::linkGetter(ExecState* exec, int token) const
  @@ -1459,57 +1459,57 @@
       HTMLLinkElementImpl &link = *static_cast<HTMLLinkElementImpl*>(impl());
       switch (token) {
           case LinkDisabled:
  -            return Boolean(link.disabled());
  +            return jsBoolean(link.disabled());
           case LinkCharset:
  -            return String(link.charset());
  +            return jsString(link.charset());
           case LinkHref:
  -            return String(link.href());
  +            return jsString(link.href());
           case LinkHrefLang:
  -            return String(link.hreflang());
  +            return jsString(link.hreflang());
           case LinkMedia:           
  -            return String(link.media());
  +            return jsString(link.media());
           case LinkRel:             
  -            return String(link.rel());
  +            return jsString(link.rel());
           case LinkRev:            
  -            return String(link.rev());
  +            return jsString(link.rev());
           case LinkTarget:          
  -            return String(link.target());
  +            return jsString(link.target());
           case LinkType:            
  -            return String(link.type());
  +            return jsString(link.type());
           case LinkSheet:           
               return getDOMStyleSheet(exec, link.sheet());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::titleGetter(ExecState* exec, int token) const
   {
       HTMLTitleElementImpl& title = *static_cast<HTMLTitleElementImpl*>(impl());
       if (token == TitleText)
  -        return String(title.text());
  -    return Undefined();
  +        return jsString(title.text());
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::metaGetter(ExecState* exec, int token) const
   {
       HTMLMetaElementImpl& meta = *static_cast<HTMLMetaElementImpl*>(impl());
       switch (token) {
  -        case MetaContent:         return String(meta.content());
  -        case MetaHttpEquiv:       return String(meta.httpEquiv());
  -        case MetaName:            return String(meta.name());
  -        case MetaScheme:          return String(meta.scheme());
  +        case MetaContent:         return jsString(meta.content());
  +        case MetaHttpEquiv:       return jsString(meta.httpEquiv());
  +        case MetaName:            return jsString(meta.name());
  +        case MetaScheme:          return jsString(meta.scheme());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::baseGetter(ExecState* exec, int token) const
   {
       HTMLBaseElementImpl& base = *static_cast<HTMLBaseElementImpl*>(impl());
       switch (token) {
  -        case BaseHref:            return String(base.href());
  -        case BaseTarget:          return String(base.target());
  +        case BaseHref:            return jsString(base.href());
  +        case BaseTarget:          return jsString(base.target());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::isIndexGetter(ExecState* exec, int token) const
  @@ -1517,33 +1517,33 @@
       HTMLIsIndexElementImpl& isindex = *static_cast<HTMLIsIndexElementImpl*>(impl());
       switch (token) {
           case IsIndexForm:            return getDOMNode(exec, isindex.form()); // type HTMLFormElement
  -        case IsIndexPrompt:          return String(isindex.prompt());
  +        case IsIndexPrompt:          return jsString(isindex.prompt());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::styleGetter(ExecState* exec, int token) const
   {
       HTMLStyleElementImpl& style = *static_cast<HTMLStyleElementImpl*>(impl());
       switch (token) {
  -        case StyleDisabled:        return Boolean(style.disabled());
  -        case StyleMedia:           return String(style.media());
  -        case StyleType:            return String(style.type());
  +        case StyleDisabled:        return jsBoolean(style.disabled());
  +        case StyleMedia:           return jsString(style.media());
  +        case StyleType:            return jsString(style.type());
           case StyleSheet:           return getDOMStyleSheet(exec, style.sheet());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::bodyGetter(ExecState* exec, int token) const
   {
       HTMLBodyElementImpl& body = *static_cast<HTMLBodyElementImpl*>(impl());
       switch (token) {
  -        case BodyALink:           return String(body.aLink());
  -        case BodyBackground:      return String(body.background());
  -        case BodyBgColor:         return String(body.bgColor());
  -        case BodyLink:            return String(body.link());
  -        case BodyText:            return String(body.text());
  -        case BodyVLink:           return String(body.vLink());
  +        case BodyALink:           return jsString(body.aLink());
  +        case BodyBackground:      return jsString(body.background());
  +        case BodyBgColor:         return jsString(body.bgColor());
  +        case BodyLink:            return jsString(body.link());
  +        case BodyText:            return jsString(body.text());
  +        case BodyVLink:           return jsString(body.vLink());
           default: {
               // Update the document's layout before we compute these attributes.
               DocumentImpl *doc = body.getDocument();
  @@ -1552,17 +1552,17 @@
               KHTMLView *view = doc ? doc->view() : 0;
               switch (token) {
                   case BodyScrollLeft:
  -                    return Number(view ? view->contentsX() : 0);
  +                    return jsNumber(view ? view->contentsX() : 0);
                   case BodyScrollTop:
  -                    return Number(view ? view->contentsY() : 0);
  +                    return jsNumber(view ? view->contentsY() : 0);
                   case BodyScrollHeight:
  -                    return Number(view ? view->contentsHeight() : 0);
  +                    return jsNumber(view ? view->contentsHeight() : 0);
                   case BodyScrollWidth:
  -                    return Number(view ? view->contentsWidth() : 0);
  +                    return jsNumber(view ? view->contentsWidth() : 0);
               }
           }
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::formGetter(ExecState* exec, int token) const
  @@ -1570,44 +1570,44 @@
       HTMLFormElementImpl& form = *static_cast<HTMLFormElementImpl*>(impl());
       switch (token) {
           case FormElements:        return getHTMLCollection(exec, form.elements().get());
  -        case FormLength:          return Number(form.length());
  -        case FormName:            return String(form.name());
  -        case FormAcceptCharset:   return String(form.acceptCharset());
  -        case FormAction:          return String(form.action());
  -        case FormEncType:         return String(form.enctype());
  -        case FormMethod:          return String(form.method());
  -        case FormTarget:          return String(form.target());
  +        case FormLength:          return jsNumber(form.length());
  +        case FormName:            return jsString(form.name());
  +        case FormAcceptCharset:   return jsString(form.acceptCharset());
  +        case FormAction:          return jsString(form.action());
  +        case FormEncType:         return jsString(form.enctype());
  +        case FormMethod:          return jsString(form.method());
  +        case FormTarget:          return jsString(form.target());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::selectGetter(ExecState* exec, int token) const
   {
       HTMLSelectElementImpl& select = *static_cast<HTMLSelectElementImpl*>(impl());
       switch (token) {
  -        case SelectType:            return String(select.type());
  -        case SelectSelectedIndex:   return Number(select.selectedIndex());
  -        case SelectValue:           return String(select.value());
  -        case SelectLength:          return Number(select.length());
  +        case SelectType:            return jsString(select.type());
  +        case SelectSelectedIndex:   return jsNumber(select.selectedIndex());
  +        case SelectValue:           return jsString(select.value());
  +        case SelectLength:          return jsNumber(select.length());
           case SelectForm:            return getDOMNode(exec, select.form()); // type HTMLFormElement
           case SelectOptions:         return getSelectHTMLCollection(exec, select.optionsHTMLCollection().get(), &select); // type HTMLCollection
  -        case SelectDisabled:        return Boolean(select.disabled());
  -        case SelectMultiple:        return Boolean(select.multiple());
  -        case SelectName:            return String(select.name());
  -        case SelectSize:            return Number(select.size());
  -        case SelectTabIndex:        return Number(select.tabIndex());
  +        case SelectDisabled:        return jsBoolean(select.disabled());
  +        case SelectMultiple:        return jsBoolean(select.multiple());
  +        case SelectName:            return jsString(select.name());
  +        case SelectSize:            return jsNumber(select.size());
  +        case SelectTabIndex:        return jsNumber(select.tabIndex());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::optGroupGetter(ExecState* exec, int token) const
   {
       HTMLOptGroupElementImpl& optgroup = *static_cast<HTMLOptGroupElementImpl*>(impl());
       switch (token) {
  -        case OptGroupDisabled:        return Boolean(optgroup.disabled());
  -        case OptGroupLabel:           return String(optgroup.label());
  +        case OptGroupDisabled:        return jsBoolean(optgroup.disabled());
  +        case OptGroupLabel:           return jsString(optgroup.label());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::optionGetter(ExecState* exec, int token) const
  @@ -1615,73 +1615,73 @@
       HTMLOptionElementImpl& option = *static_cast<HTMLOptionElementImpl*>(impl());
       switch (token) {
           case OptionForm:            return getDOMNode(exec,option.form()); // type HTMLFormElement
  -        case OptionDefaultSelected: return Boolean(option.defaultSelected());
  -        case OptionText:            return String(option.text());
  -        case OptionIndex:           return Number(option.index());
  -        case OptionDisabled:        return Boolean(option.disabled());
  -        case OptionLabel:           return String(option.label());
  -        case OptionSelected:        return Boolean(option.selected());
  -        case OptionValue:           return String(option.value());
  +        case OptionDefaultSelected: return jsBoolean(option.defaultSelected());
  +        case OptionText:            return jsString(option.text());
  +        case OptionIndex:           return jsNumber(option.index());
  +        case OptionDisabled:        return jsBoolean(option.disabled());
  +        case OptionLabel:           return jsString(option.label());
  +        case OptionSelected:        return jsBoolean(option.selected());
  +        case OptionValue:           return jsString(option.value());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   static ValueImp *getInputSelectionStart(HTMLInputElementImpl &input)
   {
       if (input.canHaveSelection())
  -        return Number(input.selectionStart());
  -    return Undefined();
  +        return jsNumber(input.selectionStart());
  +    return jsUndefined();
   }
   
   static ValueImp *getInputSelectionEnd(HTMLInputElementImpl &input)
   {
       if (input.canHaveSelection())
  -        return Number(input.selectionEnd());
  -    return Undefined();
  +        return jsNumber(input.selectionEnd());
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::inputGetter(ExecState* exec, int token) const
   {
       HTMLInputElementImpl& input = *static_cast<HTMLInputElementImpl*>(impl());
       switch (token) {
  -        case InputDefaultValue:    return String(input.defaultValue());
  -        case InputDefaultChecked:  return Boolean(input.defaultChecked());
  +        case InputDefaultValue:    return jsString(input.defaultValue());
  +        case InputDefaultChecked:  return jsBoolean(input.defaultChecked());
           case InputForm:            return getDOMNode(exec,input.form()); // type HTMLFormElement
  -        case InputAccept:          return String(input.accept());
  -        case InputAccessKey:       return String(input.accessKey());
  -        case InputAlign:           return String(input.align());
  -        case InputAlt:             return String(input.alt());
  -        case InputChecked:         return Boolean(input.checked());
  -        case InputDisabled:        return Boolean(input.disabled());
  -        case InputIndeterminate:   return Boolean(input.indeterminate());
  -        case InputMaxLength:       return Number(input.maxLength());
  -        case InputName:            return String(input.name());
  -        case InputReadOnly:        return Boolean(input.readOnly());
  +        case InputAccept:          return jsString(input.accept());
  +        case InputAccessKey:       return jsString(input.accessKey());
  +        case InputAlign:           return jsString(input.align());
  +        case InputAlt:             return jsString(input.alt());
  +        case InputChecked:         return jsBoolean(input.checked());
  +        case InputDisabled:        return jsBoolean(input.disabled());
  +        case InputIndeterminate:   return jsBoolean(input.indeterminate());
  +        case InputMaxLength:       return jsNumber(input.maxLength());
  +        case InputName:            return jsString(input.name());
  +        case InputReadOnly:        return jsBoolean(input.readOnly());
           case InputSelectionStart:  return getInputSelectionStart(input);
           case InputSelectionEnd:    return getInputSelectionEnd(input);
  -        case InputSize:            return Number(input.size());
  -        case InputSrc:             return String(input.src());
  -        case InputTabIndex:        return Number(input.tabIndex());
  -        case InputType:            return String(input.type());
  -        case InputUseMap:          return String(input.useMap());
  -        case InputValue:           return String(input.value());
  +        case InputSize:            return jsNumber(input.size());
  +        case InputSrc:             return jsString(input.src());
  +        case InputTabIndex:        return jsNumber(input.tabIndex());
  +        case InputType:            return jsString(input.type());
  +        case InputUseMap:          return jsString(input.useMap());
  +        case InputValue:           return jsString(input.value());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::textAreaGetter(ExecState* exec, int token) const
   {
       HTMLTextAreaElementImpl& textarea = *static_cast<HTMLTextAreaElementImpl*>(impl());
       switch (token) {
  -        case TextAreaDefaultValue:    return String(textarea.defaultValue());
  +        case TextAreaDefaultValue:    return jsString(textarea.defaultValue());
           case TextAreaForm:            return getDOMNode(exec,textarea.form()); // type HTMLFormElement
  -        case TextAreaAccessKey:       return String(textarea.accessKey());
  -        case TextAreaCols:            return Number(textarea.cols());
  -        case TextAreaDisabled:        return Boolean(textarea.disabled());
  -        case TextAreaName:            return String(textarea.name());
  -        case TextAreaReadOnly:        return Boolean(textarea.readOnly());
  -        case TextAreaRows:            return Number(textarea.rows());
  -        case TextAreaSelectionStart:  return Number(textarea.selectionStart());
  +        case TextAreaAccessKey:       return jsString(textarea.accessKey());
  +        case TextAreaCols:            return jsNumber(textarea.cols());
  +        case TextAreaDisabled:        return jsBoolean(textarea.disabled());
  +        case TextAreaName:            return jsString(textarea.name());
  +        case TextAreaReadOnly:        return jsBoolean(textarea.readOnly());
  +        case TextAreaRows:            return jsNumber(textarea.rows());
  +        case TextAreaSelectionStart:  return jsNumber(textarea.selectionStart());
           case TextAreaSelectionEnd:
               // FIXME (4363497): Work-around to prevent regression caused by GMail bug (4344954).
               // For the love of all that is holy, let's remove this code as soon as
  @@ -1689,12 +1689,12 @@
               if (impl() && impl()->getDocument() && (impl()->getDocument()->domain() == "mail.google.com"))
                       return jsUndefined();
               
  -            return Number(textarea.selectionEnd());
  -        case TextAreaTabIndex:        return Number(textarea.tabIndex());
  -        case TextAreaType:            return String(textarea.type());
  -        case TextAreaValue:           return String(textarea.value());
  +            return jsNumber(textarea.selectionEnd());
  +        case TextAreaTabIndex:        return jsNumber(textarea.tabIndex());
  +        case TextAreaType:            return jsString(textarea.type());
  +        case TextAreaValue:           return jsString(textarea.value());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::buttonGetter(ExecState* exec, int token) const
  @@ -1702,14 +1702,14 @@
       HTMLButtonElementImpl& button = *static_cast<HTMLButtonElementImpl*>(impl());
       switch (token) {
           case ButtonForm:            return getDOMNode(exec,button.form()); // type HTMLFormElement
  -        case ButtonAccessKey:       return String(button.accessKey());
  -        case ButtonDisabled:        return Boolean(button.disabled());
  -        case ButtonName:            return String(button.name());
  -        case ButtonTabIndex:        return Number(button.tabIndex());
  -        case ButtonType:            return String(button.type());
  -        case ButtonValue:           return String(button.value());
  +        case ButtonAccessKey:       return jsString(button.accessKey());
  +        case ButtonDisabled:        return jsBoolean(button.disabled());
  +        case ButtonName:            return jsString(button.name());
  +        case ButtonTabIndex:        return jsNumber(button.tabIndex());
  +        case ButtonType:            return jsString(button.type());
  +        case ButtonValue:           return jsString(button.value());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::labelGetter(ExecState* exec, int token) const
  @@ -1717,10 +1717,10 @@
       HTMLLabelElementImpl& label = *static_cast<HTMLLabelElementImpl*>(impl());
       switch (token) {
           case LabelForm:            return getDOMNode(exec,label.form()); // type HTMLFormElement
  -        case LabelAccessKey:       return String(label.accessKey());
  -        case LabelHtmlFor:         return String(label.htmlFor());
  +        case LabelAccessKey:       return jsString(label.accessKey());
  +        case LabelHtmlFor:         return jsString(label.htmlFor());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::fieldSetGetter(ExecState* exec, int token) const
  @@ -1728,7 +1728,7 @@
       HTMLFieldSetElementImpl& fieldSet = *static_cast<HTMLFieldSetElementImpl*>(impl());
       if (token == FieldSetForm)
           return getDOMNode(exec,fieldSet.form()); // type HTMLFormElement
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::legendGetter(ExecState* exec, int token) const
  @@ -1736,105 +1736,105 @@
       HTMLLegendElementImpl& legend = *static_cast<HTMLLegendElementImpl*>(impl());
       switch (token) {
           case LegendForm:            return getDOMNode(exec,legend.form()); // type HTMLFormElement
  -        case LegendAccessKey:       return String(legend.accessKey());
  -        case LegendAlign:           return String(legend.align());
  +        case LegendAccessKey:       return jsString(legend.accessKey());
  +        case LegendAlign:           return jsString(legend.align());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::uListGetter(ExecState* exec, int token) const
   {
       HTMLUListElementImpl& uList = *static_cast<HTMLUListElementImpl*>(impl());
       switch (token) {
  -        case UListCompact:         return Boolean(uList.compact());
  -        case UListType:            return String(uList.type());
  +        case UListCompact:         return jsBoolean(uList.compact());
  +        case UListType:            return jsString(uList.type());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::oListGetter(ExecState* exec, int token) const
   {
       HTMLOListElementImpl& oList = *static_cast<HTMLOListElementImpl*>(impl());
       switch (token) {
  -        case OListCompact:         return Boolean(oList.compact());
  -        case OListStart:           return Number(oList.start());
  -        case OListType:            return String(oList.type());
  +        case OListCompact:         return jsBoolean(oList.compact());
  +        case OListStart:           return jsNumber(oList.start());
  +        case OListType:            return jsString(oList.type());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::dListGetter(ExecState* exec, int token) const
   {
       HTMLDListElementImpl& dList = *static_cast<HTMLDListElementImpl*>(impl());
       if (token == DListCompact)
  -        return Boolean(dList.compact());
  -    return Undefined();
  +        return jsBoolean(dList.compact());
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::dirGetter(ExecState* exec, int token) const
   {
       HTMLDirectoryElementImpl& dir = *static_cast<HTMLDirectoryElementImpl*>(impl());
       if (token == DirectoryCompact)
  -        return Boolean(dir.compact());
  -    return Undefined();
  +        return jsBoolean(dir.compact());
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::menuGetter(ExecState* exec, int token) const
   {
       HTMLMenuElementImpl& menu = *static_cast<HTMLMenuElementImpl*>(impl());
       if (token == MenuCompact)
  -        return Boolean(menu.compact());
  -    return Undefined();
  +        return jsBoolean(menu.compact());
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::liGetter(ExecState* exec, int token) const
   {
       HTMLLIElementImpl& li = *static_cast<HTMLLIElementImpl*>(impl());
       switch (token) {
  -        case LIType:            return String(li.type());
  -        case LIValue:           return Number(li.value());
  +        case LIType:            return jsString(li.type());
  +        case LIValue:           return jsNumber(li.value());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::divGetter(ExecState* exec, int token) const
   {
       HTMLDivElementImpl& div = *static_cast<HTMLDivElementImpl*>(impl());
       if (token == DivAlign)
  -        return String(div.align());
  -    return Undefined();
  +        return jsString(div.align());
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::paragraphGetter(ExecState* exec, int token) const
   {
       HTMLParagraphElementImpl& p = *static_cast<HTMLParagraphElementImpl*>(impl());
       if (token == ParagraphAlign)
  -        return String(p.align());
  -    return Undefined();
  +        return jsString(p.align());
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::headingGetter(ExecState* exec, int token) const
   {
       HTMLHeadingElementImpl& h = *static_cast<HTMLHeadingElementImpl*>(impl());
       if (token == HeadingAlign)
  -        return String(h.align());
  -    return Undefined();
  +        return jsString(h.align());
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::blockQuoteGetter(ExecState* exec, int token) const
   {
       HTMLBlockquoteElementImpl& blockQuote = *static_cast<HTMLBlockquoteElementImpl*>(impl());
       if (token == BlockQuoteCite)
  -        return String(blockQuote.cite());
  -    return Undefined();
  +        return jsString(blockQuote.cite());
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::quoteGetter(ExecState* exec, int token) const
   {
       HTMLQuoteElementImpl& quote = *static_cast<HTMLQuoteElementImpl*>(impl());
       if (token == QuoteCite)
  -        return String(quote.cite());
  -    return Undefined();
  +        return jsString(quote.cite());
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::preGetter(ExecState* exec, int token) const
  @@ -1842,122 +1842,122 @@
       // FIXME: Add support for 'wrap' when white-space: pre-wrap is implemented.
       HTMLPreElementImpl& pre = *static_cast<HTMLPreElementImpl*>(impl());
       if (token == PreWidth)
  -        return Number(pre.width());
  +        return jsNumber(pre.width());
       if (token == PreWrap)
  -        return Boolean(pre.wrap());
  -    return Undefined();
  +        return jsBoolean(pre.wrap());
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::brGetter(ExecState* exec, int token) const
   {
       HTMLBRElementImpl& br = *static_cast<HTMLBRElementImpl*>(impl());
       if (token == BRClear)
  -        return String(br.clear());
  -    return Undefined();
  +        return jsString(br.clear());
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::baseFontGetter(ExecState* exec, int token) const
   {
       HTMLBaseFontElementImpl& baseFont = *static_cast<HTMLBaseFontElementImpl*>(impl());
       switch (token) {
  -        case BaseFontColor:           return String(baseFont.color());
  -        case BaseFontFace:            return String(baseFont.face());
  -        case BaseFontSize:            return String(baseFont.size());
  +        case BaseFontColor:           return jsString(baseFont.color());
  +        case BaseFontFace:            return jsString(baseFont.face());
  +        case BaseFontSize:            return jsString(baseFont.size());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::fontGetter(ExecState* exec, int token) const
   {
       HTMLFontElementImpl& font = *static_cast<HTMLFontElementImpl*>(impl());
       switch (token) {
  -        case FontColor:           return String(font.color());
  -        case FontFace:            return String(font.face());
  -        case FontSize:            return String(font.size());
  +        case FontColor:           return jsString(font.color());
  +        case FontFace:            return jsString(font.face());
  +        case FontSize:            return jsString(font.size());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::hrGetter(ExecState* exec, int token) const
   {
       HTMLHRElementImpl& hr = *static_cast<HTMLHRElementImpl*>(impl());
       switch (token) {
  -        case HRAlign:           return String(hr.align());
  -        case HRNoShade:         return Boolean(hr.noShade());
  -        case HRSize:            return String(hr.size());
  -        case HRWidth:           return String(hr.width());
  +        case HRAlign:           return jsString(hr.align());
  +        case HRNoShade:         return jsBoolean(hr.noShade());
  +        case HRSize:            return jsString(hr.size());
  +        case HRWidth:           return jsString(hr.width());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::modGetter(ExecState* exec, int token) const
   {
       HTMLModElementImpl& mod = *static_cast<HTMLModElementImpl*>(impl());
       switch (token) {
  -        case ModCite:            return String(mod.cite());
  -        case ModDateTime:        return String(mod.dateTime());
  +        case ModCite:            return jsString(mod.cite());
  +        case ModDateTime:        return jsString(mod.dateTime());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::anchorGetter(ExecState* exec, int token) const
   {
       HTMLAnchorElementImpl& anchor = *static_cast<HTMLAnchorElementImpl*>(impl());
       switch (token) {
  -        case AnchorAccessKey:       return String(anchor.accessKey());
  -        case AnchorCharset:         return String(anchor.charset());
  -        case AnchorCoords:          return String(anchor.coords());
  -        case AnchorHref:            return String(anchor.href());
  -        case AnchorHrefLang:        return String(anchor.hreflang());
  -        case AnchorHash:            return String('#'+KURL(anchor.href().qstring()).ref());
  -        case AnchorHost:            return String(KURL(anchor.href().qstring()).host());
  +        case AnchorAccessKey:       return jsString(anchor.accessKey());
  +        case AnchorCharset:         return jsString(anchor.charset());
  +        case AnchorCoords:          return jsString(anchor.coords());
  +        case AnchorHref:            return jsString(anchor.href());
  +        case AnchorHrefLang:        return jsString(anchor.hreflang());
  +        case AnchorHash:            return jsString('#'+KURL(anchor.href().qstring()).ref());
  +        case AnchorHost:            return jsString(KURL(anchor.href().qstring()).host());
           case AnchorHostname: {
               KURL url(anchor.href().qstring());
               kdDebug(6070) << "anchor::hostname uses:" <<url.url()<<endl;
               if (url.port()==0)
  -                return String(url.host());
  +                return jsString(url.host());
               else
  -                return String(url.host() + ":" + QString::number(url.port()));
  +                return jsString(url.host() + ":" + QString::number(url.port()));
           }
  -        case AnchorPathName:        return String(KURL(anchor.href().qstring()).path());
  -        case AnchorPort:            return String(QString::number(KURL(anchor.href().qstring()).port()));
  -        case AnchorProtocol:        return String(KURL(anchor.href().qstring()).protocol()+":");
  -        case AnchorSearch:          return String(KURL(anchor.href().qstring()).query());
  -        case AnchorName:            return String(anchor.name());
  -        case AnchorRel:             return String(anchor.rel());
  -        case AnchorRev:             return String(anchor.rev());
  -        case AnchorShape:           return String(anchor.shape());
  -        case AnchorTabIndex:        return Number(anchor.tabIndex());
  -        case AnchorTarget:          return String(anchor.target());
  -        case AnchorType:            return String(anchor.type());
  +        case AnchorPathName:        return jsString(KURL(anchor.href().qstring()).path());
  +        case AnchorPort:            return jsString(QString::number(KURL(anchor.href().qstring()).port()));
  +        case AnchorProtocol:        return jsString(KURL(anchor.href().qstring()).protocol()+":");
  +        case AnchorSearch:          return jsString(KURL(anchor.href().qstring()).query());
  +        case AnchorName:            return jsString(anchor.name());
  +        case AnchorRel:             return jsString(anchor.rel());
  +        case AnchorRev:             return jsString(anchor.rev());
  +        case AnchorShape:           return jsString(anchor.shape());
  +        case AnchorTabIndex:        return jsNumber(anchor.tabIndex());
  +        case AnchorTarget:          return jsString(anchor.target());
  +        case AnchorType:            return jsString(anchor.type());
           case AnchorText:
               if (DocumentImpl* doc = anchor.getDocument())
                   doc->updateLayoutIgnorePendingStylesheets();
  -            return String(anchor.innerText());
  +            return jsString(anchor.innerText());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::imageGetter(ExecState* exec, int token) const
   {
       HTMLImageElementImpl& image = *static_cast<HTMLImageElementImpl*>(impl());
       switch (token) {
  -        case ImageName:            return String(image.name());
  -        case ImageAlign:           return String(image.align());
  -        case ImageAlt:             return String(image.alt());
  -        case ImageBorder:          return Number(image.border());
  -        case ImageHeight:          return Number(image.height(true));
  -        case ImageHspace:          return Number(image.hspace());
  -        case ImageIsMap:           return Boolean(image.isMap());
  -        case ImageLongDesc:        return String(image.longDesc());
  -        case ImageSrc:             return String(image.src());
  -        case ImageUseMap:          return String(image.useMap());
  -        case ImageVspace:          return Number(image.vspace());
  -        case ImageWidth:           return Number(image.width(true));
  -        case ImageX:               return Number(image.x());
  -        case ImageY:               return Number(image.y());
  +        case ImageName:            return jsString(image.name());
  +        case ImageAlign:           return jsString(image.align());
  +        case ImageAlt:             return jsString(image.alt());
  +        case ImageBorder:          return jsNumber(image.border());
  +        case ImageHeight:          return jsNumber(image.height(true));
  +        case ImageHspace:          return jsNumber(image.hspace());
  +        case ImageIsMap:           return jsBoolean(image.isMap());
  +        case ImageLongDesc:        return jsString(image.longDesc());
  +        case ImageSrc:             return jsString(image.src());
  +        case ImageUseMap:          return jsString(image.useMap());
  +        case ImageVspace:          return jsNumber(image.vspace());
  +        case ImageWidth:           return jsNumber(image.width(true));
  +        case ImageX:               return jsNumber(image.x());
  +        case ImageY:               return jsNumber(image.y());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::objectGetter(ExecState* exec, int token) const
  @@ -1965,58 +1965,58 @@
       HTMLObjectElementImpl& object = *static_cast<HTMLObjectElementImpl*>(impl());
       switch (token) {
           case ObjectForm:            return getDOMNode(exec,object.form()); // type HTMLFormElement
  -        case ObjectCode:            return String(object.code());
  -        case ObjectAlign:           return String(object.align());
  -        case ObjectArchive:         return String(object.archive());
  -        case ObjectBorder:          return String(object.border());
  -        case ObjectCodeBase:        return String(object.codeBase());
  -        case ObjectCodeType:        return String(object.codeType());
  +        case ObjectCode:            return jsString(object.code());
  +        case ObjectAlign:           return jsString(object.align());
  +        case ObjectArchive:         return jsString(object.archive());
  +        case ObjectBorder:          return jsString(object.border());
  +        case ObjectCodeBase:        return jsString(object.codeBase());
  +        case ObjectCodeType:        return jsString(object.codeType());
           case ObjectContentDocument: return checkNodeSecurity(exec,object.contentDocument()) ? 
  -                                           getDOMNode(exec, object.contentDocument()) : Undefined();
  -        case ObjectData:            return String(object.data());
  -        case ObjectDeclare:         return Boolean(object.declare());
  -        case ObjectHeight:          return String(object.height());
  -        case ObjectHspace:          return String(object.hspace());
  -        case ObjectName:            return String(object.name());
  -        case ObjectStandby:         return String(object.standby());
  -        case ObjectTabIndex:        return Number(object.tabIndex());
  -        case ObjectType:            return String(object.type());
  -        case ObjectUseMap:          return String(object.useMap());
  -        case ObjectVspace:          return String(object.vspace());
  -        case ObjectWidth:           return String(object.width());
  +                                           getDOMNode(exec, object.contentDocument()) : jsUndefined();
  +        case ObjectData:            return jsString(object.data());
  +        case ObjectDeclare:         return jsBoolean(object.declare());
  +        case ObjectHeight:          return jsString(object.height());
  +        case ObjectHspace:          return jsString(object.hspace());
  +        case ObjectName:            return jsString(object.name());
  +        case ObjectStandby:         return jsString(object.standby());
  +        case ObjectTabIndex:        return jsNumber(object.tabIndex());
  +        case ObjectType:            return jsString(object.type());
  +        case ObjectUseMap:          return jsString(object.useMap());
  +        case ObjectVspace:          return jsString(object.vspace());
  +        case ObjectWidth:           return jsString(object.width());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::paramGetter(ExecState* exec, int token) const
   {
       HTMLParamElementImpl& param = *static_cast<HTMLParamElementImpl*>(impl());
       switch (token) {
  -        case ParamName:            return String(param.name());
  -        case ParamType:            return String(param.type());
  -        case ParamValue:           return String(param.value());
  -        case ParamValueType:       return String(param.valueType());
  +        case ParamName:            return jsString(param.name());
  +        case ParamType:            return jsString(param.type());
  +        case ParamValue:           return jsString(param.value());
  +        case ParamValueType:       return jsString(param.valueType());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::appletGetter(ExecState* exec, int token) const
   {
       HTMLAppletElementImpl& applet = *static_cast<HTMLAppletElementImpl*>(impl());
       switch (token) {
  -        case AppletAlign:           return String(applet.align());
  -        case AppletAlt:             return String(applet.alt());
  -        case AppletArchive:         return String(applet.archive());
  -        case AppletCode:            return String(applet.code());
  -        case AppletCodeBase:        return String(applet.codeBase());
  -        case AppletHeight:          return String(applet.height());
  -        case AppletHspace:          return String(applet.hspace());
  -        case AppletName:            return String(applet.name());
  -        case AppletObject:          return String(applet.object());
  -        case AppletVspace:          return String(applet.vspace());
  -        case AppletWidth:           return String(applet.width());
  +        case AppletAlign:           return jsString(applet.align());
  +        case AppletAlt:             return jsString(applet.alt());
  +        case AppletArchive:         return jsString(applet.archive());
  +        case AppletCode:            return jsString(applet.code());
  +        case AppletCodeBase:        return jsString(applet.codeBase());
  +        case AppletHeight:          return jsString(applet.height());
  +        case AppletHspace:          return jsString(applet.hspace());
  +        case AppletName:            return jsString(applet.name());
  +        case AppletObject:          return jsString(applet.object());
  +        case AppletVspace:          return jsString(applet.vspace());
  +        case AppletWidth:           return jsString(applet.width());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::mapGetter(ExecState* exec, int token) const
  @@ -2024,54 +2024,54 @@
       HTMLMapElementImpl& map = *static_cast<HTMLMapElementImpl*>(impl());
       switch (token) {
           case MapAreas:           return getHTMLCollection(exec, map.areas().get()); // type HTMLCollection
  -        case MapName:            return String(map.name());
  +        case MapName:            return jsString(map.name());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::areaGetter(ExecState* exec, int token) const
   {
       HTMLAreaElementImpl& area = *static_cast<HTMLAreaElementImpl*>(impl());
       switch (token) {
  -        case AreaAccessKey:       return String(area.accessKey());
  -        case AreaAlt:             return String(area.alt());
  -        case AreaCoords:          return String(area.coords());
  -        case AreaHref:            return String(area.href());
  -        case AreaHash:            return String('#'+KURL(area.href().qstring()).ref());
  -        case AreaHost:            return String(KURL(area.href().qstring()).host());
  +        case AreaAccessKey:       return jsString(area.accessKey());
  +        case AreaAlt:             return jsString(area.alt());
  +        case AreaCoords:          return jsString(area.coords());
  +        case AreaHref:            return jsString(area.href());
  +        case AreaHash:            return jsString('#'+KURL(area.href().qstring()).ref());
  +        case AreaHost:            return jsString(KURL(area.href().qstring()).host());
           case AreaHostName: {
               KURL url(area.href().qstring());
               kdDebug(6070) << "link::hostname uses:" <<url.url()<<endl;
               if (url.port()==0)
  -                return String(url.host());
  +                return jsString(url.host());
               else
  -                return String(url.host() + ":" + QString::number(url.port()));
  +                return jsString(url.host() + ":" + QString::number(url.port()));
           }
  -        case AreaPathName:        return String(KURL(area.href().qstring()).path());
  -        case AreaPort:            return String(QString::number(KURL(area.href().qstring()).port()));
  -        case AreaProtocol:        return String(KURL(area.href().qstring()).protocol()+":");
  -        case AreaSearch:          return String(KURL(area.href().qstring()).query());
  -        case AreaNoHref:          return Boolean(area.noHref());
  -        case AreaShape:           return String(area.shape());
  -        case AreaTabIndex:        return Number(area.tabIndex());
  -        case AreaTarget:          return String(area.target());
  +        case AreaPathName:        return jsString(KURL(area.href().qstring()).path());
  +        case AreaPort:            return jsString(QString::number(KURL(area.href().qstring()).port()));
  +        case AreaProtocol:        return jsString(KURL(area.href().qstring()).protocol()+":");
  +        case AreaSearch:          return jsString(KURL(area.href().qstring()).query());
  +        case AreaNoHref:          return jsBoolean(area.noHref());
  +        case AreaShape:           return jsString(area.shape());
  +        case AreaTabIndex:        return jsNumber(area.tabIndex());
  +        case AreaTarget:          return jsString(area.target());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::scriptGetter(ExecState* exec, int token) const
   {
       HTMLScriptElementImpl& script = *static_cast<HTMLScriptElementImpl*>(impl());
       switch (token) {
  -        case ScriptText:            return String(script.text());
  -        case ScriptHtmlFor:         return String(script.htmlFor());
  -        case ScriptEvent:           return String(script.event());
  -        case ScriptCharset:         return String(script.charset());
  -        case ScriptDefer:           return Boolean(script.defer());
  -        case ScriptSrc:             return String(script.src());
  -        case ScriptType:            return String(script.type());
  +        case ScriptText:            return jsString(script.text());
  +        case ScriptHtmlFor:         return jsString(script.htmlFor());
  +        case ScriptEvent:           return jsString(script.event());
  +        case ScriptCharset:         return jsString(script.charset());
  +        case ScriptDefer:           return jsBoolean(script.defer());
  +        case ScriptSrc:             return jsString(script.src());
  +        case ScriptType:            return jsString(script.type());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::tableGetter(ExecState* exec, int token) const
  @@ -2083,101 +2083,101 @@
           case TableTFoot:           return getDOMNode(exec,table.tFoot()); // type HTMLTableSectionElement
           case TableRows:            return getHTMLCollection(exec, table.rows().get()); // type HTMLCollection
           case TableTBodies:         return getHTMLCollection(exec, table.tBodies().get()); // type HTMLCollection
  -        case TableAlign:           return String(table.align());
  -        case TableBgColor:         return String(table.bgColor());
  -        case TableBorder:          return String(table.border());
  -        case TableCellPadding:     return String(table.cellPadding());
  -        case TableCellSpacing:     return String(table.cellSpacing());
  -        case TableFrame:           return String(table.frame());
  -        case TableRules:           return String(table.rules());
  -        case TableSummary:         return String(table.summary());
  -        case TableWidth:           return String(table.width());
  +        case TableAlign:           return jsString(table.align());
  +        case TableBgColor:         return jsString(table.bgColor());
  +        case TableBorder:          return jsString(table.border());
  +        case TableCellPadding:     return jsString(table.cellPadding());
  +        case TableCellSpacing:     return jsString(table.cellSpacing());
  +        case TableFrame:           return jsString(table.frame());
  +        case TableRules:           return jsString(table.rules());
  +        case TableSummary:         return jsString(table.summary());
  +        case TableWidth:           return jsString(table.width());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::tableCaptionGetter(ExecState* exec, int token) const
   {
       HTMLTableCaptionElementImpl& tableCaption = *static_cast<HTMLTableCaptionElementImpl*>(impl());
       if (token == TableCaptionAlign)
  -        return String(tableCaption.align());
  -    return Undefined();
  +        return jsString(tableCaption.align());
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::tableColGetter(ExecState* exec, int token) const
   {
       HTMLTableColElementImpl& tableCol = *static_cast<HTMLTableColElementImpl*>(impl());
       switch (token) {
  -        case TableColAlign:           return String(tableCol.align());
  -        case TableColCh:              return String(tableCol.ch());
  -        case TableColChOff:           return String(tableCol.chOff());
  -        case TableColSpan:            return Number(tableCol.span());
  -        case TableColVAlign:          return String(tableCol.vAlign());
  -        case TableColWidth:           return String(tableCol.width());
  +        case TableColAlign:           return jsString(tableCol.align());
  +        case TableColCh:              return jsString(tableCol.ch());
  +        case TableColChOff:           return jsString(tableCol.chOff());
  +        case TableColSpan:            return jsNumber(tableCol.span());
  +        case TableColVAlign:          return jsString(tableCol.vAlign());
  +        case TableColWidth:           return jsString(tableCol.width());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::tableSectionGetter(ExecState* exec, int token) const
   {
       HTMLTableSectionElementImpl& tableSection = *static_cast<HTMLTableSectionElementImpl*>(impl());
       switch (token) {
  -        case TableSectionAlign:           return String(tableSection.align());
  -        case TableSectionCh:              return String(tableSection.ch());
  -        case TableSectionChOff:           return String(tableSection.chOff());
  -        case TableSectionVAlign:          return String(tableSection.vAlign());
  +        case TableSectionAlign:           return jsString(tableSection.align());
  +        case TableSectionCh:              return jsString(tableSection.ch());
  +        case TableSectionChOff:           return jsString(tableSection.chOff());
  +        case TableSectionVAlign:          return jsString(tableSection.vAlign());
           case TableSectionRows:            return getHTMLCollection(exec, tableSection.rows().get()); // type HTMLCollection
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::tableRowGetter(ExecState* exec, int token) const
   {
       HTMLTableRowElementImpl& tableRow = *static_cast<HTMLTableRowElementImpl*>(impl());
       switch (token) {
  -        case TableRowRowIndex:        return Number(tableRow.rowIndex());
  -        case TableRowSectionRowIndex: return Number(tableRow.sectionRowIndex());
  +        case TableRowRowIndex:        return jsNumber(tableRow.rowIndex());
  +        case TableRowSectionRowIndex: return jsNumber(tableRow.sectionRowIndex());
           case TableRowCells:           return getHTMLCollection(exec, tableRow.cells().get()); // type HTMLCollection
  -        case TableRowAlign:           return String(tableRow.align());
  -        case TableRowBgColor:         return String(tableRow.bgColor());
  -        case TableRowCh:              return String(tableRow.ch());
  -        case TableRowChOff:           return String(tableRow.chOff());
  -        case TableRowVAlign:          return String(tableRow.vAlign());
  +        case TableRowAlign:           return jsString(tableRow.align());
  +        case TableRowBgColor:         return jsString(tableRow.bgColor());
  +        case TableRowCh:              return jsString(tableRow.ch());
  +        case TableRowChOff:           return jsString(tableRow.chOff());
  +        case TableRowVAlign:          return jsString(tableRow.vAlign());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::tableCellGetter(ExecState* exec, int token) const
   {
       HTMLTableCellElementImpl& tableCell = *static_cast<HTMLTableCellElementImpl*>(impl());
       switch (token) {
  -        case TableCellCellIndex:       return Number(tableCell.cellIndex());
  -        case TableCellAbbr:            return String(tableCell.abbr());
  -        case TableCellAlign:           return String(tableCell.align());
  -        case TableCellAxis:            return String(tableCell.axis());
  -        case TableCellBgColor:         return String(tableCell.bgColor());
  -        case TableCellCh:              return String(tableCell.ch());
  -        case TableCellChOff:           return String(tableCell.chOff());
  -        case TableCellColSpan:         return Number(tableCell.colSpan());
  -        case TableCellHeaders:         return String(tableCell.headers());
  -        case TableCellHeight:          return String(tableCell.height());
  -        case TableCellNoWrap:          return Boolean(tableCell.noWrap());
  -        case TableCellRowSpan:         return Number(tableCell.rowSpan());
  -        case TableCellScope:           return String(tableCell.scope());
  -        case TableCellVAlign:          return String(tableCell.vAlign());
  -        case TableCellWidth:           return String(tableCell.width());
  +        case TableCellCellIndex:       return jsNumber(tableCell.cellIndex());
  +        case TableCellAbbr:            return jsString(tableCell.abbr());
  +        case TableCellAlign:           return jsString(tableCell.align());
  +        case TableCellAxis:            return jsString(tableCell.axis());
  +        case TableCellBgColor:         return jsString(tableCell.bgColor());
  +        case TableCellCh:              return jsString(tableCell.ch());
  +        case TableCellChOff:           return jsString(tableCell.chOff());
  +        case TableCellColSpan:         return jsNumber(tableCell.colSpan());
  +        case TableCellHeaders:         return jsString(tableCell.headers());
  +        case TableCellHeight:          return jsString(tableCell.height());
  +        case TableCellNoWrap:          return jsBoolean(tableCell.noWrap());
  +        case TableCellRowSpan:         return jsNumber(tableCell.rowSpan());
  +        case TableCellScope:           return jsString(tableCell.scope());
  +        case TableCellVAlign:          return jsString(tableCell.vAlign());
  +        case TableCellWidth:           return jsString(tableCell.width());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::frameSetGetter(ExecState* exec, int token) const
   {
       HTMLFrameSetElementImpl& frameSet = *static_cast<HTMLFrameSetElementImpl*>(impl());
       switch (token) {
  -        case FrameSetCols:            return String(frameSet.cols());
  -        case FrameSetRows:            return String(frameSet.rows());
  +        case FrameSetCols:            return jsString(frameSet.cols());
  +        case FrameSetRows:            return jsString(frameSet.rows());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::frameGetter(ExecState* exec, int token) const
  @@ -2185,52 +2185,52 @@
       HTMLFrameElementImpl& frameElement = *static_cast<HTMLFrameElementImpl*>(impl());
       switch (token) {
           case FrameContentDocument: return checkNodeSecurity(exec,frameElement.contentDocument()) ? 
  -                                          getDOMNode(exec, frameElement.contentDocument()) : Undefined();
  +                                          getDOMNode(exec, frameElement.contentDocument()) : jsUndefined();
           case FrameContentWindow:   return checkNodeSecurity(exec,frameElement.contentDocument())
                                           ? Window::retrieve(frameElement.contentPart())
  -                                        : Undefined();
  -        case FrameFrameBorder:     return String(frameElement.frameBorder());
  -        case FrameLongDesc:        return String(frameElement.longDesc());
  -        case FrameMarginHeight:    return String(frameElement.marginHeight());
  -        case FrameMarginWidth:     return String(frameElement.marginWidth());
  -        case FrameName:            return String(frameElement.name());
  -        case FrameNoResize:        return Boolean(frameElement.noResize());
  -        case FrameScrolling:       return String(frameElement.scrolling());
  +                                        : jsUndefined();
  +        case FrameFrameBorder:     return jsString(frameElement.frameBorder());
  +        case FrameLongDesc:        return jsString(frameElement.longDesc());
  +        case FrameMarginHeight:    return jsString(frameElement.marginHeight());
  +        case FrameMarginWidth:     return jsString(frameElement.marginWidth());
  +        case FrameName:            return jsString(frameElement.name());
  +        case FrameNoResize:        return jsBoolean(frameElement.noResize());
  +        case FrameScrolling:       return jsString(frameElement.scrolling());
           case FrameSrc:
  -        case FrameLocation:        return String(frameElement.src());
  +        case FrameLocation:        return jsString(frameElement.src());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::iFrameGetter(ExecState* exec, int token) const
   {
       HTMLIFrameElementImpl& iFrame = *static_cast<HTMLIFrameElementImpl*>(impl());
       switch (token) {
  -        case IFrameAlign:                return String(iFrame.align());
  +        case IFrameAlign:                return jsString(iFrame.align());
             // ### security check ?
           case IFrameDocument: // non-standard, mapped to contentDocument
           case IFrameContentDocument: return checkNodeSecurity(exec,iFrame.contentDocument()) ? 
  -                                      getDOMNode(exec, iFrame.contentDocument()) : Undefined();
  +                                      getDOMNode(exec, iFrame.contentDocument()) : jsUndefined();
           case IFrameContentWindow:	return checkNodeSecurity(exec,iFrame.contentDocument()) 
                                           ? Window::retrieve(iFrame.contentPart())
  -                                        : Undefined();
  -        case IFrameFrameBorder:     return String(iFrame.frameBorder());
  -        case IFrameHeight:          return String(iFrame.height());
  -        case IFrameLongDesc:        return String(iFrame.longDesc());
  -        case IFrameMarginHeight:    return String(iFrame.marginHeight());
  -        case IFrameMarginWidth:     return String(iFrame.marginWidth());
  -        case IFrameName:            return String(iFrame.name());
  -        case IFrameScrolling:       return String(iFrame.scrolling());
  -        case IFrameSrc:             return String(iFrame.src());
  -        case IFrameWidth:           return String(iFrame.width());
  +                                        : jsUndefined();
  +        case IFrameFrameBorder:     return jsString(iFrame.frameBorder());
  +        case IFrameHeight:          return jsString(iFrame.height());
  +        case IFrameLongDesc:        return jsString(iFrame.longDesc());
  +        case IFrameMarginHeight:    return jsString(iFrame.marginHeight());
  +        case IFrameMarginWidth:     return jsString(iFrame.marginWidth());
  +        case IFrameName:            return jsString(iFrame.name());
  +        case IFrameScrolling:       return jsString(iFrame.scrolling());
  +        case IFrameSrc:             return jsString(iFrame.src());
  +        case IFrameWidth:           return jsString(iFrame.width());
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::marqueeGetter(ExecState* exec, int token) const
   {
       // FIXME: Find out what WinIE exposes as properties and implement this.
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *HTMLElement::getValueProperty(ExecState *exec, int token) const
  @@ -2239,42 +2239,42 @@
       HTMLElementImpl &element = *static_cast<HTMLElementImpl *>(impl());
       switch (token) {
           case ElementId:
  -        // iht.com relies on this value being "" when no id is present.  Other browsers do this as well.
  -        // So we use String() instead of String() here.
  -        return String(element.id());
  +            // iht.com relies on this value being "" when no id is present. Other browsers do this as well.
  +            // So we use jsString() instead of jsStringOrNull() here.
  +            return jsString(element.id());
           case ElementTitle:
  -            return String(element.title());
  +            return jsString(element.title());
           case ElementLang:
  -            return String(element.lang());
  +            return jsString(element.lang());
           case ElementDir:
  -            return String(element.dir());
  +            return jsString(element.dir());
           case ElementClassName:
  -            return String(element.className());
  +            return jsString(element.className());
           case ElementInnerHTML:
  -            return String(element.innerHTML());
  +            return jsString(element.innerHTML());
           case ElementInnerText:
               if (DocumentImpl* doc = impl()->getDocument())
                   doc->updateLayoutIgnorePendingStylesheets();
  -            return String(element.innerText());
  +            return jsString(element.innerText());
           case ElementOuterHTML:
  -            return String(element.outerHTML());
  +            return jsString(element.outerHTML());
           case ElementOuterText:
  -            return String(element.outerText());
  +            return jsString(element.outerText());
           case ElementDocument:
               return getDOMNode(exec,element.ownerDocument());
           case ElementChildren:
               return getHTMLCollection(exec, element.children().get());
           case ElementContentEditable:
  -            return String(element.contentEditable());
  +            return jsString(element.contentEditable());
           case ElementIsContentEditable:
  -            return Boolean(element.isContentEditable());
  +            return jsBoolean(element.isContentEditable());
       }
   
       // Now check the properties specific to our element type.
       const Accessors* info = getSetInfo();
       if (info && info->m_getter)
           return (this->*(info->m_getter))(exec, token);
  -    return Undefined();
  +    return jsUndefined();
   }
   
   UString KJS::HTMLElement::toString(ExecState *exec) const
  @@ -2328,7 +2328,7 @@
   HTMLElementFunction::HTMLElementFunction(ExecState *exec, int i, int len)
     : DOMFunction(), id(i)
   {
  -  put(exec,lengthPropertyName,Number(len),DontDelete|ReadOnly|DontEnum);
  +  put(exec,lengthPropertyName,jsNumber(len),DontDelete|ReadOnly|DontEnum);
   }
   
   ValueImp *KJS::HTMLElementFunction::callAsFunction(ExecState *exec, ObjectImp *thisObj, const List &args)
  @@ -2343,111 +2343,111 @@
           HTMLFormElementImpl &form = static_cast<HTMLFormElementImpl &>(element);
           if (id == KJS::HTMLElement::FormSubmit) {
               form.submit();
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::FormReset) {
               form.reset();
  -            return Undefined();
  +            return jsUndefined();
           }
       }
       else if (element.hasLocalName(selectTag)) {
           HTMLSelectElementImpl &select = static_cast<HTMLSelectElementImpl &>(element);
           if (id == KJS::HTMLElement::SelectAdd) {
               select.add(toHTMLElement(args[0]), toHTMLElement(args[1]), exception);
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::SelectRemove) {
               select.remove(int(args[0]->toNumber(exec)));
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::SelectBlur) {
               select.blur();
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::SelectFocus) {
               select.focus();
  -            return Undefined();
  +            return jsUndefined();
           }
       }
       else if (element.hasLocalName(inputTag)) {
           HTMLInputElementImpl &input = static_cast<HTMLInputElementImpl &>(element);
           if (id == KJS::HTMLElement::InputBlur) {
               input.blur();
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::InputFocus) {
               input.focus();
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::InputSelect) {
               input.select();
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::InputClick) {
               input.click();
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::InputSetSelectionRange) {
               input.setSelectionRange(args[0]->toInt32(exec), args[1]->toInt32(exec));
  -            return Undefined();
  +            return jsUndefined();
           }
       }
       else if (element.hasLocalName(buttonTag)) {
           HTMLButtonElementImpl &button = static_cast<HTMLButtonElementImpl &>(element);
           if (id == KJS::HTMLElement::ButtonBlur) {
               button.blur();
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::ButtonFocus) {
               button.focus();
  -            return Undefined();
  +            return jsUndefined();
           }
       }
       else if (element.hasLocalName(labelTag)) {
           HTMLLabelElementImpl &label = static_cast<HTMLLabelElementImpl &>(element);
           if (id == KJS::HTMLElement::LabelFocus) {
               label.focus();
  -            return Undefined();
  +            return jsUndefined();
           }
       }
       else if (element.hasLocalName(legendTag)) {
           HTMLLegendElementImpl &legend = static_cast<HTMLLegendElementImpl &>(element);
           if (id == KJS::HTMLElement::LegendFocus) {
               legend.focus();
  -            return Undefined();
  +            return jsUndefined();
           }
       }
       else if (element.hasLocalName(textareaTag)) {
           HTMLTextAreaElementImpl &textarea = static_cast<HTMLTextAreaElementImpl &>(element);
           if (id == KJS::HTMLElement::TextAreaBlur) {
               textarea.blur();
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::TextAreaFocus) {
               textarea.focus();
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::TextAreaSelect) {
               textarea.select();
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::TextAreaSetSelectionRange) {
               textarea.setSelectionRange(args[0]->toInt32(exec), args[1]->toInt32(exec));
  -            return Undefined();
  +            return jsUndefined();
           }
       }
       else if (element.hasLocalName(aTag)) {
           HTMLAnchorElementImpl &anchor = static_cast<HTMLAnchorElementImpl &>(element);
           if (id == KJS::HTMLElement::AnchorBlur) {
               anchor.blur();
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::AnchorFocus) {
               anchor.focus();
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::AnchorToString)
  -            return String(thisObj->toString(exec));
  +            return jsString(thisObj->toString(exec));
       }
       else if (element.hasLocalName(tableTag)) {
           HTMLTableElementImpl &table = static_cast<HTMLTableElementImpl &>(element);
  @@ -2455,25 +2455,25 @@
               return getDOMNode(exec,table.createTHead());
           else if (id == KJS::HTMLElement::TableDeleteTHead) {
               table.deleteTHead();
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::TableCreateTFoot)
               return getDOMNode(exec,table.createTFoot());
           else if (id == KJS::HTMLElement::TableDeleteTFoot) {
               table.deleteTFoot();
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::TableCreateCaption)
               return getDOMNode(exec,table.createCaption());
           else if (id == KJS::HTMLElement::TableDeleteCaption) {
               table.deleteCaption();
  -            return Undefined();
  +            return jsUndefined();
           }
           else if (id == KJS::HTMLElement::TableInsertRow)
               return getDOMNode(exec,table.insertRow(args[0]->toInt32(exec), exception));
           else if (id == KJS::HTMLElement::TableDeleteRow) {
               table.deleteRow(args[0]->toInt32(exec), exception);
  -            return Undefined();
  +            return jsUndefined();
           }
       }
       else if (element.hasLocalName(theadTag) ||
  @@ -2484,7 +2484,7 @@
               return getDOMNode(exec, tableSection.insertRow(args[0]->toInt32(exec), exception));
           else if (id == KJS::HTMLElement::TableSectionDeleteRow) {
               tableSection.deleteRow(args[0]->toInt32(exec), exception);
  -            return Undefined();
  +            return jsUndefined();
           }
       }
       else if (element.hasLocalName(trTag)) {
  @@ -2493,7 +2493,7 @@
               return getDOMNode(exec,tableRow.insertCell(args[0]->toInt32(exec), exception));
           else if (id == KJS::HTMLElement::TableRowDeleteCell) {
               tableRow.deleteCell(args[0]->toInt32(exec), exception);
  -            return Undefined();
  +            return jsUndefined();
           }
       }
       else if (element.hasLocalName(marqueeTag)) {
  @@ -2501,13 +2501,13 @@
               element.renderer()->layer() &&
               element.renderer()->layer()->marquee()) {
               element.renderer()->layer()->marquee()->start();
  -            return Undefined();
  +            return jsUndefined();
           }
           if (id == KJS::HTMLElement::MarqueeStop && element.renderer() && 
               element.renderer()->layer() &&
               element.renderer()->layer()->marquee()) {
               element.renderer()->layer()->marquee()->stop();
  -            return Undefined();
  +            return jsUndefined();
           }
       }
       else if (element.hasLocalName(canvasTag)) {
  @@ -2515,11 +2515,11 @@
               if (args.size() == 0 || (args.size() == 1 && args[0]->toString(exec).qstring().lower() == "2d")) {
                   return new Context2D(&element);
               }
  -            return Undefined();
  +            return jsUndefined();
           }
       }
   
  -    return Undefined();
  +    return jsUndefined();
   }
   
   void KJS::HTMLElement::put(ExecState *exec, const Identifier &propertyName, ValueImp *value, int attr)
  @@ -3323,7 +3323,7 @@
   ValueImp *HTMLCollection::lengthGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
   {
       HTMLCollection *thisObj = static_cast<HTMLCollection *>(slot.slotBase());
  -    return Number(thisObj->m_impl->length());
  +    return jsNumber(thisObj->m_impl->length());
   }
   
   ValueImp *HTMLCollection::indexGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
  @@ -3402,7 +3402,7 @@
         }
       }
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   ValueImp *KJS::HTMLCollection::getNamedItems(ExecState *exec, const Identifier &propertyName) const
  @@ -3418,7 +3418,7 @@
   #ifdef KJS_VERBOSE
       kdDebug(6070) << "not found" << endl;
   #endif
  -    return Undefined();
  +    return jsUndefined();
     }
   
     if (namedItems.count() == 1)
  @@ -3441,7 +3441,7 @@
     case KJS::HTMLCollection::NamedItem:
       return static_cast<HTMLCollection *>(thisObj)->getNamedItems(exec, Identifier(args[0]->toString(exec)));
     default:
  -    return Undefined();
  +    return jsUndefined();
     }
   }
   
  @@ -3455,14 +3455,14 @@
   ValueImp *HTMLSelectCollection::selectedIndexGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
   {
       HTMLSelectCollection *thisObj = static_cast<HTMLSelectCollection *>(slot.slotBase());
  -    return Number(thisObj->m_element->selectedIndex());
  +    return jsNumber(thisObj->m_element->selectedIndex());
   }
   
   bool HTMLSelectCollection::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot& slot)
   {
     if (propertyName == "selectedIndex") {
       slot.setCustom(this, selectedIndexGetter);
  -    //result = Number(m_element->selectedIndex());
  +    //result = jsNumber(m_element->selectedIndex());
       return true;
     }
   
  @@ -3560,7 +3560,7 @@
   
     // no. of arguments for constructor
     // ## is 4 correct ? 0 to 4, it seems to be
  -  put(exec,lengthPropertyName, Number(4), ReadOnly|DontDelete|DontEnum);
  +  put(exec,lengthPropertyName, jsNumber(4), ReadOnly|DontDelete|DontEnum);
   }
   
   bool OptionConstructorImp::implementsConstruct() const
  @@ -3650,34 +3650,34 @@
     case Src:
       return jsString(doc ? doc->completeURL(src.domString()) : src);
     case Complete:
  -    return Boolean(!img || img->status() >= khtml::CachedObject::Persistent);
  +    return jsBoolean(!img || img->status() >= khtml::CachedObject::Persistent);
     case OnLoad:
       if (onLoadListener && onLoadListener->listenerObjImp()) {
         return onLoadListener->listenerObj();
       } else {
  -      return Null();
  +      return jsNull();
       }
     case Width: {
       if (widthSet)
  -        return Number(width);
  +        return jsNumber(width);
       int w = 0;
       if (img) {
         QSize size = img->pixmap_size();
         if (size.isValid())
           w = size.width();
       }
  -    return Number(w);
  +    return jsNumber(w);
     }
     case Height: {
       if (heightSet)
  -        return Number(height);
  +        return jsNumber(height);
       int h = 0;
       if (img) {
         QSize size = img->pixmap_size();
         if (size.isValid())
           h = size.height();
       }
  -    return Number(h);
  +    return jsNumber(h);
     }
     default:
       kdWarning() << "Image::getValueProperty unhandled token " << token << endl;
  @@ -3771,11 +3771,11 @@
       Context2D *contextObject = static_cast<KJS::Context2D *>(thisObj);
       khtml::RenderCanvasImage *renderer = static_cast<khtml::RenderCanvasImage*>(contextObject->_element->renderer());
       if (!renderer)
  -        return Undefined();
  +        return jsUndefined();
   
       CGContextRef drawingContext = renderer->drawingContext();
       if (!drawingContext)
  -        return Undefined();
  +        return jsUndefined();
       
       switch (id) {
           case Context2D::Save: {
  @@ -4284,7 +4284,7 @@
                   }
                   else {
                       // No image.
  -                    return Undefined();
  +                    return jsUndefined();
                   }
                   w = pixmap.width();
                   h = pixmap.height();
  @@ -4302,7 +4302,7 @@
                   khtml::RenderCanvasImage *renderer = static_cast<khtml::RenderCanvasImage*>(e->renderer());
                   if (!renderer) {
                       // No renderer, nothing to draw.
  -                    return Undefined();
  +                    return jsUndefined();
                   }
   
                   sourceContext = renderer->drawingContext();
  @@ -4472,7 +4472,7 @@
           }
       }
   
  -    return Undefined();
  +    return jsUndefined();
   }
   
   const ClassInfo Context2D::info = { "Context2D", 0, &Context2DTable, 0 };
  @@ -4590,7 +4590,7 @@
           }
       }
       
  -    return Undefined();
  +    return jsUndefined();
   }
   
   void Context2D::put(ExecState *exec, const Identifier &propertyName, ValueImp *value, int attr)
  @@ -4883,21 +4883,21 @@
       _globalAlpha(jsUndefined()),
       _globalComposite(jsUndefined())
   {
  -    _lineWidth = Number (1.);
  -    _strokeStyle = String ("black");
  -    _fillStyle = String ("black");
  +    _lineWidth = jsNumber(1);
  +    _strokeStyle = jsString("black");
  +    _fillStyle = jsString("black");
       
  -    _lineCap = String("butt");
  -    _lineJoin = String("miter");
  -    _miterLimit = Number(10.0);
  +    _lineCap = jsString("butt");
  +    _lineJoin = jsString("miter");
  +    _miterLimit = jsNumber(10);
       
  -    _shadowOffsetX = Number(0.);
  -    _shadowOffsetY = Number(0.);
  -    _shadowBlur = Number(0.);
  -    _shadowColor = String("black");
  +    _shadowOffsetX = jsNumber(0);
  +    _shadowOffsetY = jsNumber(0);
  +    _shadowBlur = jsNumber(0);
  +    _shadowColor = jsString("black");
           
  -    _globalAlpha = Number(1.);
  -    _globalComposite = String("source-over");
  +    _globalAlpha = jsNumber(1);
  +    _globalComposite = jsString("source-over");
       
       stateStack.setAutoDelete(true);
   }
  @@ -4995,7 +4995,7 @@
           }
       }
   
  -    return Undefined();
  +    return jsUndefined();
   }
   
   void gradientCallback (void *info, const float *in, float *out)
  @@ -5096,7 +5096,7 @@
   
   ValueImp *Gradient::getValueProperty(ExecState *, int token) const
   {
  -    return Undefined();
  +    return jsUndefined();
   }
   
   void Gradient::put(ExecState *exec, const Identifier &propertyName, ValueImp *value, int attr)
  @@ -5292,7 +5292,7 @@
   
   ValueImp *ImagePattern::getValueProperty(ExecState *, int token) const
   {
  -    return Undefined();
  +    return jsUndefined();
   }
   
   void ImagePattern::put(ExecState *exec, const Identifier &propertyName, ValueImp *value, int attr)
  @@ -5316,7 +5316,7 @@
   {
     DOMObject *ret;
     if (!c)
  -    return Null();
  +    return jsNull();
     ScriptInterpreter* interp = static_cast<ScriptInterpreter *>(exec->dynamicInterpreter());
     if ((ret = interp->getDOMObject(c)))
       return ret;
  
  
  
  1.38      +32 -32    WebCore/khtml/ecma/kjs_navigator.cpp
  
  Index: kjs_navigator.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_navigator.cpp,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- kjs_navigator.cpp	21 Nov 2005 01:19:56 -0000	1.37
  +++ kjs_navigator.cpp	11 Dec 2005 00:38:02 -0000	1.38
  @@ -171,58 +171,58 @@
     QString userAgent = KWQ(m_part)->userAgent();
     switch (token) {
     case AppCodeName:
  -    return String("Mozilla");
  +    return jsString("Mozilla");
     case AppName:
       // If we find "Mozilla" but not "(compatible, ...)" we are a real Netscape
       if (userAgent.find(QString::fromLatin1("Mozilla")) >= 0 &&
           userAgent.find(QString::fromLatin1("compatible")) == -1)
       {
         //kdDebug() << "appName -> Mozilla" << endl;
  -      return String("Netscape");
  +      return jsString("Netscape");
       }
       if (userAgent.find(QString::fromLatin1("Microsoft")) >= 0 ||
           userAgent.find(QString::fromLatin1("MSIE")) >= 0)
       {
         //kdDebug() << "appName -> IE" << endl;
  -      return String("Microsoft Internet Explorer");
  +      return jsString("Microsoft Internet Explorer");
       }
       // FIXME: Should we define a fallback result here besides "Konqueror"?
  -    return Undefined();
  +    return jsUndefined();
     case AppVersion:
       // We assume the string is something like Mozilla/version (properties)
  -    return String(userAgent.mid(userAgent.find('/') + 1));
  +    return jsString(userAgent.mid(userAgent.find('/') + 1));
     case Product:
       // When acting normal, we pretend to be "Gecko".
       if (userAgent.find("Mozilla/5.0") >= 0 && userAgent.find("compatible") == -1) {
  -        return String("Gecko");
  +        return jsString("Gecko");
       }
  -    // When spoofing as IE, we use Undefined().
  -    return Undefined();
  +    // When spoofing as IE, we use jsUndefined().
  +    return jsUndefined();
     case ProductSub:
  -    return String("20030107");
  +    return jsString("20030107");
     case Vendor:
  -    return String("Apple Computer, Inc.");
  +    return jsString("Apple Computer, Inc.");
     case Language:
       // We don't have an implementation of KGlobal::locale().  We do however
       // have a static method on KLocale to access the current language.
  -    return String(KLocale::language());
  +    return jsString(KLocale::language());
     case UserAgent:
  -    return String(userAgent);
  +    return jsString(userAgent);
     case Platform:
       // yet another evil hack, but necessary to spoof some sites...
       if ( (userAgent.find(QString::fromLatin1("Win"),0,false)>=0) )
  -      return String(QString::fromLatin1("Win32"));
  +      return jsString(QString::fromLatin1("Win32"));
       else if ( (userAgent.find(QString::fromLatin1("Macintosh"),0,false)>=0) ||
                 (userAgent.find(QString::fromLatin1("Mac_PowerPC"),0,false)>=0) )
  -      return String(QString::fromLatin1("MacPPC"));
  +      return jsString(QString::fromLatin1("MacPPC"));
       else
  -      return String(QString::fromLatin1("X11"));
  +      return jsString(QString::fromLatin1("X11"));
     case _Plugins:
       return new Plugins(exec);
     case _MimeTypes:
       return new MimeTypes(exec);
     case CookieEnabled:
  -    return Boolean(KWQKCookieJar::cookieEnabled());
  +    return jsBoolean(KWQKCookieJar::cookieEnabled());
     default:
       kdWarning() << "Unhandled token in DOMEvent::getValueProperty : " << token << endl;
       return NULL;
  @@ -334,7 +334,7 @@
   ValueImp *Plugins::getValueProperty(ExecState *exec, int token) const
   {
     assert(token == Length);
  -  return Number(plugins->count());
  +  return jsNumber(plugins->count());
   }
   
   ValueImp *Plugins::indexGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
  @@ -349,7 +349,7 @@
         return new Plugin(exec, pl);
       }
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   bool Plugins::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot& slot)
  @@ -393,7 +393,7 @@
   ValueImp *MimeTypes::getValueProperty(ExecState *exec, int token) const
   {
     assert(token == Length);
  -  return Number(plugins->count());
  +  return jsNumber(plugins->count());
   }
   
   ValueImp *MimeTypes::indexGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
  @@ -407,7 +407,7 @@
         if (m->type == propertyName.qstring())
             return new MimeType(exec, m);
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   bool MimeTypes::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot& slot)
  @@ -453,16 +453,16 @@
   {
       switch (token) {
       case Name:
  -        return String(m_info->name);
  +        return jsString(m_info->name);
       case Filename:
  -        return String(m_info->file);
  +        return jsString(m_info->file);
       case Description:
  -        return String(m_info->desc);
  +        return jsString(m_info->desc);
       case Length: 
  -        return Number(m_info->mimes.count());
  +        return jsNumber(m_info->mimes.count());
       default:
           assert(0);
  -        return Undefined();
  +        return jsUndefined();
       }
   }
   
  @@ -479,7 +479,7 @@
           if (m->type == propertyName.qstring())
               return new MimeType(exec, m);
       }
  -    return Undefined();
  +    return jsUndefined();
   }
   
   
  @@ -525,15 +525,15 @@
   {
       switch (token) {
       case Type:
  -        return String(m_info->type);
  +        return jsString(m_info->type);
       case Suffixes:
  -        return String(m_info->suffixes);
  +        return jsString(m_info->suffixes);
       case Description:
  -        return String(m_info->desc);
  +        return jsString(m_info->desc);
       case EnabledPlugin:
           return new Plugin(exec, m_info->plugin);
       default:
  -        return Undefined();
  +        return jsUndefined();
       }
   }
   
  @@ -545,7 +545,7 @@
   ValueImp *PluginsFunc::callAsFunction(ExecState *exec, ObjectImp *, const List &args)
   {
       PluginBase(exec).refresh(args[0]->toBoolean(exec));
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ValueImp *NavigatorFunc::callAsFunction(ExecState *exec, ObjectImp *thisObj, const List &)
  @@ -554,7 +554,7 @@
       return throwError(exec, TypeError);
     Navigator *nav = static_cast<Navigator *>(thisObj);
     // javaEnabled()
  -  return Boolean(nav->part()->javaEnabled());
  +  return jsBoolean(nav->part()->javaEnabled());
   }
   
   } // namespace
  
  
  
  1.27      +1 -1      WebCore/khtml/ecma/kjs_proxy.cpp
  
  Index: kjs_proxy.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_proxy.cpp,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- kjs_proxy.cpp	27 Nov 2005 07:54:50 -0000	1.26
  +++ kjs_proxy.cpp	11 Dec 2005 00:38:02 -0000	1.27
  @@ -246,7 +246,7 @@
   ValueImp *TestFunctionImp::callAsFunction(ExecState *exec, ObjectImp */*thisObj*/, const List &args)
   {
     fprintf(stderr,"--> %s\n",args[0]->toString(exec).ascii());
  -  return Undefined();
  +  return jsUndefined();
   }
   
   void KJSProxyImpl::initScript()
  
  
  
  1.18      +5 -5      WebCore/khtml/ecma/kjs_range.cpp
  
  Index: kjs_range.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_range.cpp,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- kjs_range.cpp	3 Oct 2005 21:12:13 -0000	1.17
  +++ kjs_range.cpp	11 Dec 2005 00:38:02 -0000	1.18
  @@ -101,9 +101,9 @@
     case EndContainer:
       return getDOMNode(exec, range.endContainer(exception));
     case EndOffset:
  -    return Number(range.endOffset(exception));
  +    return jsNumber(range.endOffset(exception));
     case Collapsed:
  -    return Boolean(range.collapsed(exception));
  +    return jsBoolean(range.collapsed(exception));
     case CommonAncestorContainer:
       return getDOMNode(exec, range.commonAncestorContainer(exception));
     default:
  @@ -117,7 +117,7 @@
     if (!thisObj->inherits(&KJS::DOMRange::info))
       return throwError(exec, TypeError);
     RangeImpl &range = *static_cast<DOMRange *>(thisObj)->impl();
  -  ValueImp *result = Undefined();
  +  ValueImp *result = jsUndefined();
     int exception = 0;
   
     switch (id) {
  @@ -170,7 +170,7 @@
         result = getDOMRange(exec, range.cloneRange(exception));
         break;
       case DOMRange::ToString:
  -      result = getStringOrNull(range.toString(exception));
  +      result = jsStringOrNull(range.toString(exception));
         break;
       case DOMRange::Detach:
         range.detach(exception);
  @@ -207,7 +207,7 @@
   
   ValueImp *RangeConstructor::getValueProperty(ExecState *, int token) const
   {
  -  return Number(token);
  +  return jsNumber(token);
   }
   
   ValueImp *getRangeConstructor(ExecState *exec)
  
  
  
  1.23      +11 -11    WebCore/khtml/ecma/kjs_traversal.cpp
  
  Index: kjs_traversal.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_traversal.cpp,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- kjs_traversal.cpp	4 Dec 2005 23:14:27 -0000	1.22
  +++ kjs_traversal.cpp	11 Dec 2005 00:38:02 -0000	1.23
  @@ -80,15 +80,15 @@
     case Root:
       return getDOMNode(exec,ni.root());
     case WhatToShow:
  -    return Number(ni.whatToShow());
  +    return jsNumber(ni.whatToShow());
     case Filter:
       return getDOMNodeFilter(exec,ni.filter());
     case ExpandEntityReferences:
  -    return Boolean(ni.expandEntityReferences());
  +    return jsBoolean(ni.expandEntityReferences());
     case ReferenceNode:
       return getDOMNode(exec,ni.referenceNode());
     case PointerBeforeReferenceNode:
  -    return Boolean(ni.pointerBeforeReferenceNode());
  +    return jsBoolean(ni.pointerBeforeReferenceNode());
    default:
      kdWarning() << "Unhandled token in DOMNodeIterator::getValueProperty : " << token << endl;
      return NULL;
  @@ -108,9 +108,9 @@
       return getDOMNode(exec,nodeIterator.nextNode(exception));
     case DOMNodeIterator::Detach:
       nodeIterator.detach(exception);
  -    return Undefined();
  +    return jsUndefined();
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   ValueImp *getDOMNodeIterator(ExecState *exec, NodeIteratorImpl *ni)
  @@ -150,7 +150,7 @@
   ValueImp *NodeFilterConstructor::getValueProperty(ExecState *, int token) const
   {
     // We use the token as the value to return directly
  -  return Number(token);
  +  return jsNumber(token);
   }
   
   ValueImp *getNodeFilterConstructor(ExecState *exec)
  @@ -188,9 +188,9 @@
     NodeFilterImpl &nodeFilter = *static_cast<DOMNodeFilter *>(thisObj)->impl();
     switch (id) {
       case DOMNodeFilter::AcceptNode:
  -      return Number(nodeFilter.acceptNode(toNode(args[0])));
  +      return jsNumber(nodeFilter.acceptNode(toNode(args[0])));
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   ValueImp *getDOMNodeFilter(ExecState *exec, NodeFilterImpl *nf)
  @@ -253,11 +253,11 @@
     case Root:
       return getDOMNode(exec,tw.root());
     case WhatToShow:
  -    return Number(tw.whatToShow());
  +    return jsNumber(tw.whatToShow());
     case Filter:
       return getDOMNodeFilter(exec,tw.filter());
     case ExpandEntityReferences:
  -    return Boolean(tw.expandEntityReferences());
  +    return jsBoolean(tw.expandEntityReferences());
     case CurrentNode:
       return getDOMNode(exec,tw.currentNode());
     default:
  @@ -298,7 +298,7 @@
       case DOMTreeWalker::NextNode:
         return getDOMNode(exec,treeWalker.nextNode());
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   ValueImp *getDOMTreeWalker(ExecState *exec, TreeWalkerImpl *tw)
  
  
  
  1.19      +3 -3      WebCore/khtml/ecma/kjs_views.cpp
  
  Index: kjs_views.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_views.cpp,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- kjs_views.cpp	7 Dec 2005 01:12:37 -0000	1.18
  +++ kjs_views.cpp	11 Dec 2005 00:38:02 -0000	1.19
  @@ -86,7 +86,7 @@
       case DOMAbstractView::GetComputedStyle: {
           ElementImpl *arg0 = toElement(args[0]);
           if (!arg0)
  -          return Undefined(); // throw exception?
  +          return jsUndefined(); // throw exception?
           else {
             if (DocumentImpl* doc = arg0->getDocument())
               doc->updateLayoutIgnorePendingStylesheets();
  @@ -96,7 +96,7 @@
       case DOMAbstractView::GetMatchedCSSRules: {
           ElementImpl *arg0 = toElement(args[0]);
           if (!arg0)
  -            return Undefined(); // throw exception?
  +            return jsUndefined(); // throw exception?
           else {
               // No need to update layout, since we just want the back-end rules.
               return getDOMCSSRuleList(exec, abstractView.getMatchedCSSRules(arg0,
  @@ -104,7 +104,7 @@
           }
       }
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   ValueImp *getDOMAbstractView(ExecState *exec, AbstractViewImpl *av)
  
  
  
  1.195     +123 -123  WebCore/khtml/ecma/kjs_window.cpp
  
  Index: kjs_window.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_window.cpp,v
  retrieving revision 1.194
  retrieving revision 1.195
  diff -u -r1.194 -r1.195
  --- kjs_window.cpp	10 Dec 2005 17:14:36 -0000	1.194
  +++ kjs_window.cpp	11 Dec 2005 00:38:02 -0000	1.195
  @@ -173,33 +173,33 @@
   
     switch( token ) {
     case Height:
  -    return Number(sg.height());
  +    return jsNumber(sg.height());
     case Width:
  -    return Number(sg.width());
  +    return jsNumber(sg.width());
     case ColorDepth:
     case PixelDepth: {
       QPaintDeviceMetrics m(QApplication::desktop());
  -    return Number(m.depth());
  +    return jsNumber(m.depth());
     }
     case AvailLeft: {
       QRect clipped = info.workArea().intersect(sg);
  -    return Number(clipped.x()-sg.x());
  +    return jsNumber(clipped.x()-sg.x());
     }
     case AvailTop: {
       QRect clipped = info.workArea().intersect(sg);
  -    return Number(clipped.y()-sg.y());
  +    return jsNumber(clipped.y()-sg.y());
     }
     case AvailHeight: {
       QRect clipped = info.workArea().intersect(sg);
  -    return Number(clipped.height());
  +    return jsNumber(clipped.height());
     }
     case AvailWidth: {
       QRect clipped = info.workArea().intersect(sg);
  -    return Number(clipped.width());
  +    return jsNumber(clipped.width());
     }
     default:
       kdWarning() << "Screen::getValueProperty unhandled token " << token << endl;
  -    return Undefined();
  +    return jsUndefined();
     }
   }
   
  @@ -399,7 +399,7 @@
   #endif
       return proxy->interpreter()->globalObject(); // the Global object is the "window"
     } else
  -    return Undefined(); // This can happen with JS disabled on the domain of that window
  +    return jsUndefined(); // This can happen with JS disabled on the domain of that window
   }
   
   Location *Window::location() const
  @@ -621,7 +621,7 @@
       UString URL = args[0]->toString(exec);
   
       if (!canShowModalDialogNow(openerWindow) || !allowPopUp(exec, openerWindow))
  -        return Undefined();
  +        return jsUndefined();
       
       const QMap<QString, QString> features = parseFeatures(exec, args[2]);
   
  @@ -668,10 +668,10 @@
   
       KHTMLPart *dialogPart = createNewWindow(exec, openerWindow, URL.qstring(), "", wargs, args[1]);
       if (!dialogPart)
  -        return Undefined();
  +        return jsUndefined();
   
       Window *dialogWindow = Window::retrieveWindow(dialogPart);
  -    ValueImp *returnValue = Undefined();
  +    ValueImp *returnValue = jsUndefined();
       dialogWindow->setReturnValueSlot(&returnValue);
       static_cast<KHTMLPartBrowserExtension *>(dialogPart->browserExtension())->runModal();
       dialogWindow->setReturnValueSlot(NULL);
  @@ -684,13 +684,13 @@
   
      switch (token) {
      case Closed:
  -      return Boolean(m_part.isNull());
  +      return jsBoolean(m_part.isNull());
      case Crypto:
  -      return Undefined(); // ###
  +      return jsUndefined(); // ###
      case DefaultStatus:
  -      return String(UString(m_part->jsDefaultStatusBarText()));
  +      return jsString(UString(m_part->jsDefaultStatusBarText()));
      case Status:
  -      return String(UString(m_part->jsStatusBarText()));
  +      return jsString(UString(m_part->jsStatusBarText()));
       case Node:
         return getNodeConstructor(exec);
       case Range:
  @@ -713,22 +713,22 @@
         return history;
       case Event:
         if (!m_evt)
  -        return Undefined();
  +        return jsUndefined();
         return getDOMEvent(exec, m_evt);
       case InnerHeight:
         if (!m_part->view())
  -        return Undefined();
  -      return Number(m_part->view()->visibleHeight());
  +        return jsUndefined();
  +      return jsNumber(m_part->view()->visibleHeight());
       case InnerWidth:
         if (!m_part->view())
  -        return Undefined();
  -      return Number(m_part->view()->visibleWidth());
  +        return jsUndefined();
  +      return jsNumber(m_part->view()->visibleWidth());
       case Length:
  -      return Number(m_part->frames().count());
  +      return jsNumber(m_part->frames().count());
       case _Location:
         return location();
       case Name:
  -      return String(m_part->name());
  +      return jsString(m_part->name());
       case _Navigator:
       case ClientInformation: {
         // Store the navigator in the object so we get the same one each time.
  @@ -744,32 +744,32 @@
       case Menubar:
         return menubar(exec);
       case OffscreenBuffering:
  -      return Boolean(true);
  +      return jsBoolean(true);
       case Opener:
         if (m_part->opener())
           return retrieve(m_part->opener());
         else
  -        return Null();
  +        return jsNull();
       case OuterHeight:
       case OuterWidth:
       {
         if (m_part->view()) {
           KWin::Info inf = KWin::info(m_part->view()->topLevelWidget()->winId());
  -        return Number(token == OuterHeight ?
  +        return jsNumber(token == OuterHeight ?
                         inf.geometry.height() : inf.geometry.width());
         } else
  -        return Number(0);
  +        return jsNumber(0);
       }
       case PageXOffset:
         if (!m_part->view())
  -        return Undefined();
  +        return jsUndefined();
         updateLayout();
  -      return Number(m_part->view()->contentsX());
  +      return jsNumber(m_part->view()->contentsX());
       case PageYOffset:
         if (!m_part->view())
  -        return Undefined();
  +        return jsUndefined();
         updateLayout();
  -      return Number(m_part->view()->contentsY());
  +      return jsNumber(m_part->view()->contentsY());
       case Parent:
         return retrieve(m_part->parentPart() ? m_part->parentPart() : (KHTMLPart*)m_part);
       case Personalbar:
  @@ -781,28 +781,28 @@
           // the windowFrame method of the WebKit's UI delegate. Also we don't want to try
           // to do anything relative to the screen the window is on, so the code below is no
           // good of us anyway.
  -        return Number(m_part->view()->topLevelWidget()->frameGeometry().x());
  +        return jsNumber(m_part->view()->topLevelWidget()->frameGeometry().x());
         } else
  -        return Undefined();
  +        return jsUndefined();
       }
       case ScreenTop:
       case ScreenY: {
         if (m_part->view()) {
           // See comment above in ScreenX.
  -        return Number(m_part->view()->topLevelWidget()->frameGeometry().y());
  +        return jsNumber(m_part->view()->topLevelWidget()->frameGeometry().y());
         } else 
  -        return Undefined();
  +        return jsUndefined();
       }
       case ScrollX:
         if (!m_part->view())
  -        return Undefined();
  +        return jsUndefined();
         updateLayout();
  -      return Number(m_part->view()->contentsX());
  +      return jsNumber(m_part->view()->contentsX());
       case ScrollY:
         if (!m_part->view())
  -        return Undefined();
  +        return jsUndefined();
         updateLayout();
  -      return Number(m_part->view()->contentsY());
  +      return jsNumber(m_part->view()->contentsY());
       case Scrollbars:
         return scrollbars(exec);
       case Statusbar:
  @@ -839,7 +839,7 @@
         return new XSLTProcessorConstructorImp(exec);
   #else
       case XSLTProcessor:
  -      return Undefined();
  +      return jsUndefined();
   #endif
       case FrameElement:
         if (DocumentImpl *doc = m_part->xmlDocImpl())
  @@ -847,11 +847,11 @@
             if (checkNodeSecurity(exec, fe)) {
               return getDOMNode(exec, fe);
             }
  -      return Undefined();
  +      return jsUndefined();
      }
   
      if (!isSafeScript(exec))
  -     return Undefined();
  +     return jsUndefined();
   
      switch (token) {
      case Document:
  @@ -918,7 +918,7 @@
        return getListener(exec,scrollEvent);
      }
      assert(0);
  -   return Undefined();
  +   return jsUndefined();
   }
   
   ValueImp *Window::childFrameGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
  @@ -1370,16 +1370,16 @@
   ValueImp *Window::getListener(ExecState *exec, const AtomicString &eventType) const
   {
     if (!isSafeScript(exec))
  -    return Undefined();
  +    return jsUndefined();
     DOM::DocumentImpl *doc = m_part->xmlDocImpl();
     if (!doc)
  -    return Undefined();
  +    return jsUndefined();
   
     DOM::EventListener *listener = doc->getHTMLWindowEventListener(eventType);
     if (listener && static_cast<JSEventListener*>(listener)->listenerObjImp())
       return static_cast<JSEventListener*>(listener)->listenerObj();
     else
  -    return Null();
  +    return jsNull();
   }
   
   JSEventListener *Window::getJSEventListener(ValueImp *val, bool html)
  @@ -1450,7 +1450,7 @@
   
     KHTMLPart *part = window->m_part;
     if (!part)
  -    return Undefined();
  +    return jsUndefined();
   
     KHTMLView *widget = part->view();
     ValueImp *v = args[0];
  @@ -1462,20 +1462,20 @@
       if (part && part->xmlDocImpl())
         part->xmlDocImpl()->updateRendering();
       KWQ(part)->runJavaScriptAlert(str);
  -    return Undefined();
  +    return jsUndefined();
     case Window::Confirm:
       if (part && part->xmlDocImpl())
         part->xmlDocImpl()->updateRendering();
  -    return Boolean(KWQ(part)->runJavaScriptConfirm(str));
  +    return jsBoolean(KWQ(part)->runJavaScriptConfirm(str));
     case Window::Prompt:
       if (part && part->xmlDocImpl())
         part->xmlDocImpl()->updateRendering();
       bool ok;
       ok = KWQ(part)->runJavaScriptPrompt(str, args.size() >= 2 ? args[1]->toString(exec).qstring() : QString::null, str2);
       if ( ok )
  -        return String(str2);
  +        return jsString(str2);
       else
  -        return Null();
  +        return jsNull();
     case Window::Open:
     {
       KConfig *config = new KConfig("konquerorrc");
  @@ -1499,7 +1499,7 @@
       QString frameName = args[1]->isUndefinedOrNull() ? QString("_blank") : args[1]->toString(exec).qstring();
   
       if ( policy != 0 && !(part->findFrame(frameName) || frameName == "_top" || frameName == "_parent" || frameName == "_self")) {
  -      return Undefined();
  +      return jsUndefined();
       } else {
         if (v->isUndefined())
           str = QString();
  @@ -1672,23 +1672,23 @@
   	}
           return Window::retrieve(khtmlpart); // global object
         } else
  -        return Undefined();
  +        return jsUndefined();
       }
     }
     case Window::Print:
       part->print();
  -    return Undefined();
  +    return jsUndefined();
     case Window::ScrollBy:
       window->updateLayout();
       if(args.size() >= 2 && widget)
         widget->scrollBy(args[0]->toInt32(exec), args[1]->toInt32(exec));
  -    return Undefined();
  +    return jsUndefined();
     case Window::Scroll:
     case Window::ScrollTo:
       window->updateLayout();
       if(args.size() >= 2 && widget)
         widget->setContentsPos(args[0]->toInt32(exec), args[1]->toInt32(exec));
  -    return Undefined();
  +    return jsUndefined();
     case Window::MoveBy:
       if(args.size() >= 2 && widget)
       {
  @@ -1701,7 +1701,7 @@
              dest.y()+tl->height() <= sg.height()+sg.y() )
           tl->move( dest );
       }
  -    return Undefined();
  +    return jsUndefined();
     case Window::MoveTo:
       if(args.size() >= 2 && widget)
       {
  @@ -1714,7 +1714,7 @@
              dest.y()+tl->height() <= sg.height()+sg.y() )
           tl->move( dest );
       }
  -    return Undefined();
  +    return jsUndefined();
     case Window::ResizeBy:
       if(args.size() >= 2 && widget)
       {
  @@ -1732,7 +1732,7 @@
           tl->resize( dest.width() - deltaWidth, dest.height() - deltaHeight );
         }
       }
  -    return Undefined();
  +    return jsUndefined();
     case Window::ResizeTo:
       if(args.size() >= 2 && widget)
       {
  @@ -1750,14 +1750,14 @@
           tl->resize( dest.width() - deltaWidth, dest.height() - deltaHeight );
         }
       }
  -    return Undefined();
  +    return jsUndefined();
     case Window::SetTimeout:
       if (!window->isSafeScript(exec))
  -        return Undefined();
  +        return jsUndefined();
       if (args.size() >= 2 && v->isString()) {
         int i = args[1]->toInt32(exec);
         int r = (const_cast<Window*>(window))->installTimeout(s, i, true /*single shot*/);
  -      return Number(r);
  +      return jsNumber(r);
       }
       else if (args.size() >= 2 && v->isObject() && static_cast<ObjectImp *>(v)->implementsCall()) {
         ValueImp *func = args[0];
  @@ -1768,17 +1768,17 @@
         List funcArgs = args.copyTail().copyTail();
   
         int r = (const_cast<Window*>(window))->installTimeout(func, funcArgs, i, true /*single shot*/);
  -      return Number(r);
  +      return jsNumber(r);
       }
       else
  -      return Undefined();
  +      return jsUndefined();
     case Window::SetInterval:
       if (!window->isSafeScript(exec))
  -        return Undefined();
  +        return jsUndefined();
       if (args.size() >= 2 && v->isString()) {
         int i = args[1]->toInt32(exec);
         int r = (const_cast<Window*>(window))->installTimeout(s, i, false);
  -      return Number(r);
  +      return jsNumber(r);
       }
       else if (args.size() >= 2 && v->isObject() && static_cast<ObjectImp *>(v)->implementsCall()) {
         ValueImp *func = args[0];
  @@ -1789,27 +1789,27 @@
         List funcArgs = args.copyTail().copyTail();
   
         int r = (const_cast<Window*>(window))->installTimeout(func, funcArgs, i, false);
  -      return Number(r);
  +      return jsNumber(r);
       }
       else
  -      return Undefined();
  +      return jsUndefined();
     case Window::ClearTimeout:
     case Window::ClearInterval:
       if (!window->isSafeScript(exec))
  -        return Undefined();
  +        return jsUndefined();
       (const_cast<Window*>(window))->clearTimeout(v->toInt32(exec));
  -    return Undefined();
  +    return jsUndefined();
     case Window::Focus:
       if (widget)
         widget->setActiveWindow();
  -    return Undefined();
  +    return jsUndefined();
     case Window::GetSelection:
       if (!window->isSafeScript(exec))
  -        return Undefined();
  +        return jsUndefined();
       return window->selection();
     case Window::Blur:
       KWQ(part)->unfocusWindow();
  -    return Undefined();
  +    return jsUndefined();
     case Window::Close:
       /* From http://developer.netscape.com/docs/manuals/js/client/jsref/window.htm :
          The close method closes only windows opened by JavaScript using the open method.
  @@ -1835,33 +1835,33 @@
       {
         (const_cast<Window*>(window))->scheduleClose();
       }
  -    return Undefined();
  +    return jsUndefined();
     case Window::CaptureEvents:
     case Window::ReleaseEvents:
           // If anyone implements these, they need the safescript security check.
           if (!window->isSafeScript(exec))
  -	    return Undefined();
  +	    return jsUndefined();
   
       // Do nothing for now. These are NS-specific legacy calls.
       break;
     case Window::AddEventListener:
           if (!window->isSafeScript(exec))
  -	    return Undefined();
  +	    return jsUndefined();
           if (JSEventListener *listener = Window::retrieveActive(exec)->getJSEventListener(args[1]))
               if (DocumentImpl *doc = part->xmlDocImpl())
                   doc->addWindowEventListener(AtomicString(args[0]->toString(exec).domString()), listener, args[2]->toBoolean(exec));
  -        return Undefined();
  +        return jsUndefined();
     case Window::RemoveEventListener:
           if (!window->isSafeScript(exec))
  -	    return Undefined();
  +	    return jsUndefined();
           if (JSEventListener *listener = Window::retrieveActive(exec)->getJSEventListener(args[1]))
               if (DocumentImpl *doc = part->xmlDocImpl())
                   doc->removeWindowEventListener(AtomicString(args[0]->toString(exec).domString()), listener, args[2]->toBoolean(exec));
  -        return Undefined();
  +        return jsUndefined();
     case Window::ShowModalDialog:
       return showModalDialog(exec, window, args);
     }
  -  return Undefined();
  +  return jsUndefined();
   }
   
   void Window::updateLayout() const
  @@ -2022,16 +2022,16 @@
     case Length: {
       QPtrList<KParts::ReadOnlyPart> frames = part->frames();
       unsigned int len = frames.count();
  -    return Number(len);
  +    return jsNumber(len);
     }
     case Location:
       // non-standard property, but works in NS and IE
       if (ObjectImp *obj = Window::retrieveWindow(part))
         return obj->get(exec, "location");
  -    return Undefined();
  +    return jsUndefined();
     default:
       assert(0);
  -    return Undefined();
  +    return jsUndefined();
     }
   }
   
  @@ -2045,7 +2045,7 @@
       return Window::retrieve(khtml);
     }
   
  -  return Undefined();
  +  return jsUndefined();
   }
   
   ValueImp *FrameArray::nameGetter(ExecState *exec, const Identifier& propertyName, const PropertySlot& slot)
  @@ -2058,7 +2058,7 @@
       return  Window::retrieve(khtml);
     }
   
  -  return Undefined();
  +  return jsUndefined();
   }
   
   bool FrameArray::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot& slot)
  @@ -2126,7 +2126,7 @@
     KURL url = m_part->url();
     switch (token) {
     case Hash:
  -    return String(url.ref().isNull() ? QString("") : "#" + url.ref());
  +    return jsString(url.ref().isNull() ? QString("") : "#" + url.ref());
     case Host: {
       // Note: this is the IE spec. The NS spec swaps the two, it says
       // "The hostname property is the concatenation of the host and port properties, separated by a colon."
  @@ -2134,26 +2134,26 @@
       UString str = url.host();
       if (url.port())
               str += ":" + QString::number((int)url.port());
  -    return String(str);
  +    return jsString(str);
     }
     case Hostname:
  -    return String(url.host());
  +    return jsString(url.host());
     case Href:
       if (!url.hasPath())
  -      return String(url.prettyURL() + "/");
  +      return jsString(url.prettyURL() + "/");
       else
  -      return String(url.prettyURL());
  +      return jsString(url.prettyURL());
     case Pathname:
  -    return String(url.path().isEmpty() ? QString("/") : url.path());
  +    return jsString(url.path().isEmpty() ? QString("/") : url.path());
     case Port:
  -    return String(url.port() ? QString::number((int)url.port()) : QString::fromLatin1(""));
  +    return jsString(url.port() ? QString::number((int)url.port()) : QString::fromLatin1(""));
     case Protocol:
  -    return String(url.protocol()+":");
  +    return jsString(url.protocol()+":");
     case Search:
  -    return String(url.query());
  +    return jsString(url.query());
     default:
       assert(0);
  -    return Undefined();
  +    return jsUndefined();
     }
   }
   
  @@ -2231,7 +2231,7 @@
   
   ValueImp *Location::toPrimitive(ExecState *exec, Type) const
   {
  -  return String(toString(exec));
  +  return jsString(toString(exec));
   }
   
   UString Location::toString(ExecState *) const
  @@ -2252,7 +2252,7 @@
         
       Window* window = Window::retrieveWindow(part);
       if (!window->isSafeScript(exec) && id != Location::Replace)
  -        return Undefined();
  +        return jsUndefined();
         
       switch (id) {
       case Location::Replace:
  @@ -2293,11 +2293,11 @@
           break;
       }
       case Location::ToString:
  -      return String(location->toString(exec));
  +      return jsString(location->toString(exec));
       }
     } else
       kdDebug(6070) << "LocationFunc::tryExecute - no part!" << endl;
  -  return Undefined();
  +  return jsUndefined();
   }
   
   ////////////////////// Selection Object ////////////////////////
  @@ -2335,7 +2335,7 @@
   {
     const Window* window = Window::retrieveWindow(m_part);
     if (!window) {
  -      return Undefined();
  +      return jsUndefined();
     }
   
     DocumentImpl *docimpl = m_part->xmlDocImpl();
  @@ -2348,28 +2348,28 @@
         return getDOMNode(exec, m_part->selection().base().node());
     case AnchorOffset:
     case BaseOffset:
  -      return Number(m_part->selection().base().offset());
  +      return jsNumber(m_part->selection().base().offset());
     case FocusNode:
     case ExtentNode:
         return getDOMNode(exec, m_part->selection().extent().node());
     case FocusOffset:
     case ExtentOffset:
  -      return Number(m_part->selection().extent().offset());
  +      return jsNumber(m_part->selection().extent().offset());
     case IsCollapsed:
  -      return Boolean(!m_part->selection().isRange());
  +      return jsBoolean(!m_part->selection().isRange());
     case _Type: {
         switch (m_part->selection().state()) {
         case khtml::SelectionController::NONE:
  -          return String("None");
  +          return jsString("None");
         case khtml::SelectionController::CARET:
  -          return String("Caret");
  +          return jsString("Caret");
         case khtml::SelectionController::RANGE:
  -          return String("Range");
  +          return jsString("Range");
         }
     }
     default:
       assert(0);
  -    return Undefined();
  +    return jsUndefined();
     }
   }
   
  @@ -2383,7 +2383,7 @@
   
   ValueImp *Selection::toPrimitive(ExecState *exec, Type) const
   {
  -  return String(toString(exec));
  +  return jsString(toString(exec));
   }
   
   UString Selection::toString(ExecState *) const
  @@ -2459,7 +2459,7 @@
           }
       }
   
  -    return Undefined();
  +    return jsUndefined();
   }
   
   ////////////////////// BarInfo Object ////////////////////////
  @@ -2482,19 +2482,19 @@
       assert(token == Visible);
       switch (m_type) {
       case Locationbar:
  -        return Boolean(KWQ(m_part)->locationbarVisible());
  +        return jsBoolean(KWQ(m_part)->locationbarVisible());
       case Menubar: 
  -        return Boolean(KWQ(m_part)->locationbarVisible());
  +        return jsBoolean(KWQ(m_part)->locationbarVisible());
       case Personalbar:
  -        return Boolean(KWQ(m_part)->personalbarVisible());
  +        return jsBoolean(KWQ(m_part)->personalbarVisible());
       case Scrollbars: 
  -        return Boolean(KWQ(m_part)->scrollbarsVisible());
  +        return jsBoolean(KWQ(m_part)->scrollbarsVisible());
       case Statusbar:
  -        return Boolean(KWQ(m_part)->statusbarVisible());
  +        return jsBoolean(KWQ(m_part)->statusbarVisible());
       case Toolbar:
  -        return Boolean(KWQ(m_part)->toolbarVisible());
  +        return jsBoolean(KWQ(m_part)->toolbarVisible());
       default:
  -        return Boolean(false);
  +        return jsBoolean(false);
       }
   }
   
  @@ -2531,22 +2531,22 @@
     {
       KParts::BrowserExtension *ext = part->browserExtension();
       if ( !ext )
  -      return Number( 0 );
  +      return jsNumber(0);
   
       KParts::BrowserInterface *iface = ext->browserInterface();
       if ( !iface )
  -      return Number( 0 );
  +      return jsNumber(0);
   
       QVariant length = iface->property( "historyLength" );
   
       if ( length.type() != QVariant::UInt )
  -      return Number( 0 );
  +      return jsNumber(0);
   
  -    return Number( length.toUInt() );
  +    return jsNumber( length.toUInt() );
     }
     default:
       kdWarning() << "Unhandled token in History::getValueProperty : " << token << endl;
  -    return Undefined();
  +    return jsUndefined();
     }
   }
   
  @@ -2573,11 +2573,11 @@
       steps = args[0]->toInt32(exec);
       break;
     default:
  -    return Undefined();
  +    return jsUndefined();
     }
   
     history->part->scheduleHistoryNavigation(steps);
  -  return Undefined();
  +  return jsUndefined();
   }
   
   /////////////////////////////////////////////////////////////////////////////
  
  
  
  1.50      +32 -32    WebCore/khtml/ecma/xmlhttprequest.cpp
  
  Index: xmlhttprequest.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/xmlhttprequest.cpp,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- xmlhttprequest.cpp	2 Dec 2005 03:48:06 -0000	1.49
  +++ xmlhttprequest.cpp	11 Dec 2005 00:38:03 -0000	1.50
  @@ -130,12 +130,12 @@
   {
     switch (token) {
     case ReadyState:
  -    return Number(state);
  +    return jsNumber(state);
     case ResponseText:
  -    return getStringOrNull(DOM::DOMString(response));
  +    return jsStringOrNull(DOM::DOMString(response));
     case ResponseXML:
       if (state != Completed) {
  -      return Undefined();
  +      return jsUndefined();
       }
       if (!createdDocument) {
         QString mimeType;
  @@ -165,7 +165,7 @@
       }
   
       if (!typeIsXML) {
  -      return Undefined();
  +      return jsUndefined();
       }
   
       return getDOMNode(exec, responseXML.get());
  @@ -177,13 +177,13 @@
      if (onReadyStateChangeListener && onReadyStateChangeListener->listenerObjImp()) {
        return onReadyStateChangeListener->listenerObj();
      } else {
  -     return Null();
  +     return jsNull();
      }
     case Onload:
      if (onLoadListener && onLoadListener->listenerObjImp()) {
        return onLoadListener->listenerObj();
      } else {
  -     return Null();
  +     return jsNull();
      }
     default:
       kdWarning() << "XMLHttpRequest::getValueProperty unhandled token " << token << endl;
  @@ -410,22 +410,22 @@
   ValueImp *XMLHttpRequest::getAllResponseHeaders() const
   {
     if (responseHeaders.isEmpty()) {
  -    return Undefined();
  +    return jsUndefined();
     }
   
     int endOfLine = responseHeaders.find("\n");
   
     if (endOfLine == -1) {
  -    return Undefined();
  +    return jsUndefined();
     }
   
  -  return String(responseHeaders.mid(endOfLine + 1) + "\n");
  +  return jsString(responseHeaders.mid(endOfLine + 1) + "\n");
   }
   
   ValueImp *XMLHttpRequest::getResponseHeader(const QString& name) const
   {
     if (responseHeaders.isEmpty()) {
  -    return Undefined();
  +    return jsUndefined();
     }
   
     QRegExp headerLinePattern(name + ":", false);
  @@ -442,18 +442,18 @@
   
   
     if (headerLinePos == -1) {
  -    return Undefined();
  +    return jsUndefined();
     }
       
     int endOfLine = responseHeaders.find("\n", headerLinePos + matchLength);
   
  -  return String(responseHeaders.mid(headerLinePos + matchLength, endOfLine - (headerLinePos + matchLength)).stripWhiteSpace());
  +  return jsString(responseHeaders.mid(headerLinePos + matchLength, endOfLine - (headerLinePos + matchLength)).stripWhiteSpace());
   }
   
   ValueImp *XMLHttpRequest::getStatus() const
   {
     if (responseHeaders.isEmpty()) {
  -    return Undefined();
  +    return jsUndefined();
     }
     
     int endOfLine = responseHeaders.find("\n");
  @@ -462,7 +462,7 @@
     int codeEnd = firstLine.find(" ", codeStart + 1);
     
     if (codeStart == -1 || codeEnd == -1) {
  -    return Undefined();
  +    return jsUndefined();
     }
     
     QString number = firstLine.mid(codeStart + 1, codeEnd - (codeStart + 1));
  @@ -470,16 +470,16 @@
     bool ok = false;
     int code = number.toInt(&ok);
     if (!ok) {
  -    return Undefined();
  +    return jsUndefined();
     }
   
  -  return Number(code);
  +  return jsNumber(code);
   }
   
   ValueImp *XMLHttpRequest::getStatusText() const
   {
     if (responseHeaders.isEmpty()) {
  -    return Undefined();
  +    return jsUndefined();
     }
     
     int endOfLine = responseHeaders.find("\n");
  @@ -488,12 +488,12 @@
     int codeEnd = firstLine.find(" ", codeStart + 1);
   
     if (codeStart == -1 || codeEnd == -1) {
  -    return Undefined();
  +    return jsUndefined();
     }
     
     QString statusText = firstLine.mid(codeEnd + 1, endOfLine - (codeEnd + 1)).stripWhiteSpace();
     
  -  return String(statusText);
  +  return jsString(statusText);
   }
   
   void XMLHttpRequest::processSyncLoadResults(const QByteArray &data, const KURL &finalURL, const QString &headers)
  @@ -634,18 +634,18 @@
     switch (id) {
     case XMLHttpRequest::Abort: {
       request->abort();
  -    return Undefined();
  +    return jsUndefined();
     }
     case XMLHttpRequest::GetAllResponseHeaders: {
       if (args.size() != 0) {
  -      return Undefined();
  +      return jsUndefined();
       }
   
       return request->getAllResponseHeaders();
     }
     case XMLHttpRequest::GetResponseHeader: {
       if (args.size() != 1) {
  -      return Undefined();
  +      return jsUndefined();
       }
   
       return request->getResponseHeader(args[0]->toString(exec).qstring());
  @@ -653,7 +653,7 @@
     case XMLHttpRequest::Open:
       {
         if (args.size() < 2 || args.size() > 5) {
  -	return Undefined();
  +	return jsUndefined();
         }
       
         QString method = args[0]->toString(exec).qstring();
  @@ -674,16 +674,16 @@
   
         request->open(method, url, async);
   
  -      return Undefined();
  +      return jsUndefined();
       }
     case XMLHttpRequest::Send:
       {
         if (args.size() > 1) {
  -	return Undefined();
  +	return jsUndefined();
         }
   
         if (request->state != Loading) {
  -	return Undefined();
  +	return jsUndefined();
         }
   
         QString body;
  @@ -702,27 +702,27 @@
   
         request->send(body);
   
  -      return Undefined();
  +      return jsUndefined();
       }
     case XMLHttpRequest::SetRequestHeader: {
       if (args.size() != 2) {
  -      return Undefined();
  +      return jsUndefined();
       }
       
       request->setRequestHeader(args[0]->toString(exec).qstring(), args[1]->toString(exec).qstring());
       
  -    return Undefined();
  +    return jsUndefined();
     }
     case XMLHttpRequest::OverrideMIMEType: {
       if (args.size() != 1) {
  -      return Undefined();
  +      return jsUndefined();
       }
       request->MIMETypeOverride = args[0]->toString(exec).qstring();
  -    return Undefined();
  +    return jsUndefined();
     }
     }
   
  -  return Undefined();
  +  return jsUndefined();
   }
   
   } // end namespace
  
  
  
  1.10      +4 -4      WebCore/khtml/ecma/xmlserializer.cpp
  
  Index: xmlserializer.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/xmlserializer.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- xmlserializer.cpp	3 Oct 2005 21:12:14 -0000	1.9
  +++ xmlserializer.cpp	11 Dec 2005 00:38:03 -0000	1.10
  @@ -80,19 +80,19 @@
     case XMLSerializer::SerializeToString:
       {
         if (args.size() != 1) {
  -	return Undefined();
  +	return jsUndefined();
         }
   
         if (!args[0]->toObject(exec)->inherits(&DOMNode::info)) {
  -	return Undefined();
  +	return jsUndefined();
         }
   
         NodeImpl *node = static_cast<NodeImpl *>(static_cast<DOMNode *>(args[0]->toObject(exec))->impl());
  -      return getStringOrNull(node->toString());
  +      return jsStringOrNull(node->toString());
       }
     }
   
  -  return Undefined();
  +  return jsUndefined();
   }
   
   } // end namespace
  
  
  
  1.9       +2 -2      WebCore/ksvg2/ecma/Ecma.cpp
  
  Index: Ecma.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/ksvg2/ecma/Ecma.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Ecma.cpp	21 Nov 2005 08:29:30 -0000	1.8
  +++ Ecma.cpp	11 Dec 2005 00:38:07 -0000	1.9
  @@ -401,11 +401,11 @@
   KJS::ValueImp *KSVG::getSVGPathSeg(KJS::ExecState *exec, SVGPathSeg s)
   {
       if(s == SVGPathSeg::null)
  -        return KJS::Null();
  +        return KJS::jsNull();
   
       KDOM::ScriptInterpreter *interpreter = static_cast<KDOM::ScriptInterpreter *>(exec->interpreter());
       if(!interpreter)
  -        return KJS::Null();
  +        return KJS::jsNull();
       
       // Reuse existing bridge, if possible
       KJS::ObjectImp *request = interpreter->getDOMObject(s.handle());
  
  
  
  1.8       +1 -1      WebCore/ksvg2/ecma/GlobalObject.cpp
  
  Index: GlobalObject.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/ksvg2/ecma/GlobalObject.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- GlobalObject.cpp	21 Nov 2005 08:29:30 -0000	1.7
  +++ GlobalObject.cpp	11 Dec 2005 00:38:07 -0000	1.8
  @@ -103,7 +103,7 @@
       // This isn't necessarily a bug. Some code uses if(!window.blah) window.blah=1
       // But it can also mean something isn't loaded or implemented...
       kdDebug(26004) << "GlobalObject::get property not found: " << p.qstring() << endl;
  -    return KJS::Undefined();
  +    return KJS::jsUndefined();
   }
   
   // vim:ts=4:noet
  
  
  
  1.6       +1 -1      WebCore/kwq/WebCoreScriptDebugger.mm
  
  Index: WebCoreScriptDebugger.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/WebCoreScriptDebugger.mm,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- WebCoreScriptDebugger.mm	27 Nov 2005 07:54:53 -0000	1.5
  +++ WebCoreScriptDebugger.mm	11 Dec 2005 00:38:07 -0000	1.6
  @@ -338,7 +338,7 @@
       if (eval) {
           JSLock lock;
           List args;
  -        args.append(String(code));
  +        args.append(jsString(code));
           result = eval->call(state, NULL, args);
       }
       else {
  
  
  



More information about the webkit-changes mailing list