We should support CreateThis in the FTL
[WebKit-https.git] / Source / JavaScriptCore / bytecode / CodeOrigin.h
index 0c05b96..19d9cd0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011-2015 Apple Inc. All rights reserved.
+ * Copyright (C) 2011-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
@@ -26,6 +26,7 @@
 #pragma once
 
 #include "CodeBlockHash.h"
+#include "ExitingInlineKind.h"
 #include <limits.h>
 #include <wtf/HashMap.h>
 #include <wtf/PrintStream.h>
@@ -88,15 +89,20 @@ struct CodeOrigin {
     
     static unsigned inlineDepthForCallFrame(InlineCallFrame*);
     
+    ExitingInlineKind exitingInlineKind() const
+    {
+        return inlineCallFrame ? ExitFromInlined : ExitFromNotInlined;
+    }
+    
     unsigned hash() const;
     bool operator==(const CodeOrigin& other) const;
     bool operator!=(const CodeOrigin& other) const { return !(*this == other); }
     
     // This checks if the two code origins correspond to the same stack trace snippets,
     // but ignore whether the InlineCallFrame's are identical.
-    bool isApproximatelyEqualTo(const CodeOrigin& other) const;
+    bool isApproximatelyEqualTo(const CodeOrigin& other, InlineCallFrame* terminal = nullptr) const;
     
-    unsigned approximateHash() const;
+    unsigned approximateHash(InlineCallFrame* terminal = nullptr) const;
 
     template <typename Function>
     void walkUpInlineStack(const Function&);
@@ -106,7 +112,7 @@ struct CodeOrigin {
     
     JS_EXPORT_PRIVATE void dump(PrintStream&) const;
     void dumpInContext(PrintStream&, DumpContext*) const;
-
+    
 private:
     static InlineCallFrame* deletedMarker()
     {