//===- 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