summaryrefslogtreecommitdiff
path: root/deps/v8/src/objects/call-site-info.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/objects/call-site-info.h')
-rw-r--r--deps/v8/src/objects/call-site-info.h118
1 files changed, 118 insertions, 0 deletions
diff --git a/deps/v8/src/objects/call-site-info.h b/deps/v8/src/objects/call-site-info.h
new file mode 100644
index 0000000000..42d8788351
--- /dev/null
+++ b/deps/v8/src/objects/call-site-info.h
@@ -0,0 +1,118 @@
+// Copyright 2018 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef V8_OBJECTS_CALL_SITE_INFO_H_
+#define V8_OBJECTS_CALL_SITE_INFO_H_
+
+#include "src/objects/struct.h"
+#include "torque-generated/bit-fields.h"
+
+// Has to be the last include (doesn't have include guards):
+#include "src/objects/object-macros.h"
+
+namespace v8 {
+namespace internal {
+
+class MessageLocation;
+class WasmInstanceObject;
+class StructBodyDescriptor;
+
+#include "torque-generated/src/objects/call-site-info-tq.inc"
+
+class CallSiteInfo : public TorqueGeneratedCallSiteInfo<CallSiteInfo, Struct> {
+ public:
+ NEVER_READ_ONLY_SPACE
+ DEFINE_TORQUE_GENERATED_CALL_SITE_INFO_FLAGS()
+
+#if V8_ENABLE_WEBASSEMBLY
+ inline bool IsWasm() const;
+ inline bool IsAsmJsWasm() const;
+ inline bool IsAsmJsAtNumberConversion() const;
+#endif // V8_ENABLE_WEBASSEMBLY
+
+ inline bool IsStrict() const;
+ inline bool IsConstructor() const;
+ inline bool IsAsync() const;
+ bool IsEval() const;
+ bool IsUserJavaScript() const;
+ bool IsSubjectToDebugging() const;
+ bool IsMethodCall() const;
+ bool IsToplevel() const;
+ bool IsPromiseAll() const;
+ bool IsPromiseAny() const;
+ bool IsNative() const;
+
+ DECL_ACCESSORS(code_object, HeapObject)
+
+ // Dispatched behavior.
+ DECL_VERIFIER(CallSiteInfo)
+
+ // Used to signal that the requested field is unknown.
+ static constexpr int kUnknown = kNoSourcePosition;
+
+ V8_EXPORT_PRIVATE static int GetLineNumber(Handle<CallSiteInfo> info);
+ V8_EXPORT_PRIVATE static int GetColumnNumber(Handle<CallSiteInfo> info);
+
+ static int GetEnclosingLineNumber(Handle<CallSiteInfo> info);
+ static int GetEnclosingColumnNumber(Handle<CallSiteInfo> info);
+
+ // Returns the script ID if one is attached,
+ // Message::kNoScriptIdInfo otherwise.
+ static MaybeHandle<Script> GetScript(Isolate* isolate,
+ Handle<CallSiteInfo> info);
+ int GetScriptId() const;
+ Object GetScriptName() const;
+ Object GetScriptNameOrSourceURL() const;
+ Object GetScriptSource() const;
+ Object GetScriptSourceMappingURL() const;
+
+ static Handle<PrimitiveHeapObject> GetEvalOrigin(Handle<CallSiteInfo> info);
+ V8_EXPORT_PRIVATE static Handle<PrimitiveHeapObject> GetFunctionName(
+ Handle<CallSiteInfo> info);
+ static Handle<String> GetFunctionDebugName(Handle<CallSiteInfo> info);
+ static Handle<Object> GetMethodName(Handle<CallSiteInfo> info);
+ static Handle<Object> GetTypeName(Handle<CallSiteInfo> info);
+
+#if V8_ENABLE_WEBASSEMBLY
+ // These methods are only valid for Wasm and asm.js Wasm frames.
+ uint32_t GetWasmFunctionIndex() const;
+ WasmInstanceObject GetWasmInstance() const;
+ static Handle<Object> GetWasmModuleName(Handle<CallSiteInfo> info);
+#endif // V8_ENABLE_WEBASSEMBLY
+
+ // Returns the 0-based source position, which is the offset into the
+ // Script in case of JavaScript and Asm.js, and the bytecode offset
+ // in the module in case of actual Wasm. In case of async promise
+ // combinator frames, this returns the index of the promise.
+ static int GetSourcePosition(Handle<CallSiteInfo> info);
+
+ // Attempts to fill the |location| based on the |info|, and avoids
+ // triggering source position table building for JavaScript frames.
+ static bool ComputeLocation(Handle<CallSiteInfo> info,
+ MessageLocation* location);
+
+ using BodyDescriptor = StructBodyDescriptor;
+
+ private:
+ static int ComputeSourcePosition(Handle<CallSiteInfo> info, int offset);
+
+ base::Optional<Script> GetScript() const;
+ SharedFunctionInfo GetSharedFunctionInfo() const;
+
+ TQ_OBJECT_CONSTRUCTORS(CallSiteInfo)
+};
+
+class IncrementalStringBuilder;
+void SerializeCallSiteInfo(Isolate* isolate, Handle<CallSiteInfo> frame,
+ IncrementalStringBuilder* builder);
+V8_EXPORT_PRIVATE
+MaybeHandle<String> SerializeCallSiteInfo(Isolate* isolate,
+ Handle<CallSiteInfo> frame);
+
+} // namespace internal
+} // namespace v8
+
+#include "src/objects/object-macros-undef.h"
+
+#endif // V8_OBJECTS_CALL_SITE_INFO_H_