blob: 5cdaaa80bf6bd5e3b6d9f6e43adcecf7a6faa9e0 [file] [log] [blame]
Jim Stichnothbbca7542015-02-11 16:08:31 -08001//===- subzero/src/IceThreading.cpp - Threading function definitions ------===//
2//
3// The Subzero Code Generator
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file defines threading-related functions.
11//
12//===----------------------------------------------------------------------===//
13
14#include "IceCfg.h"
15#include "IceDefs.h"
16#include "IceThreading.h"
17
18namespace Ice {
19
20EmitterWorkItem::EmitterWorkItem(uint32_t Seq)
21 : Sequence(Seq), Kind(WI_Nop), GlobalInits(nullptr), Function(nullptr),
22 RawFunc(nullptr) {}
23EmitterWorkItem::EmitterWorkItem(uint32_t Seq, VariableDeclarationList *D)
24 : Sequence(Seq), Kind(WI_GlobalInits), GlobalInits(D), Function(nullptr),
25 RawFunc(nullptr) {}
26EmitterWorkItem::EmitterWorkItem(uint32_t Seq, Assembler *A)
27 : Sequence(Seq), Kind(WI_Asm), GlobalInits(nullptr), Function(A),
28 RawFunc(nullptr) {}
29EmitterWorkItem::EmitterWorkItem(uint32_t Seq, Cfg *F)
30 : Sequence(Seq), Kind(WI_Cfg), GlobalInits(nullptr), Function(nullptr),
31 RawFunc(F) {}
32
John Portof8b4cc82015-06-09 18:06:19 -070033void EmitterWorkItem::setGlobalInits(
34 std::unique_ptr<VariableDeclarationList> GloblInits) {
35 assert(getKind() == WI_Asm || getKind() == WI_Cfg);
36 GlobalInits = std::move(GloblInits);
37}
38
Jim Stichnothbbca7542015-02-11 16:08:31 -080039std::unique_ptr<VariableDeclarationList> EmitterWorkItem::getGlobalInits() {
John Portof8b4cc82015-06-09 18:06:19 -070040 assert(getKind() == WI_GlobalInits || getKind() == WI_Asm ||
41 getKind() == WI_Cfg);
Jim Stichnothbbca7542015-02-11 16:08:31 -080042 return std::move(GlobalInits);
43}
44
45std::unique_ptr<Assembler> EmitterWorkItem::getAsm() {
46 assert(getKind() == WI_Asm);
47 return std::move(Function);
48}
49
50std::unique_ptr<Cfg> EmitterWorkItem::getCfg() {
51 assert(getKind() == WI_Cfg);
52 return std::move(RawFunc);
53}
54
55} // end of namespace Ice