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