Mercurial > projects > ldc
comparison gen/runtime.cpp @ 309:d59c363fccad trunk
[svn r330] Implemented synchronized statements.
Changed the tryfinally handlers to a more generalized EnclosingHandler.
Changed ClassInfoS to be mutable so they can be used as locks.
Added new BB after throw ala return/break etc.
author | lindquist |
---|---|
date | Sat, 28 Jun 2008 11:37:53 +0200 |
parents | a3b7c19c866c |
children | 8d98e42ece93 |
comparison
equal
deleted
inserted
replaced
308:6b62e8cdf970 | 309:d59c363fccad |
---|---|
850 llvm::PAListPtr palist; | 850 llvm::PAListPtr palist; |
851 palist = palist.addAttr(1, llvm::ParamAttr::ByVal); | 851 palist = palist.addAttr(1, llvm::ParamAttr::ByVal); |
852 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); | 852 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); |
853 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); | 853 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); |
854 } | 854 } |
855 } | 855 |
856 | 856 ///////////////////////////////////////////////////////////////////////////////////// |
857 | 857 ///////////////////////////////////////////////////////////////////////////////////// |
858 | 858 ///////////////////////////////////////////////////////////////////////////////////// |
859 | 859 |
860 | 860 // void _d_criticalenter(D_CRITICAL_SECTION *dcs) |
861 | 861 // void _d_criticalexit(D_CRITICAL_SECTION *dcs) |
862 { | |
863 std::string fname("_d_criticalenter"); | |
864 std::string fname2("_d_criticalexit"); | |
865 std::vector<const LLType*> types; | |
866 types.push_back(rt_ptr(DtoMutexType())); | |
867 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); | |
868 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); | |
869 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M); | |
870 } | |
871 | |
872 // void _d_monitorenter(Object h) | |
873 // void _d_monitorexit(Object h) | |
874 { | |
875 std::string fname("_d_monitorenter"); | |
876 std::string fname2("_d_monitorexit"); | |
877 std::vector<const LLType*> types; | |
878 types.push_back(objectTy); | |
879 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); | |
880 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); | |
881 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M); | |
882 } | |
883 } |