| //===-- llvm/LLVMContext.h - Class for managing "global" state --*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file declares LLVMContext, a container of "global" state in LLVM, such |
| // as the global type and constant uniquing tables. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_LLVMCONTEXT_H |
| #define LLVM_LLVMCONTEXT_H |
| |
| namespace llvm { |
| |
| class LLVMContextImpl; |
| |
| /// This is an important class for using LLVM in a threaded context. It |
| /// (opaquely) owns and manages the core "global" data of LLVM's core |
| /// infrastructure, including the type and constant uniquing tables. |
| /// LLVMContext itself provides no locking guarantees, so you should be careful |
| /// to have one context per thread. |
| class LLVMContext { |
| // DO NOT IMPLEMENT |
| LLVMContext(LLVMContext&); |
| void operator=(LLVMContext&); |
| public: |
| LLVMContextImpl* pImpl; |
| bool RemoveDeadMetadata(); |
| LLVMContext(); |
| ~LLVMContext(); |
| }; |
| |
| /// FOR BACKWARDS COMPATIBILITY - Returns a global context. |
| extern LLVMContext& getGlobalContext(); |
| |
| } |
| |
| #endif |