فهرست منبع

LibJS: Forgot to move add/sub/typed_eq to Value.cpp

Andreas Kling 5 سال پیش
والد
کامیت
0d42097cf1
3فایلهای تغییر یافته به همراه43 افزوده شده و 37 حذف شده
  1. 0 37
      Libraries/LibJS/AST.cpp
  2. 40 0
      Libraries/LibJS/Value.cpp
  3. 3 0
      Libraries/LibJS/Value.h

+ 0 - 37
Libraries/LibJS/AST.cpp

@@ -91,43 +91,6 @@ Value WhileStatement::execute(Interpreter& interpreter) const
     return last_value;
 }
 
-Value add(Value lhs, Value rhs)
-{
-    ASSERT(lhs.is_number());
-    ASSERT(rhs.is_number());
-    return Value(lhs.as_double() + rhs.as_double());
-}
-
-Value sub(Value lhs, Value rhs)
-{
-    ASSERT(lhs.is_number());
-    ASSERT(rhs.is_number());
-    return Value(lhs.as_double() - rhs.as_double());
-}
-
-const Value typed_eq(const Value lhs, const Value rhs)
-{
-    if (rhs.type() != lhs.type())
-        return Value(false);
-
-    switch (lhs.type()) {
-    case Value::Type::Undefined:
-        return Value(true);
-    case Value::Type::Null:
-        return Value(true);
-    case Value::Type::Number:
-        return Value(lhs.as_double() == rhs.as_double());
-    case Value::Type::String:
-        return Value(lhs.as_string() == rhs.as_string());
-    case Value::Type::Boolean:
-        return Value(lhs.as_bool() == rhs.as_bool());
-    case Value::Type::Object:
-        return Value(lhs.as_object() == rhs.as_object());
-    }
-
-    ASSERT_NOT_REACHED();
-}
-
 Value BinaryExpression::execute(Interpreter& interpreter) const
 {
     auto lhs_result = m_lhs->execute(interpreter);

+ 40 - 0
Libraries/LibJS/Value.cpp

@@ -144,6 +144,46 @@ Value right_shift(Value lhs, Value rhs)
     return Value((i32)lhs.as_double() >> (i32)rhs.as_double());
 }
 
+Value add(Value lhs, Value rhs)
+
+{
+    ASSERT(lhs.is_number());
+    ASSERT(rhs.is_number());
+    return Value(lhs.as_double() + rhs.as_double());
+}
+
+Value sub(Value lhs, Value rhs)
+{
+    ASSERT(lhs.is_number());
+    ASSERT(rhs.is_number());
+    return Value(lhs.as_double() - rhs.as_double());
+}
+
+Value typed_eq(Value lhs, Value rhs)
+{
+    if (rhs.type() != lhs.type())
+        return Value(false);
+
+    switch (lhs.type()) {
+    case Value::Type::Undefined:
+        return Value(true);
+    case Value::Type::Null:
+        return Value(true);
+    case Value::Type::Number:
+        return Value(lhs.as_double() == rhs.as_double());
+    case Value::Type::String:
+        return Value(lhs.as_string() == rhs.as_string());
+    case Value::Type::Boolean:
+        return Value(lhs.as_bool() == rhs.as_bool());
+    case Value::Type::Object:
+        return Value(lhs.as_object() == rhs.as_object());
+    }
+
+    ASSERT_NOT_REACHED();
+}
+
+
+
 const LogStream& operator<<(const LogStream& stream, const Value& value)
 {
     return stream << value.to_string();

+ 3 - 0
Libraries/LibJS/Value.h

@@ -166,6 +166,9 @@ Value bitwise_xor(Value lhs, Value rhs);
 Value bitwise_not(Value);
 Value left_shift(Value lhs, Value rhs);
 Value right_shift(Value lhs, Value rhs);
+Value add(Value lhs, Value rhs);
+Value sub(Value lhs, Value rhs);
+Value typed_eq(Value lhs, Value rhs);
 
 const LogStream& operator<<(const LogStream&, const Value&);