Ignore:
Timestamp:
Oct 4, 2011, 7:38:49 PM (14 years ago)
Author:
[email protected]
Message:

Some JSValue cleanup
https://bugs.webkit.org/show_bug.cgi?id=69320

../JavaScriptCore:

Reviewed by Darin Adler.

No measurable performance change.

Removed some JSValue::get* functions. get* used to be an optimization
when every value operation was a virtual function call: get* would combine
two virtual calls into one. Now, with non-virtual, inlined functions, get*
isn't faster, and may be slightly slower.

Merged getBoolean(bool&) and getBoolean() into asBoolean().

Merged uncheckedGetNumber(), getJSNumber() and getNumber() into
asNumber().

  • runtime/JSValue.h:
  • runtime/JSValueInlineMethods.h:

(JSC::JSValue::asNumber):
(JSC::JSValue::asBoolean): As promised!

  • runtime/NumberPrototype.cpp:

(JSC::toThisNumber):
(JSC::numberProtoFuncToExponential):
(JSC::numberProtoFuncToFixed):
(JSC::numberProtoFuncToPrecision):
(JSC::numberProtoFuncToString):
(JSC::numberProtoFuncToLocaleString):
(JSC::numberProtoFuncValueOf): Removed a bunch of uses of getJSNumber()
by switching to toThisNumber().

  • API/JSCallbackObjectFunctions.h:

(JSC::::toNumber):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::valueOfNumberConstant):
(JSC::DFG::Graph::valueOfBooleanConstant):

  • dfg/DFGOperations.cpp:

(JSC::DFG::putByVal):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::privateExecute):

  • jit/JITStubs.cpp:

(JSC::DEFINE_STUB_FUNCTION):

  • runtime/DateInstance.h:

(JSC::DateInstance::internalNumber):

  • runtime/FunctionPrototype.cpp:

(JSC::functionProtoFuncBind):

  • runtime/JSArray.cpp:

(JSC::compareNumbersForQSort): Replaced getNumber() => isNumber() / asNumber().
getBoolean() => isBoolean() / asBoolean(), uncheckedGetNumber() => asNumber().

  • runtime/JSCell.cpp:
  • runtime/JSCell.h: Nixed getJSNumber().
  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncParseInt):

  • runtime/JSONObject.cpp:

(JSC::gap):
(JSC::Stringifier::Stringifier):
(JSC::Stringifier::appendStringifiedValue):

  • runtime/NumberObject.cpp:
  • runtime/NumberObject.h:

(JSC::NumberObject::createStructure):

  • runtime/Operations.h:

(JSC::JSValue::equalSlowCaseInline):
(JSC::JSValue::strictEqual):
(JSC::jsLess):
(JSC::jsLessEq):
(JSC::jsAdd): Replaced getNumber() => isNumber() / asNumber().
getBoolean() => isBoolean() / asBoolean(), uncheckedGetNumber() => asNumber().

../WebCore:

Reviewed by Darin Adler.

  • bindings/js/JSDOMBinding.cpp:

(WebCore::valueToDate):

  • bindings/js/JSErrorHandler.cpp:

(WebCore::JSErrorHandler::handleEvent):

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent):

  • bindings/js/JSSQLTransactionCustom.cpp:

(WebCore::JSSQLTransaction::executeSql):

  • bindings/js/JSSQLTransactionSyncCustom.cpp:

(WebCore::JSSQLTransactionSync::executeSql):

  • bindings/js/ScriptValue.cpp:

(WebCore::jsToInspectorValue):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::dumpIfTerminal):

  • bindings/objc/WebScriptObject.mm:

(+[WebScriptObject _convertValueToObjcValue:originRootObject:rootObject:]):

  • bridge/jni/jsc/JNIUtilityPrivate.cpp:

(JSC::Bindings::convertValueToJValue): Updated for JSC changes.

../WebKit/mac:

Reviewed by Darin Adler.

  • WebView/WebView.mm:

(aeDescFromJSValue): Updated for JSC changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp

    r96164 r96673  
    19771977            JSValue number = callFrame->r(srcDst).jsValue().toJSNumber(callFrame);
    19781978            CHECK_FOR_EXCEPTION();
    1979             callFrame->uncheckedR(srcDst) = jsNumber(number.uncheckedGetNumber() + 1);
     1979            callFrame->uncheckedR(srcDst) = jsNumber(number.asNumber() + 1);
    19801980            callFrame->uncheckedR(dst) = number;
    19811981        }
     
    20002000            JSValue number = callFrame->r(srcDst).jsValue().toJSNumber(callFrame);
    20012001            CHECK_FOR_EXCEPTION();
    2002             callFrame->uncheckedR(srcDst) = jsNumber(number.uncheckedGetNumber() - 1);
     2002            callFrame->uncheckedR(srcDst) = jsNumber(number.asNumber() - 1);
    20032003            callFrame->uncheckedR(dst) = number;
    20042004        }
     
    35073507            } else if (isJSByteArray(globalData, baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
    35083508                JSByteArray* jsByteArray = asByteArray(baseValue);
    3509                 double dValue = 0;
    35103509                JSValue jsValue = callFrame->r(value).jsValue();
    35113510                if (jsValue.isInt32())
    35123511                    jsByteArray->setIndex(i, jsValue.asInt32());
    3513                 else if (jsValue.getNumber(dValue))
    3514                     jsByteArray->setIndex(i, dValue);
     3512                else if (jsValue.isDouble())
     3513                    jsByteArray->setIndex(i, jsValue.asDouble());
    35153514                else
    35163515                    baseValue.put(callFrame, i, jsValue);
     
    40504049        if (scrutinee.isInt32())
    40514050            vPC += codeBlock->immediateSwitchJumpTable(tableIndex).offsetForValue(scrutinee.asInt32(), defaultOffset);
    4052         else {
    4053             double value;
    4054             int32_t intValue;
    4055             if (scrutinee.getNumber(value) && ((intValue = static_cast<int32_t>(value)) == value))
    4056                 vPC += codeBlock->immediateSwitchJumpTable(tableIndex).offsetForValue(intValue, defaultOffset);
    4057             else
    4058                 vPC += defaultOffset;
    4059         }
     4051        else if (scrutinee.isDouble() && scrutinee.asDouble() == static_cast<int32_t>(scrutinee.asDouble()))
     4052            vPC += codeBlock->immediateSwitchJumpTable(tableIndex).offsetForValue(static_cast<int32_t>(scrutinee.asDouble()), defaultOffset);
     4053        else
     4054            vPC += defaultOffset;
    40604055        NEXT_INSTRUCTION();
    40614056    }
Note: See TracChangeset for help on using the changeset viewer.