summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.cpp
diff options
context:
space:
mode:
authorBradley T. Hughes <bradley.hughes@nokia.com>2009-06-15 09:57:36 (GMT)
committerBradley T. Hughes <bradley.hughes@nokia.com>2009-06-15 09:57:36 (GMT)
commit336dfcef05cb63df0a6d550b59a4badc7a0f01c1 (patch)
treea218ec97413e0c8ebc9600ac5db9b2adea485b32 /src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.cpp
parente44d64510e019e5d3b379b704cfb824e0d7ccc9d (diff)
downloadQt-336dfcef05cb63df0a6d550b59a4badc7a0f01c1.zip
Qt-336dfcef05cb63df0a6d550b59a4badc7a0f01c1.tar.gz
Qt-336dfcef05cb63df0a6d550b59a4badc7a0f01c1.tar.bz2
Merge of master
Diffstat (limited to 'src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.cpp')
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.cpp41
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";
}