[macruby-changes] [1972] MacRuby/branches/experimental/vm.cpp
source_changes at macosforge.org
source_changes at macosforge.org
Thu Jul 2 12:28:49 PDT 2009
Revision: 1972
http://trac.macosforge.org/projects/ruby/changeset/1972
Author: lsansonetti at apple.com
Date: 2009-07-02 12:28:47 -0700 (Thu, 02 Jul 2009)
Log Message:
-----------
AOT compiler: properly catch exceptions
Modified Paths:
--------------
MacRuby/branches/experimental/vm.cpp
Modified: MacRuby/branches/experimental/vm.cpp
===================================================================
--- MacRuby/branches/experimental/vm.cpp 2009-07-02 19:08:08 UTC (rev 1971)
+++ MacRuby/branches/experimental/vm.cpp 2009-07-02 19:28:47 UTC (rev 1972)
@@ -4065,14 +4065,18 @@
// Compile main function.
std::string main_path(tmpdir);
- main_path.append("main.c");
+ main_path.append("main.cpp");
std::ofstream main_file(main_path.c_str());
std::string main_content(
-"extern void ruby_sysinit(int *, char ***);\n"
-"extern void ruby_init(void);\n"
-"extern void ruby_set_argv(int, char **);\n"
-"extern void *rb_vm_top_self(void);\n"
-"extern void *rb_main(void *, void *);\n"
+"extern \"C\" {\n"
+" void ruby_sysinit(int *, char ***);\n"
+" void ruby_init(void);\n"
+" void ruby_set_argv(int, char **);\n"
+" void *rb_vm_top_self(void);\n"
+" void rb_vm_print_current_exception(void);\n"
+" void rb_exit(int);\n"
+" void *rb_main(void *, void *);\n"
+"}\n"
"\n"
"int main(int argc, char **argv)\n"
"{\n"
@@ -4082,14 +4086,20 @@
" }\n"
" ruby_init();\n"
" ruby_set_argv(argc, argv);\n"
-" rb_main(rb_vm_top_self(), 0);\n"
-" return 1;\n"
+" try {\n"
+" rb_main(rb_vm_top_self(), 0);\n"
+" }\n"
+" catch (...) {\n"
+" rb_vm_print_current_exception();\n"
+" rb_exit(1);\n"
+" }\n"
+" rb_exit(0);\n"
"}\n"
);
main_file.write(main_content.c_str(), main_content.size());
main_file.close();
gcc_line.clear();
- gcc_line.append("gcc ");
+ gcc_line.append("g++ ");
gcc_line.append(main_path);
gcc_line.append(" -c -arch x86_64 -o ");
std::string main_o_path(tmpdir);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090702/371dac54/attachment.html>
More information about the macruby-changes
mailing list