Bug 1874684 - Part 31: Correctly reject invalid durations in some RoundDuration calls...
[gecko.git] / js / src / jit / Linker.h
blob01df1c819a5b5afb9845fa7e50d9e818834d693b
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 * vim: set ts=8 sts=2 et sw=2 tw=80:
3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef jit_Linker_h
8 #define jit_Linker_h
10 #include "mozilla/Maybe.h"
12 #include <stdint.h>
14 #include "jstypes.h"
16 #include "jit/AutoWritableJitCode.h"
17 #include "jit/MacroAssembler.h"
18 #include "vm/Runtime.h"
20 struct JS_PUBLIC_API JSContext;
22 namespace js {
23 namespace jit {
25 class JitCode;
27 enum class CodeKind : uint8_t;
29 class Linker {
30 MacroAssembler& masm;
31 mozilla::Maybe<AutoWritableJitCodeFallible> awjcf;
33 JitCode* fail(JSContext* cx) {
34 ReportOutOfMemory(cx);
35 return nullptr;
38 public:
39 // Construct a linker with a rooted macro assembler.
40 explicit Linker(MacroAssembler& masm) : masm(masm) { masm.finish(); }
42 // Create a new JitCode object and populate it with the contents of the
43 // macro assember buffer.
45 // This method cannot GC. Errors are reported to the context.
46 JitCode* newCode(JSContext* cx, CodeKind kind);
49 } // namespace jit
50 } // namespace js
52 #endif /* jit_Linker_h */