Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(796)

Side by Side Diff: src/IceGlobalContext.cpp

Issue 641193002: Introduce the notion of function addresses in Subzero. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix nit in test. Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/IceGlobalContext.h ('k') | src/IceGlobalInits.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 //===- subzero/src/IceGlobalContext.cpp - Global context defs -------------===// 1 //===- subzero/src/IceGlobalContext.cpp - Global context defs -------------===//
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 // This file defines aspects of the compilation that persist across 10 // This file defines aspects of the compilation that persist across
11 // multiple functions. 11 // multiple functions.
12 // 12 //
13 //===----------------------------------------------------------------------===// 13 //===----------------------------------------------------------------------===//
14 14
15 #include <ctype.h> // isdigit(), isupper() 15 #include <ctype.h> // isdigit(), isupper()
16 #include <locale> // locale 16 #include <locale> // locale
17 17
18 #include "IceCfg.h" 18 #include "IceCfg.h"
19 #include "IceClFlags.h" 19 #include "IceClFlags.h"
20 #include "IceDefs.h" 20 #include "IceDefs.h"
21 #include "IceGlobalContext.h" 21 #include "IceGlobalContext.h"
22 #include "IceGlobalInits.h"
22 #include "IceOperand.h" 23 #include "IceOperand.h"
23 #include "IceTargetLowering.h" 24 #include "IceTargetLowering.h"
24 #include "IceTimerTree.h" 25 #include "IceTimerTree.h"
25 #include "IceTypes.h" 26 #include "IceTypes.h"
26 27
27 namespace Ice { 28 namespace Ice {
28 29
29 // TypePool maps constants of type KeyType (e.g. float) to pointers to 30 // TypePool maps constants of type KeyType (e.g. float) to pointers to
30 // type ValueType (e.g. ConstantFloat). KeyType values are compared 31 // type ValueType (e.g. ConstantFloat). KeyType values are compared
31 // using memcmp() because of potential NaN values in KeyType values. 32 // using memcmp() because of potential NaN values in KeyType values.
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 OrigSuffix.data()); 283 OrigSuffix.data());
283 incrementSubstitutions(NewName); 284 incrementSubstitutions(NewName);
284 return NewName.data(); 285 return NewName.data();
285 } 286 }
286 287
287 // Transform bar ==> Prefixbar 288 // Transform bar ==> Prefixbar
288 // ^^^^^^ 289 // ^^^^^^
289 return getTestPrefix() + Name; 290 return getTestPrefix() + Name;
290 } 291 }
291 292
292 GlobalContext::~GlobalContext() {} 293 GlobalContext::~GlobalContext() {
294 llvm::DeleteContainerPointers(GlobalDeclarations);
295 }
293 296
294 Constant *GlobalContext::getConstantInt64(Type Ty, uint64_t ConstantInt64) { 297 Constant *GlobalContext::getConstantInt64(Type Ty, uint64_t ConstantInt64) {
295 assert(Ty == IceType_i64); 298 assert(Ty == IceType_i64);
296 return ConstPool->Integers64.getOrAdd(this, Ty, ConstantInt64); 299 return ConstPool->Integers64.getOrAdd(this, Ty, ConstantInt64);
297 } 300 }
298 301
299 Constant *GlobalContext::getConstantInt32(Type Ty, uint32_t ConstantInt32) { 302 Constant *GlobalContext::getConstantInt32(Type Ty, uint32_t ConstantInt32) {
300 if (Ty == IceType_i1) 303 if (Ty == IceType_i1)
301 ConstantInt32 &= UINT32_C(1); 304 ConstantInt32 &= UINT32_C(1);
302 return ConstPool->Integers32.getOrAdd(this, Ty, ConstantInt32); 305 return ConstPool->Integers32.getOrAdd(this, Ty, ConstantInt32);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 BaseOS << "Unsupported constant type: " << Ty; 381 BaseOS << "Unsupported constant type: " << Ty;
379 llvm_unreachable(BaseOS.str().c_str()); 382 llvm_unreachable(BaseOS.str().c_str());
380 } break; 383 } break;
381 case IceType_void: 384 case IceType_void:
382 case IceType_NUM: 385 case IceType_NUM:
383 break; 386 break;
384 } 387 }
385 llvm_unreachable("Unknown type"); 388 llvm_unreachable("Unknown type");
386 } 389 }
387 390
391 FunctionDeclaration *
392 GlobalContext::newFunctionDeclaration(const FuncSigType *Signature,
393 unsigned CallingConv, unsigned Linkage,
394 bool IsProto) {
395 FunctionDeclaration *Func = new FunctionDeclaration(
396 *Signature, static_cast<llvm::CallingConv::ID>(CallingConv),
397 static_cast<llvm::GlobalValue::LinkageTypes>(Linkage), IsProto);
398 GlobalDeclarations.push_back(Func);
399 return Func;
400 }
401
402 VariableDeclaration *GlobalContext::newVariableDeclaration() {
403 VariableDeclaration *Var = new VariableDeclaration();
404 GlobalDeclarations.push_back(Var);
405 return Var;
406 }
407
388 TimerIdT GlobalContext::getTimerID(TimerStackIdT StackID, 408 TimerIdT GlobalContext::getTimerID(TimerStackIdT StackID,
389 const IceString &Name) { 409 const IceString &Name) {
390 assert(StackID < Timers.size()); 410 assert(StackID < Timers.size());
391 return Timers[StackID].getTimerID(Name); 411 return Timers[StackID].getTimerID(Name);
392 } 412 }
393 413
394 TimerStackIdT GlobalContext::newTimerStackID(const IceString &Name) { 414 TimerStackIdT GlobalContext::newTimerStackID(const IceString &Name) {
395 TimerStackIdT NewID = Timers.size(); 415 TimerStackIdT NewID = Timers.size();
396 Timers.push_back(TimerStack(Name)); 416 Timers.push_back(TimerStack(Name));
397 return NewID; 417 return NewID;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 } 455 }
436 456
437 TimerMarker::TimerMarker(TimerIdT ID, const Cfg *Func) 457 TimerMarker::TimerMarker(TimerIdT ID, const Cfg *Func)
438 : ID(ID), Ctx(Func->getContext()), 458 : ID(ID), Ctx(Func->getContext()),
439 Active(Func->getFocusedTiming() || Ctx->getFlags().SubzeroTimingEnabled) { 459 Active(Func->getFocusedTiming() || Ctx->getFlags().SubzeroTimingEnabled) {
440 if (Active) 460 if (Active)
441 Ctx->pushTimer(ID); 461 Ctx->pushTimer(ID);
442 } 462 }
443 463
444 } // end of namespace Ice 464 } // end of namespace Ice
OLDNEW
« no previous file with comments | « src/IceGlobalContext.h ('k') | src/IceGlobalInits.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698