Move vmEntryGlobalObject() to VM from CallFrame.
[WebKit-https.git] / Source / JavaScriptCore / interpreter / CallFrame.h
index 6d5d723..1b7c9e3 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *  Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
  *  Copyright (C) 2001 Peter Kelly (pmk@post.com)
- *  Copyright (C) 2003-2017 Apple Inc. All rights reserved.
+ *  Copyright (C) 2003-2018 Apple Inc. All rights reserved.
  *
  *  This library is free software; you can redistribute it and/or
  *  modify it under the terms of the GNU Library General Public
@@ -115,18 +115,13 @@ namespace JSC  {
             ASSERT(this[scopeRegisterOffset].Register::scope());
             return this[scopeRegisterOffset].Register::scope();
         }
-        // Global object in which execution began.
-        // This variant is not safe to call from a Wasm frame.
-        JS_EXPORT_PRIVATE JSGlobalObject* vmEntryGlobalObject();
-        // This variant is safe to call from a Wasm frame.
-        JSGlobalObject* vmEntryGlobalObject(VM&);
 
         JSGlobalObject* wasmAwareLexicalGlobalObject(VM&);
 
         bool isAnyWasmCallee();
 
         // Global object in which the currently executing code was defined.
-        // Differs from vmEntryGlobalObject() during function calls across web browser frames.
+        // Differs from VM::vmEntryGlobalObject() during function calls across web browser frames.
         JSGlobalObject* lexicalGlobalObject() const;
 
         // Differs from lexicalGlobalObject because this will have DOM window shell rather than
@@ -255,7 +250,11 @@ namespace JSC  {
 
         static int offsetFor(size_t argumentCountIncludingThis) { return argumentCountIncludingThis + CallFrameSlot::thisArgument - 1; }
 
-        static CallFrame* noCaller() { return 0; }
+        static CallFrame* noCaller() { return nullptr; }
+        bool isGlobalExec() const
+        {
+            return callerFrameAndPC().callerFrame == noCaller() && callerFrameAndPC().pc == nullptr;
+        }
 
         void setArgumentCountIncludingThis(int count) { static_cast<Register*>(this)[CallFrameSlot::argumentCount].payload() = count; }
         void setCallee(JSObject* callee) { static_cast<Register*>(this)[CallFrameSlot::callee] = callee; }