Ignore:
Timestamp:
Oct 13, 2011, 12:24:53 PM (14 years ago)
Author:
[email protected]
Message:

De-virtualized JSCell::toNumber
https://bugs.webkit.org/show_bug.cgi?id=69858

Reviewed by Sam Weinig.

Source/JavaScriptCore:

Removed JSCallbackObject::toNumber because its no longer necessary since
JSObject::toNumber now suffices since we implicitly add valueOf to an object's
prototype whenever a convertToType callback is provided.

  • API/JSCallbackObject.h:
  • API/JSCallbackObjectFunctions.h:
  • JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:

De-virtualized JSCell::toNumber, JSObject::toNumber, and JSString::toNumber.

  • runtime/JSCell.cpp:

(JSC::JSCell::toNumber):

  • runtime/JSCell.h:
  • runtime/JSObject.h:
  • runtime/JSString.h:

Removed JSNotAnObject::toNumber because its result doesn't matter and it implements
defaultValue, therefore JSObject::toNumber can cover its case.

  • runtime/JSNotAnObject.cpp:
  • runtime/JSNotAnObject.h:

Source/JavaScriptGlue:

Removed UserObjectImp::toNumber because it's no longer necessary since
JSObject::toNumber can cover this case.

  • UserObjectImp.cpp:
  • UserObjectImp.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptGlue/UserObjectImp.cpp

    r97292 r97381  
    295295}
    296296
    297 double UserObjectImp::toNumber(ExecState *exec) const
    298 {
    299     double result = 0;
    300     JSUserObject* jsObjPtr = KJSValueToJSObject(toObject(exec, exec->lexicalGlobalObject()), exec);
    301     CFTypeRef cfValue = jsObjPtr ? jsObjPtr->CopyCFValue() : 0;
    302     if (cfValue)
    303     {
    304         CFTypeID cfType = CFGetTypeID(cfValue);
    305 
    306         if (cfValue == GetCFNull())
    307         {
    308             //
    309         }
    310         else if (cfType == CFBooleanGetTypeID())
    311         {
    312             if (cfValue == kCFBooleanTrue)
    313             {
    314                 result = 1;
    315             }
    316         }
    317         else if (cfType == CFStringGetTypeID())
    318         {
    319             result = CFStringGetDoubleValue((CFStringRef)cfValue);
    320         }
    321         else if (cfType == CFNumberGetTypeID())
    322         {
    323             CFNumberGetValue((CFNumberRef)cfValue, kCFNumberDoubleType, &result);
    324         }
    325     }
    326     ReleaseCFType(cfValue);
    327     if (jsObjPtr) jsObjPtr->Release();
    328     return result;
    329 }
    330 
    331297void UserObjectImp::visitChildren(JSCell* cell, SlotVisitor& visitor)
    332298{
Note: See TracChangeset for help on using the changeset viewer.