//===- subzero/src/IceThreading.cpp - Threading function definitions ------===//
//
// The Subzero Code Generator
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
///
/// \file
/// \brief Defines threading-related functions.
///
//===----------------------------------------------------------------------===//
#include "IceThreading.h"
#include "IceCfg.h"
#include "IceDefs.h"
namespace Ice {
EmitterWorkItem::EmitterWorkItem(uint32_t Seq)
: Sequence(Seq), Kind(WI_Nop), GlobalInits(nullptr), Function(nullptr),
RawFunc(nullptr) {}
EmitterWorkItem::EmitterWorkItem(uint32_t Seq,
std::unique_ptr<VariableDeclarationList> D)
: Sequence(Seq), Kind(WI_GlobalInits), GlobalInits(std::move(D)),
Function(nullptr), RawFunc(nullptr) {}
EmitterWorkItem::EmitterWorkItem(uint32_t Seq, std::unique_ptr<Assembler> A)
: Sequence(Seq), Kind(WI_Asm), GlobalInits(nullptr), Function(std::move(A)),
RawFunc(nullptr) {}
EmitterWorkItem::EmitterWorkItem(uint32_t Seq, std::unique_ptr<Cfg> F)
: Sequence(Seq), Kind(WI_Cfg), GlobalInits(nullptr), Function(nullptr),
RawFunc(std::move(F)) {}
void EmitterWorkItem::setGlobalInits(
std::unique_ptr<VariableDeclarationList> GloblInits) {
assert(getKind() == WI_Asm || getKind() == WI_Cfg);
GlobalInits = std::move(GloblInits);
}
std::unique_ptr<VariableDeclarationList> EmitterWorkItem::getGlobalInits() {
assert(getKind() == WI_GlobalInits || getKind() == WI_Asm ||
getKind() == WI_Cfg);
return std::move(GlobalInits);
}
std::unique_ptr<Assembler> EmitterWorkItem::getAsm() {
assert(getKind() == WI_Asm);
return std::move(Function);
}
std::unique_ptr<Cfg> EmitterWorkItem::getCfg() {
assert(getKind() == WI_Cfg);
return std::move(RawFunc);
}
} // end of namespace Ice