OLD | NEW |
1 //===- subzero/src/IceBrowserCompileServer.cpp - Browser compile server ---===// | 1 //===- subzero/src/IceBrowserCompileServer.cpp - Browser compile server ---===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 /// | 9 /// |
10 /// \file | 10 /// \file |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 | 158 |
159 void BrowserCompileServer::run() { | 159 void BrowserCompileServer::run() { |
160 gCompileServer = this; | 160 gCompileServer = this; |
161 getIRTInterfaces(); | 161 getIRTInterfaces(); |
162 gIRTFuncs.serve_translate_request(&SubzeroCallbacks); | 162 gIRTFuncs.serve_translate_request(&SubzeroCallbacks); |
163 } | 163 } |
164 | 164 |
165 void BrowserCompileServer::getParsedFlags(uint32_t NumThreads, int argc, | 165 void BrowserCompileServer::getParsedFlags(uint32_t NumThreads, int argc, |
166 char **argv) { | 166 char **argv) { |
167 ClFlags::parseFlags(argc, argv); | 167 ClFlags::parseFlags(argc, argv); |
168 ClFlags::getParsedClFlags(*Flags); | 168 ClFlags::getParsedClFlags(ClFlags::Flags); |
169 // Set some defaults which aren't specified via the argv string. | 169 // Set some defaults which aren't specified via the argv string. |
170 Flags->setNumTranslationThreads(NumThreads); | 170 ClFlags::Flags.setNumTranslationThreads(NumThreads); |
171 Flags->setUseSandboxing(true); | 171 ClFlags::Flags.setUseSandboxing(true); |
172 Flags->setOutFileType(FT_Elf); | 172 ClFlags::Flags.setOutFileType(FT_Elf); |
173 Flags->setTargetArch(getTargetArch()); | 173 ClFlags::Flags.setTargetArch(getTargetArch()); |
174 Flags->setBuildOnRead(true); | 174 ClFlags::Flags.setInputFileFormat(llvm::PNaClFormat); |
175 Flags->setInputFileFormat(llvm::PNaClFormat); | |
176 } | 175 } |
177 | 176 |
178 bool BrowserCompileServer::pushInputBytes(const void *Data, size_t NumBytes) { | 177 bool BrowserCompileServer::pushInputBytes(const void *Data, size_t NumBytes) { |
179 // If there was an earlier error, do not attempt to push bytes to the | 178 // If there was an earlier error, do not attempt to push bytes to the |
180 // QueueStreamer. Otherwise the thread could become blocked. | 179 // QueueStreamer. Otherwise the thread could become blocked. |
181 if (HadError.load()) | 180 if (HadError.load()) |
182 return true; | 181 return true; |
183 return InputStream->PutBytes( | 182 return InputStream->PutBytes( |
184 const_cast<unsigned char *>( | 183 const_cast<unsigned char *>( |
185 reinterpret_cast<const unsigned char *>(Data)), | 184 reinterpret_cast<const unsigned char *>(Data)), |
(...skipping 26 matching lines...) Expand all Loading... |
212 EmitStream = getOutputStream(ObjFD); | 211 EmitStream = getOutputStream(ObjFD); |
213 EmitStream->SetBufferSize(1 << 14); | 212 EmitStream->SetBufferSize(1 << 14); |
214 std::unique_ptr<StringStream> ErrStrm(new StringStream()); | 213 std::unique_ptr<StringStream> ErrStrm(new StringStream()); |
215 ErrorStream = std::move(ErrStrm); | 214 ErrorStream = std::move(ErrStrm); |
216 ELFStream.reset(new ELFStreamer(*EmitStream.get())); | 215 ELFStream.reset(new ELFStreamer(*EmitStream.get())); |
217 Ctx.reset(new GlobalContext(LogStream.get(), EmitStream.get(), | 216 Ctx.reset(new GlobalContext(LogStream.get(), EmitStream.get(), |
218 &ErrorStream->getStream(), ELFStream.get())); | 217 &ErrorStream->getStream(), ELFStream.get())); |
219 CompileThread = std::thread([this]() { | 218 CompileThread = std::thread([this]() { |
220 llvm::install_fatal_error_handler(fatalErrorHandler, this); | 219 llvm::install_fatal_error_handler(fatalErrorHandler, this); |
221 Ctx->initParserThread(); | 220 Ctx->initParserThread(); |
222 this->getCompiler().run(*Flags, *Ctx.get(), | 221 this->getCompiler().run(ClFlags::Flags, *Ctx.get(), |
223 // Retain original reference, but the compiler | 222 // Retain original reference, but the compiler |
224 // (LLVM's MemoryObject) wants to handle deletion. | 223 // (LLVM's MemoryObject) wants to handle deletion. |
225 std::unique_ptr<llvm::DataStreamer>(InputStream)); | 224 std::unique_ptr<llvm::DataStreamer>(InputStream)); |
226 }); | 225 }); |
227 } | 226 } |
228 | 227 |
229 } // end of namespace Ice | 228 } // end of namespace Ice |
230 | 229 |
231 #else // !PNACL_BROWSER_TRANSLATOR | 230 #else // !PNACL_BROWSER_TRANSLATOR |
232 | 231 |
233 #include "llvm/Support/ErrorHandling.h" | 232 #include "llvm/Support/ErrorHandling.h" |
234 | 233 |
235 namespace Ice { | 234 namespace Ice { |
236 | 235 |
237 BrowserCompileServer::~BrowserCompileServer() {} | 236 BrowserCompileServer::~BrowserCompileServer() {} |
238 | 237 |
239 void BrowserCompileServer::run() { | 238 void BrowserCompileServer::run() { |
240 llvm::report_fatal_error("no browser hookups"); | 239 llvm::report_fatal_error("no browser hookups"); |
241 } | 240 } |
242 | 241 |
243 ErrorCode &BrowserCompileServer::getErrorCode() { | 242 ErrorCode &BrowserCompileServer::getErrorCode() { |
244 llvm::report_fatal_error("no browser hookups"); | 243 llvm::report_fatal_error("no browser hookups"); |
245 } | 244 } |
246 | 245 |
247 } // end of namespace Ice | 246 } // end of namespace Ice |
248 | 247 |
249 #endif // PNACL_BROWSER_TRANSLATOR | 248 #endif // PNACL_BROWSER_TRANSLATOR |
OLD | NEW |