|  | //===- subzero/src/PNaClTranslator.h - ICE from bitcode ---------*- C++ -*-===// | 
|  | // | 
|  | //                        The Subzero Code Generator | 
|  | // | 
|  | // This file is distributed under the University of Illinois Open Source | 
|  | // License. See LICENSE.TXT for details. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  | /// | 
|  | /// \file | 
|  | /// \brief Declares the interface for translation from PNaCl bitcode files to | 
|  | /// ICE to machine code. | 
|  | /// | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #ifndef SUBZERO_SRC_PNACLTRANSLATOR_H | 
|  | #define SUBZERO_SRC_PNACLTRANSLATOR_H | 
|  |  | 
|  | #include "IceTranslator.h" | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | namespace llvm { | 
|  | class MemoryBuffer; | 
|  | class MemoryObject; | 
|  | } // end of namespace llvm | 
|  |  | 
|  | namespace Ice { | 
|  |  | 
|  | class PNaClTranslator : public Translator { | 
|  | PNaClTranslator() = delete; | 
|  | PNaClTranslator(const PNaClTranslator &) = delete; | 
|  | PNaClTranslator &operator=(const PNaClTranslator &) = delete; | 
|  |  | 
|  | public: | 
|  | explicit PNaClTranslator(GlobalContext *Ctx) : Translator(Ctx) {} | 
|  | ~PNaClTranslator() override = default; | 
|  |  | 
|  | /// Reads the PNaCl bitcode file and translates to ICE, which is then | 
|  | /// converted to machine code. Sets ErrorStatus to 1 if any errors occurred. | 
|  | /// Takes ownership of the MemoryObject. | 
|  | void translate(const std::string &IRFilename, | 
|  | std::unique_ptr<llvm::MemoryObject> &&MemoryObject); | 
|  |  | 
|  | /// Reads MemBuf, assuming it is the PNaCl bitcode contents of IRFilename. | 
|  | void translateBuffer(const std::string &IRFilename, | 
|  | llvm::MemoryBuffer *MemBuf); | 
|  | }; | 
|  |  | 
|  | } // end of namespace Ice | 
|  |  | 
|  | #endif // SUBZERO_SRC_PNACLTRANSLATOR_H |