diff options
Diffstat (limited to 'src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.cpp')
-rw-r--r-- | src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.cpp | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.cpp index 09b3750..201e56c 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.cpp @@ -32,35 +32,31 @@ namespace JSC { -JSObject* JSImmediate::toThisObject(JSValuePtr v, ExecState* exec) +JSObject* JSImmediate::toThisObject(JSValue v, ExecState* exec) { ASSERT(isImmediate(v)); if (isNumber(v)) - return constructNumberFromImmediateNumber(exec, v); + return constructNumber(exec, v); if (isBoolean(v)) return constructBooleanFromImmediateBoolean(exec, v); - if (v->isNull()) - return exec->globalThisValue(); - - JSNotAnObjectErrorStub* exception = createNotAnObjectErrorStub(exec, v->isNull()); - exec->setException(exception); - return new (exec) JSNotAnObject(exec, exception); + ASSERT(v.isUndefinedOrNull()); + return exec->globalThisValue(); } -JSObject* JSImmediate::toObject(JSValuePtr v, ExecState* exec) +JSObject* JSImmediate::toObject(JSValue v, ExecState* exec) { ASSERT(isImmediate(v)); if (isNumber(v)) - return constructNumberFromImmediateNumber(exec, v); + return constructNumber(exec, v); if (isBoolean(v)) return constructBooleanFromImmediateBoolean(exec, v); - JSNotAnObjectErrorStub* exception = createNotAnObjectErrorStub(exec, v->isNull()); + JSNotAnObjectErrorStub* exception = createNotAnObjectErrorStub(exec, v.isNull()); exec->setException(exception); return new (exec) JSNotAnObject(exec, exception); } -JSObject* JSImmediate::prototype(JSValuePtr v, ExecState* exec) +JSObject* JSImmediate::prototype(JSValue v, ExecState* exec) { ASSERT(isImmediate(v)); if (isNumber(v)) @@ -68,23 +64,34 @@ JSObject* JSImmediate::prototype(JSValuePtr v, ExecState* exec) if (isBoolean(v)) return exec->lexicalGlobalObject()->booleanPrototype(); - JSNotAnObjectErrorStub* exception = createNotAnObjectErrorStub(exec, v->isNull()); + JSNotAnObjectErrorStub* exception = createNotAnObjectErrorStub(exec, v.isNull()); exec->setException(exception); return new (exec) JSNotAnObject(exec, exception); } -UString JSImmediate::toString(JSValuePtr v) +UString JSImmediate::toString(JSValue v) { ASSERT(isImmediate(v)); - if (isNumber(v)) + if (isIntegerNumber(v)) return UString::from(getTruncatedInt32(v)); +#if USE(ALTERNATE_JSIMMEDIATE) + if (isNumber(v)) { + ASSERT(isDoubleNumber(v)); + double value = doubleValue(v); + if (value == 0.0) // +0.0 or -0.0 + return "0"; + return UString::from(value); + } +#else + ASSERT(!isNumber(v)); +#endif if (jsBoolean(false) == v) return "false"; if (jsBoolean(true) == v) return "true"; - if (v->isNull()) + if (v.isNull()) return "null"; - ASSERT(v->isUndefined()); + ASSERT(v.isUndefined()); return "undefined"; } |