Revision: 5269 http://trac.macosforge.org/projects/ruby/changeset/5269 Author: lsansonetti@apple.com Date: 2011-03-09 16:01:04 -0800 (Wed, 09 Mar 2011) Log Message: ----------- add support for llvm 2.9, test it by passing CFLAGS=-D__SUPPORT_LLVM_29__ to rake Modified Paths: -------------- MacRuby/trunk/bridgesupport.cpp MacRuby/trunk/compiler.cpp MacRuby/trunk/compiler.h MacRuby/trunk/debugger.cpp MacRuby/trunk/llvm.h MacRuby/trunk/vm.cpp Modified: MacRuby/trunk/bridgesupport.cpp =================================================================== --- MacRuby/trunk/bridgesupport.cpp 2011-03-09 23:59:37 UTC (rev 5268) +++ MacRuby/trunk/bridgesupport.cpp 2011-03-10 00:01:04 UTC (rev 5269) @@ -18,6 +18,9 @@ # include <llvm/Instructions.h> # include <llvm/Intrinsics.h> # include <llvm/Analysis/DebugInfo.h> +# if __SUPPORT_LLVM_29__ +# include <llvm/Analysis/DIBuilder.h> +# endif # include <llvm/ExecutionEngine/JIT.h> # include <llvm/PassManager.h> # include <llvm/Target/TargetData.h> Modified: MacRuby/trunk/compiler.cpp =================================================================== --- MacRuby/trunk/compiler.cpp 2011-03-09 23:59:37 UTC (rev 5268) +++ MacRuby/trunk/compiler.cpp 2011-03-10 00:01:04 UTC (rev 5269) @@ -150,7 +150,11 @@ RoxorCompiler::RoxorCompiler(bool _debug_mode) { assert(RoxorCompiler::module != NULL); +#if __SUPPORT_LLVM_29__ + debug_info = new DIBuilder(*RoxorCompiler::module); +#else debug_info = new DIFactory(*RoxorCompiler::module); +#endif can_interpret = false; debug_mode = _debug_mode; @@ -835,8 +839,18 @@ RoxorCompiler::attach_current_line_metadata(Instruction *insn) { if (fname != NULL) { +#if __SUPPORT_LLVM_29__ + Value *args[] = { + ConstantInt::get(Int32Ty, current_line), + ConstantInt::get(Int32Ty, 0), + debug_compile_unit, + DILocation(NULL) + }; + DILocation loc = DILocation(MDNode::get(context, args, 4)); +#else DILocation loc = debug_info->CreateLocation(current_line, 0, debug_compile_unit, DILocation(NULL)); +#endif insn->setMetadata(dbg_mdkind, loc); } } @@ -4880,8 +4894,14 @@ assert(strlen(dir) > 0); assert(strlen(base) > 0); +#if __SUPPORT_LLVM_29__ + debug_info->createCompileUnit(DW_LANG_Ruby, base, dir, + RUBY_DESCRIPTION, true, "", 1); + debug_compile_unit = DICompileUnit(debug_info->getCU()); +#else debug_compile_unit = debug_info->CreateCompileUnit(DW_LANG_Ruby, base, dir, RUBY_DESCRIPTION, false, false, ""); +#endif } } } Modified: MacRuby/trunk/compiler.h =================================================================== --- MacRuby/trunk/compiler.h 2011-03-09 23:59:37 UTC (rev 5268) +++ MacRuby/trunk/compiler.h 2011-03-10 00:01:04 UTC (rev 5269) @@ -79,7 +79,11 @@ void generate_location_path(std::string &path, DILocation loc); protected: +#if __SUPPORT_LLVM_29__ + DIBuilder *debug_info; +#else DIFactory *debug_info; +#endif DICompileUnit debug_compile_unit; DISubprogram debug_subprogram; Modified: MacRuby/trunk/debugger.cpp =================================================================== --- MacRuby/trunk/debugger.cpp 2011-03-09 23:59:37 UTC (rev 5268) +++ MacRuby/trunk/debugger.cpp 2011-03-10 00:01:04 UTC (rev 5269) @@ -15,6 +15,9 @@ #include <llvm/Instructions.h> #include <llvm/Intrinsics.h> #include <llvm/Analysis/DebugInfo.h> +#if __SUPPORT_LLVM_29__ +# include <llvm/Analysis/DIBuilder.h> +#endif #include <llvm/ExecutionEngine/JIT.h> #include <llvm/PassManager.h> #include <llvm/Target/TargetData.h> Modified: MacRuby/trunk/llvm.h =================================================================== --- MacRuby/trunk/llvm.h 2011-03-09 23:59:37 UTC (rev 5268) +++ MacRuby/trunk/llvm.h 2011-03-10 00:01:04 UTC (rev 5269) @@ -17,6 +17,9 @@ #include <llvm/Instructions.h> #include <llvm/Intrinsics.h> #include <llvm/Analysis/DebugInfo.h> +#if __SUPPORT_LLVM_29__ +# include <llvm/Analysis/DIBuilder.h> +#endif #include <llvm/ExecutionEngine/JIT.h> #include <llvm/PassManager.h> #include <llvm/Target/TargetData.h> Modified: MacRuby/trunk/vm.cpp =================================================================== --- MacRuby/trunk/vm.cpp 2011-03-09 23:59:37 UTC (rev 5268) +++ MacRuby/trunk/vm.cpp 2011-03-10 00:01:04 UTC (rev 5269) @@ -21,6 +21,9 @@ # include <llvm/Instructions.h> # include <llvm/PassManager.h> # include <llvm/Analysis/DebugInfo.h> +# if __SUPPORT_LLVM_29__ +# include <llvm/Analysis/DIBuilder.h> +# endif # include <llvm/Analysis/Verifier.h> # include <llvm/Target/TargetData.h> # include <llvm/CodeGen/MachineFunction.h> @@ -35,6 +38,9 @@ # include <llvm/Transforms/Scalar.h> # include <llvm/Transforms/IPO.h> # include <llvm/Support/raw_ostream.h> +# if __SUPPORT_LLVM_29__ +# include <llvm/Support/system_error.h> +# endif # include <llvm/Support/PrettyStackTrace.h> # include <llvm/Support/MemoryBuffer.h> # include <llvm/Support/StandardPasses.h> @@ -4923,11 +4929,23 @@ // To not corrupt stack pointer (essential for backtracing). llvm::NoFramePointerElim = true; - MemoryBuffer *mbuf; + MemoryBuffer *mbuf = NULL; const char *kernel_file = getenv("VM_KERNEL_PATH"); if (kernel_file != NULL) { std::string err; +#if __SUPPORT_LLVM_29__ + OwningPtr<MemoryBuffer> MB; + error_code errcode = MemoryBuffer::getFile(kernel_file, MB); + if (errcode) { + err = errcode.message(); + } + else { + mbuf = MB.take(); + assert(mbuf != NULL); + } +#else mbuf = MemoryBuffer::getFile(kernel_file, &err); +#endif if (mbuf == NULL) { printf("can't open given kernel file `%s': %s\n", kernel_file, err.c_str());
participants (1)
-
source_changes@macosforge.org