We should support CreateThis in the FTL
[WebKit-https.git] / Source / JavaScriptCore / bytecode / CallVariant.cpp
index 9745dde..3666a13 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014, 2015 Apple Inc. All rights reserved.
+ * Copyright (C) 2014-2018 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
 
 namespace JSC {
 
+bool CallVariant::finalize()
+{
+    if (m_callee && !Heap::isMarked(m_callee))
+        return false;
+    return true;
+}
+
+bool CallVariant::merge(const CallVariant& other)
+{
+    if (*this == other)
+        return true;
+    if (executable() == other.executable()) {
+        *this = despecifiedClosure();
+        return true;
+    }
+    return false;
+}
+
+void CallVariant::filter(VM& vm, JSValue value)
+{
+    if (!*this)
+        return;
+    
+    if (!isClosureCall()) {
+        if (nonExecutableCallee() != value)
+            *this = CallVariant();
+        return;
+    }
+    
+    if (JSFunction* function = jsDynamicCast<JSFunction*>(vm, value)) {
+        if (function->executable() == executable())
+            *this = CallVariant(function);
+        else
+            *this = CallVariant();
+        return;
+    }
+    
+    *this = CallVariant();
+}
+
 void CallVariant::dump(PrintStream& out) const
 {
     if (!*this) {