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/jit/JITStubs.cpp

    r96563 r96673  
    13131313    }
    13141314
    1315     double left = 0.0, right;
    1316     if (v1.getNumber(left) && v2.getNumber(right))
    1317         return JSValue::encode(jsNumber(left + right));
     1315    if (v1.isNumber() && v2.isNumber())
     1316        return JSValue::encode(jsNumber(v1.asNumber() + v2.asNumber()));
    13181317
    13191318    // All other cases are pretty uncommon
     
    21182117    JSValue src2 = stackFrame.args[1].jsValue();
    21192118
    2120     double left;
    2121     double right;
    2122     if (src1.getNumber(left) && src2.getNumber(right))
    2123         return JSValue::encode(jsNumber(left * right));
     2119    if (src1.isNumber() && src2.isNumber())
     2120        return JSValue::encode(jsNumber(src1.asNumber() * src2.asNumber()));
    21242121
    21252122    CallFrame* callFrame = stackFrame.callFrame;
     
    25882585    JSValue src2 = stackFrame.args[1].jsValue();
    25892586
    2590     double left;
    2591     double right;
    2592     if (src1.getNumber(left) && src2.getNumber(right))
    2593         return JSValue::encode(jsNumber(left - right));
     2587    if (src1.isNumber() && src2.isNumber())
     2588        return JSValue::encode(jsNumber(src1.asNumber() - src2.asNumber()));
    25942589
    25952590    CallFrame* callFrame = stackFrame.callFrame;
     
    26262621                return;
    26272622            } else {
    2628                 double dValue = 0;
    2629                 if (value.getNumber(dValue)) {
    2630                     jsByteArray->setIndex(i, dValue);
     2623                if (value.isNumber()) {
     2624                    jsByteArray->setIndex(i, value.asNumber());
    26312625                    return;
    26322626                }
     
    26682662                return;
    26692663            } else {
    2670                 double dValue = 0;               
    2671                 if (value.getNumber(dValue)) {
    2672                     jsByteArray->setIndex(i, dValue);
     2664                if (value.isNumber()) {
     2665                    jsByteArray->setIndex(i, value.asNumber());
    26732666                    return;
    26742667                }
     
    28342827    JSValue src = stackFrame.args[0].jsValue();
    28352828
    2836     double v;
    2837     if (src.getNumber(v))
    2838         return JSValue::encode(jsNumber(-v));
     2829    if (src.isNumber())
     2830        return JSValue::encode(jsNumber(-src.asNumber()));
    28392831
    28402832    CallFrame* callFrame = stackFrame.callFrame;
     
    29512943    JSValue src2 = stackFrame.args[1].jsValue();
    29522944
    2953     double left;
    2954     double right;
    2955     if (src1.getNumber(left) && src2.getNumber(right))
    2956         return JSValue::encode(jsNumber(left / right));
     2945    if (src1.isNumber() && src2.isNumber())
     2946        return JSValue::encode(jsNumber(src1.asNumber() / src2.asNumber()));
    29572947
    29582948    CallFrame* callFrame = stackFrame.callFrame;
     
    30633053    CHECK_FOR_EXCEPTION_AT_END();
    30643054
    3065     callFrame->registers()[stackFrame.args[1].int32()] = jsNumber(number.uncheckedGetNumber() + 1);
     3055    callFrame->registers()[stackFrame.args[1].int32()] = jsNumber(number.asNumber() + 1);
    30663056    return JSValue::encode(number);
    30673057}
     
    33623352    CHECK_FOR_EXCEPTION_AT_END();
    33633353
    3364     callFrame->registers()[stackFrame.args[1].int32()] = jsNumber(number.uncheckedGetNumber() - 1);
     3354    callFrame->registers()[stackFrame.args[1].int32()] = jsNumber(number.asNumber() - 1);
    33653355    return JSValue::encode(number);
    33663356}
     
    36673657    if (scrutinee.isInt32())
    36683658        return codeBlock->immediateSwitchJumpTable(tableIndex).ctiForValue(scrutinee.asInt32()).executableAddress();
    3669     else {
    3670         double value;
    3671         int32_t intValue;
    3672         if (scrutinee.getNumber(value) && ((intValue = static_cast<int32_t>(value)) == value))
    3673             return codeBlock->immediateSwitchJumpTable(tableIndex).ctiForValue(intValue).executableAddress();
    3674         else
    3675             return codeBlock->immediateSwitchJumpTable(tableIndex).ctiDefault.executableAddress();
    3676     }
     3659    if (scrutinee.isDouble()) {
     3660        double value = scrutinee.asDouble();
     3661        int32_t int32Value = value;
     3662        if (int32Value == value)
     3663            return codeBlock->immediateSwitchJumpTable(tableIndex).ctiForValue(int32Value).executableAddress();
     3664    }
     3665    return codeBlock->immediateSwitchJumpTable(tableIndex).ctiDefault.executableAddress();
    36773666}
    36783667
Note: See TracChangeset for help on using the changeset viewer.