forked from mirrors/gecko-dev
Note: The stencil will hold pointers into the StartupCache buffer; There is an assumption in this patch that the lifetime of the buffer is long enough that we can compile the stencil without causing issues. Note, we have to adjust the test_source-03 expectation. Since we no longer cache *scripts*, and instead cache *stencils*, it's not guaranteed the scripts will have identical ScriptSourceObjects. Differential Revision: https://phabricator.services.mozilla.com/D113012
50 lines
1.8 KiB
C++
50 lines
1.8 KiB
C++
/* -*- 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/. */
|
|
|
|
#include "nsCOMPtr.h"
|
|
#include "mozIJSSubScriptLoader.h"
|
|
|
|
#include "js/experimental/JSStencil.h"
|
|
#include "js/CompileOptions.h" // JS::ReadOnlyCompileOptions
|
|
|
|
class nsIPrincipal;
|
|
class nsIURI;
|
|
class LoadSubScriptOptions;
|
|
|
|
#define MOZ_JSSUBSCRIPTLOADER_CID \
|
|
{ /* 829814d6-1dd2-11b2-8e08-82fa0a339b00 */ \
|
|
0x929814d6, 0x1dd2, 0x11b2, { \
|
|
0x8e, 0x08, 0x82, 0xfa, 0x0a, 0x33, 0x9b, 0x00 \
|
|
} \
|
|
}
|
|
|
|
class nsIIOService;
|
|
|
|
class mozJSSubScriptLoader : public mozIJSSubScriptLoader {
|
|
public:
|
|
mozJSSubScriptLoader();
|
|
|
|
// all the interface method declarations...
|
|
NS_DECL_ISUPPORTS
|
|
NS_DECL_MOZIJSSUBSCRIPTLOADER
|
|
|
|
private:
|
|
virtual ~mozJSSubScriptLoader();
|
|
|
|
bool ReadStencil(JS::Stencil** stencilOut, nsIURI* uri, JSContext* cx,
|
|
const JS::ReadOnlyCompileOptions& options,
|
|
nsIIOService* serv, bool useCompilationScope);
|
|
|
|
nsresult ReadScriptAsync(nsIURI* uri, JS::HandleObject targetObj,
|
|
JS::HandleObject loadScope, nsIIOService* serv,
|
|
bool wantReturnValue, bool cache,
|
|
JS::MutableHandleValue retval);
|
|
|
|
nsresult DoLoadSubScriptWithOptions(const nsAString& url,
|
|
LoadSubScriptOptions& options,
|
|
JSContext* cx,
|
|
JS::MutableHandleValue retval);
|
|
};
|