summaryrefslogtreecommitdiffstats
path: root/js/src/jspubtd.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /js/src/jspubtd.h
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/jspubtd.h')
-rw-r--r--js/src/jspubtd.h122
1 files changed, 122 insertions, 0 deletions
diff --git a/js/src/jspubtd.h b/js/src/jspubtd.h
new file mode 100644
index 0000000000..c3c5d38bd6
--- /dev/null
+++ b/js/src/jspubtd.h
@@ -0,0 +1,122 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ * vim: set ts=8 sts=2 et sw=2 tw=80:
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef jspubtd_h
+#define jspubtd_h
+
+/*
+ * JS public API typedefs.
+ */
+
+#include "jstypes.h"
+
+#include "js/ProtoKey.h"
+#include "js/Result.h"
+#include "js/TraceKind.h"
+#include "js/TypeDecls.h"
+
+#if defined(JS_GC_ZEAL) || defined(DEBUG)
+# define JSGC_HASH_TABLE_CHECKS
+#endif
+
+namespace JS {
+
+class CallArgs;
+
+class JS_PUBLIC_API RealmOptions;
+
+} // namespace JS
+
+/* Result of typeof operator enumeration. */
+enum JSType {
+ JSTYPE_UNDEFINED, /* undefined */
+ JSTYPE_OBJECT, /* object */
+ JSTYPE_FUNCTION, /* function */
+ JSTYPE_STRING, /* string */
+ JSTYPE_NUMBER, /* number */
+ JSTYPE_BOOLEAN, /* boolean */
+ JSTYPE_SYMBOL, /* symbol */
+ JSTYPE_BIGINT, /* BigInt */
+#ifdef ENABLE_RECORD_TUPLE
+ JSTYPE_RECORD, /* record */
+ JSTYPE_TUPLE, /* tuple */
+#endif
+ JSTYPE_LIMIT
+};
+
+/* Dense index into cached prototypes and class atoms for standard objects. */
+enum JSProtoKey {
+#define PROTOKEY_AND_INITIALIZER(name, clasp) JSProto_##name,
+ JS_FOR_EACH_PROTOTYPE(PROTOKEY_AND_INITIALIZER)
+#undef PROTOKEY_AND_INITIALIZER
+ JSProto_LIMIT
+};
+
+/* Struct forward declarations. */
+struct JSClass;
+class JSErrorReport;
+struct JSFunctionSpec;
+struct JSPrincipals;
+struct JSPropertySpec;
+struct JSSecurityCallbacks;
+struct JSStructuredCloneCallbacks;
+struct JSStructuredCloneReader;
+struct JSStructuredCloneWriter;
+class JS_PUBLIC_API JSTracer;
+
+class JSLinearString;
+
+template <typename T>
+struct JSConstScalarSpec;
+using JSConstDoubleSpec = JSConstScalarSpec<double>;
+using JSConstIntegerSpec = JSConstScalarSpec<int32_t>;
+
+namespace js {
+
+inline JS::Realm* GetContextRealm(const JSContext* cx);
+inline JS::Compartment* GetContextCompartment(const JSContext* cx);
+inline JS::Zone* GetContextZone(const JSContext* cx);
+
+// Whether the current thread is permitted access to any part of the specified
+// runtime or zone.
+JS_PUBLIC_API bool CurrentThreadCanAccessRuntime(const JSRuntime* rt);
+
+#ifdef DEBUG
+JS_PUBLIC_API bool CurrentThreadIsMainThread();
+JS_PUBLIC_API bool CurrentThreadIsPerformingGC();
+#endif
+
+} // namespace js
+
+namespace JS {
+
+class JS_PUBLIC_API PropertyDescriptor;
+
+// Decorates the Unlinking phase of CycleCollection so that accidental use
+// of barriered accessors results in assertions instead of leaks.
+class MOZ_STACK_CLASS JS_PUBLIC_API AutoEnterCycleCollection {
+#ifdef DEBUG
+ JSRuntime* runtime_;
+
+ public:
+ explicit AutoEnterCycleCollection(JSRuntime* rt);
+ ~AutoEnterCycleCollection();
+#else
+ public:
+ explicit AutoEnterCycleCollection(JSRuntime* rt) {}
+ ~AutoEnterCycleCollection() {}
+#endif
+};
+
+} /* namespace JS */
+
+extern "C" {
+
+// Defined in NSPR prio.h.
+using PRFileDesc = struct PRFileDesc;
+}
+
+#endif /* jspubtd_h */