Bug 1598507 - Fix nonunified builds. r=sfink
authorJeff Walden <jwalden@mit.edu>
Thu, 12 Dec 2019 23:44:22 +0000
changeset 506777 39780bffc015be48247b7a9584005d251938b75c
parent 506776 e68519117ace07eabee7e527d8e8f6f7f1be0225
child 506778 46d18d723c883bbb580cf029bb18d75227243718
push id36912
push usernbeleuzu@mozilla.com
push dateFri, 13 Dec 2019 09:46:53 +0000
treeherdermozilla-central@d1ac49b9eb3e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerssfink
bugs1598507
milestone73.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1598507 - Fix nonunified builds. r=sfink Differential Revision: https://phabricator.services.mozilla.com/D54239
js/src/builtin/Boolean.h
js/src/builtin/intl/LanguageTag.h
js/src/builtin/streams/WritableStream-inl.h
js/src/frontend/BinASTRuntimeSupport.h
js/src/jsapi-tests/testScriptSourceCompression.cpp
js/src/vm/JSContext.h
--- a/js/src/builtin/Boolean.h
+++ b/js/src/builtin/Boolean.h
@@ -1,23 +1,23 @@
 /* -*- 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/. */
 
+/* JS boolean interface. */
+
 #ifndef builtin_Boolean_h
 #define builtin_Boolean_h
 
-/*
- * JS boolean interface.
- */
+#include "jstypes.h"  // JS_PUBLIC_API
 
-struct JSContext;
-class JSString;
+struct JS_PUBLIC_API JSContext;
+class JS_PUBLIC_API JSString;
 
 namespace js {
 
 extern JSString* BooleanToString(JSContext* cx, bool b);
 
 }  // namespace js
 
 #endif /* builtin_Boolean_h */
--- a/js/src/builtin/intl/LanguageTag.h
+++ b/js/src/builtin/intl/LanguageTag.h
@@ -23,20 +23,20 @@
 
 #include "js/AllocPolicy.h"
 #include "js/GCAPI.h"
 #include "js/Result.h"
 #include "js/RootingAPI.h"
 #include "js/Utility.h"
 #include "js/Vector.h"
 
-struct JSContext;
+struct JS_PUBLIC_API JSContext;
 class JSLinearString;
