summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Libraries/LibJS/Value.cpp14
-rw-r--r--Libraries/LibJS/Value.h1
2 files changed, 13 insertions, 2 deletions
diff --git a/Libraries/LibJS/Value.cpp b/Libraries/LibJS/Value.cpp
index c4c25b2e1e..6ba182f6f5 100644
--- a/Libraries/LibJS/Value.cpp
+++ b/Libraries/LibJS/Value.cpp
@@ -89,6 +89,18 @@ Value Value::to_object(Heap& heap) const
ASSERT_NOT_REACHED();
}
+i32 Value::to_i32() const
+{
+ switch (m_type) {
+ case Type::Boolean:
+ return m_value.as_bool;
+ case Type::Number:
+ return static_cast<i32>(m_value.as_double);
+ default:
+ ASSERT_NOT_REACHED();
+ }
+}
+
Value greater_than(Value lhs, Value rhs)
{
ASSERT(lhs.is_number());
@@ -209,8 +221,6 @@ Value typed_eq(Value lhs, Value rhs)
ASSERT_NOT_REACHED();
}
-
-
const LogStream& operator<<(const LogStream& stream, const Value& value)
{
return stream << value.to_string();
diff --git a/Libraries/LibJS/Value.h b/Libraries/LibJS/Value.h
index 95db26df83..d98522ced3 100644
--- a/Libraries/LibJS/Value.h
+++ b/Libraries/LibJS/Value.h
@@ -133,6 +133,7 @@ public:
String to_string() const;
bool to_boolean() const;
+ i32 to_i32() const;
Value to_object(Heap&) const;