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 }