-class JSString;
-class JSTracer;
+class JS_PUBLIC_API JSString;
+class JS_PUBLIC_API JSTracer;
 
 namespace js {
 
 namespace intl {
 
 /**
  * Return true if |language| is a valid language subtag.
  */
--- a/js/src/builtin/streams/WritableStream-inl.h
+++ b/js/src/builtin/streams/WritableStream-inl.h
@@ -9,24 +9,26 @@
 #ifndef builtin_streams_WritableStream_inl_h
 #define builtin_streams_WritableStream_inl_h
 
 #include "builtin/streams/WritableStream.h"
 
 #include "mozilla/Assertions.h"  // MOZ_ASSERT
 #include "mozilla/Attributes.h"  // MOZ_MUST_USE
 
+#include "jstypes.h"  // JS_PUBLIC_API
+
 #include "builtin/Promise.h"                              // js::PromiseObject
 #include "builtin/streams/WritableStreamDefaultWriter.h"  // js::WritableStreamDefaultWriter
 #include "js/RootingAPI.h"                                // JS::Handle
 #include "js/Value.h"                                     // JS::{,Object}Value
 
 #include "vm/Compartment-inl.h"  // js::UnwrapInternalSlot
 
-struct JSContext;
+struct JS_PUBLIC_API JSContext;
 
 namespace js {
 
 /**
  * Returns the writer associated with the given stream.
  *
  * Must only be called on WritableStreams that already have a writer
  * associated with them.
--- a/js/src/frontend/BinASTRuntimeSupport.h
+++ b/js/src/frontend/BinASTRuntimeSupport.h
@@ -20,17 +20,17 @@
 #include "js/AllocPolicy.h"  // SystemAllocPolicy
 #include "js/HashTable.h"    // HashMap, HashNumber
 #include "js/Result.h"       // JS::Result
 #include "js/TracingAPI.h"   // JSTracer
 #include "js/UniquePtr.h"    // UniquePtr
 #include "js/Vector.h"       // Vector
 
 class JSAtom;
-struct JSContext;
+struct JS_PUBLIC_API JSContext;
 
 namespace js {
 
 class ScriptSource;
 
 // Support for parsing JS Binary ASTs.
 struct BinaryASTSupport {
   using BinASTVariant = js::frontend::BinASTVariant;
--- a/js/src/jsapi-tests/testScriptSourceCompression.cpp
+++ b/js/src/jsapi-tests/testScriptSourceCompression.cpp
@@ -10,16 +10,17 @@
 #include "mozilla/Utf8.h"        // mozilla::Utf8Unit
 
 #include <algorithm>  // std::all_of, std::equal, std::move, std::transform
 #include <memory>     // std::uninitialized_fill_n
 #include <stddef.h>   // size_t
 #include <stdint.h>   // uint32_t
 
 #include "jsapi.h"  // JS_EnsureLinearString, JS_GC, JS_Get{Latin1,TwoByte}LinearStringChars, JS_GetStringLength, JS_ValueToFunction
+#include "jstypes.h"  // JS_PUBLIC_API
 
 #include "js/CompilationAndEvaluation.h"  // JS::Evaluate{,DontInflate}
 #include "js/CompileOptions.h"            // JS::CompileOptions
 #include "js/Conversions.h"               // JS::ToString
 #include "js/MemoryFunctions.h"           // JS_malloc
 #include "js/RootingAPI.h"                // JS::MutableHandle, JS::Rooted
 #include "js/SourceText.h"                // JS::SourceOwnership, JS::SourceText
 #include "js/UniquePtr.h"                 // js::UniquePtr
@@ -28,18 +29,18 @@
 #include "jsapi-tests/tests.h"
 #include "vm/Compression.h"  // js::Compressor::CHUNK_SIZE
 #include "vm/JSFunction.h"   // JSFunction::getOrCreateScript
 #include "vm/JSScript.h"  // JSScript, js::ScriptSource::MinimumCompressibleLength, js::SynchronouslyCompressSource
 
 using mozilla::ArrayLength;
 using mozilla::Utf8Unit;
 
-struct JSContext;
-class JSString;
+struct JS_PUBLIC_API JSContext;
+class JS_PUBLIC_API JSString;
 
 template <typename Unit>
 using Source = js::UniquePtr<Unit[], JS::FreePolicy>;
 
 constexpr size_t ChunkSize = js::Compressor::CHUNK_SIZE;
 constexpr size_t MinimumCompressibleLength =
     js::ScriptSource::MinimumCompressibleLength;
 
--- a/js/src/vm/JSContext.h
+++ b/js/src/vm/JSContext.h
@@ -6,32 +6,36 @@
 
 /* JS execution context. */
 
 #ifndef vm_JSContext_h
 #define vm_JSContext_h
 
 #include "mozilla/MemoryReporting.h"
 
+#include "jstypes.h"  // JS_PUBLIC_API
+
 #include "ds/TraceableFifo.h"
 #include "gc/Memory.h"
 #include "js/CharacterEncoding.h"
 #include "js/ContextOptions.h"  // JS::ContextOptions
 #include "js/GCVector.h"
 #include "js/Promise.h"
 #include "js/Result.h"
 #include "js/Utility.h"
 #include "js/Vector.h"
 #include "threading/ProtectedData.h"
 #include "util/StructuredSpewer.h"
 #include "vm/Activation.h"  // js::Activation
 #include "vm/ErrorReporting.h"
 #include "vm/MallocProvider.h"
 #include "vm/Runtime.h"
 
+struct JS_PUBLIC_API JSContext;
+
 struct DtoaState;
 
 namespace js {
 
 class AutoAllocInAtomsZone;
 class AutoMaybeLeaveAtomsZone;
 class AutoRealm;
 
@@ -142,18 +146,18 @@ enum class InterruptReason : uint32_t {
 };
 
 } /* namespace js */
 
 /*
  * A JSContext encapsulates the thread local state used when using the JS
  * runtime.
  */
-struct JSContext : public JS::RootingContext,
-                   public js::MallocProvider<JSContext> {
+struct JS_PUBLIC_API JSContext : public JS::RootingContext,
+                                 public js::MallocProvider<JSContext> {
   JSContext(JSRuntime* runtime, const JS::ContextOptions& options);
   ~JSContext();
 
   bool init(js::ContextKind kind);
 
  private:
   js::UnprotectedData<JSRuntime*> runtime_;
   js::WriteOnceData<js::ContextKind> kind_;