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

Side by Side Diff: src/IceConverter.h

Issue 1776473007: Subzero. Allocate global initializers from a dedicated arena. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Removes global variable (and initializer) allocation methods from GlobalContext. Created 4 years, 9 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/IceCompiler.cpp ('k') | src/IceConverter.cpp » ('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/IceConverter.h - Converts LLVM to ICE --------*- C++ -*-===// 1 //===- subzero/src/IceConverter.h - Converts LLVM to ICE --------*- C++ -*-===//
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 14 matching lines...) Expand all
25 25
26 namespace Ice { 26 namespace Ice {
27 27
28 class Converter : public Translator { 28 class Converter : public Translator {
29 Converter() = delete; 29 Converter() = delete;
30 Converter(const Converter &) = delete; 30 Converter(const Converter &) = delete;
31 Converter &operator=(const Converter &) = delete; 31 Converter &operator=(const Converter &) = delete;
32 32
33 public: 33 public:
34 Converter(llvm::Module *Mod, GlobalContext *Ctx) 34 Converter(llvm::Module *Mod, GlobalContext *Ctx)
35 : Translator(Ctx), Mod(Mod) {} 35 : Translator(Ctx), Mod(Mod),
36 GlobalDeclarationsPool(new VariableDeclarationList()) {}
36 37
37 ~Converter() override = default; 38 ~Converter() override = default;
38 39
39 /// Converts the LLVM Module to ICE. Sets exit status to false if successful, 40 /// Converts the LLVM Module to ICE. Sets exit status to false if successful,
40 /// true otherwise. 41 /// true otherwise.
41 void convertToIce(); 42 void convertToIce();
42 43
43 llvm::Module *getModule() const { return Mod; } 44 llvm::Module *getModule() const { return Mod; }
44 45
45 /// Returns the global declaration associated with the corresponding global 46 /// Returns the global declaration associated with the corresponding global
46 /// value V. If no such global address, generates fatal error. 47 /// value V. If no such global address, generates fatal error.
47 GlobalDeclaration *getGlobalDeclaration(const llvm::GlobalValue *V); 48 GlobalDeclaration *getGlobalDeclaration(const llvm::GlobalValue *V);
48 49
49 private: 50 private:
50 llvm::Module *Mod; 51 llvm::Module *Mod;
51 using GlobalDeclarationMapType = 52 using GlobalDeclarationMapType =
52 std::map<const llvm::GlobalValue *, GlobalDeclaration *>; 53 std::map<const llvm::GlobalValue *, GlobalDeclaration *>;
53 GlobalDeclarationMapType GlobalDeclarationMap; 54 GlobalDeclarationMapType GlobalDeclarationMap;
54 55
56 std::unique_ptr<VariableDeclarationList> GlobalDeclarationsPool;
57
55 /// Walks module and generates names for unnamed globals using prefix 58 /// Walks module and generates names for unnamed globals using prefix
56 /// getFlags().DefaultGlobalPrefix, if the prefix is non-empty. 59 /// getFlags().DefaultGlobalPrefix, if the prefix is non-empty.
57 void nameUnnamedGlobalVariables(llvm::Module *Mod); 60 void nameUnnamedGlobalVariables(llvm::Module *Mod);
58 61
59 /// Walks module and generates names for unnamed functions using prefix 62 /// Walks module and generates names for unnamed functions using prefix
60 /// getFlags().DefaultFunctionPrefix, if the prefix is non-empty. 63 /// getFlags().DefaultFunctionPrefix, if the prefix is non-empty.
61 void nameUnnamedFunctions(llvm::Module *Mod); 64 void nameUnnamedFunctions(llvm::Module *Mod);
62 65
63 /// Converts functions to ICE, and then machine code. 66 /// Converts functions to ICE, and then machine code.
64 void convertFunctions(); 67 void convertFunctions();
65 68
66 /// Converts globals to ICE, and then machine code. 69 /// Converts globals to ICE, and then machine code.
67 void convertGlobals(llvm::Module *Mod); 70 void convertGlobals(llvm::Module *Mod);
68 71
69 /// Installs global declarations into GlobalDeclarationMap. 72 /// Installs global declarations into GlobalDeclarationMap.
70 void installGlobalDeclarations(llvm::Module *Mod); 73 void installGlobalDeclarations(llvm::Module *Mod);
71 }; 74 };
72 75
73 } // end of namespace ICE. 76 } // end of namespace ICE.
74 77
75 #endif // SUBZERO_SRC_ICECONVERTER_H 78 #endif // SUBZERO_SRC_ICECONVERTER_H
OLDNEW
« no previous file with comments | « src/IceCompiler.cpp ('k') | src/IceConverter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698