[macruby-changes] [4547] MacRuby/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Mon Sep 27 23:04:40 PDT 2010
Revision: 4547
http://trac.macosforge.org/projects/ruby/changeset/4547
Author: lsansonetti at apple.com
Date: 2010-09-27 23:04:36 -0700 (Mon, 27 Sep 2010)
Log Message:
-----------
when calculating a backtrace path from a -e script, omit the current directory
Modified Paths:
--------------
MacRuby/trunk/compiler.cpp
MacRuby/trunk/compiler.h
MacRuby/trunk/interpreter.cpp
MacRuby/trunk/vm.cpp
Modified: MacRuby/trunk/compiler.cpp
===================================================================
--- MacRuby/trunk/compiler.cpp 2010-09-28 05:47:47 UTC (rev 4546)
+++ MacRuby/trunk/compiler.cpp 2010-09-28 06:04:36 UTC (rev 4547)
@@ -832,6 +832,19 @@
}
}
+void
+RoxorCompiler::generate_location_path(std::string &path, DILocation loc)
+{
+ if (loc.getFilename() == "-e") {
+ path.append(loc.getFilename());
+ }
+ else {
+ path.append(loc.getDirectory());
+ path.append("/");
+ path.append(loc.getFilename());
+ }
+}
+
Value *
RoxorCompiler::recompile_dispatch_argv(std::vector<Value *> ¶ms, int offset)
{
Modified: MacRuby/trunk/compiler.h
===================================================================
--- MacRuby/trunk/compiler.h 2010-09-28 05:47:47 UTC (rev 4546)
+++ MacRuby/trunk/compiler.h 2010-09-28 06:04:36 UTC (rev 4547)
@@ -76,6 +76,8 @@
bool is_dynamic_class(void) { return dynamic_class; }
void set_dynamic_class(bool flag) { dynamic_class = flag; }
+ void generate_location_path(std::string &path, DILocation loc);
+
protected:
DIFactory *debug_info;
DICompileUnit debug_compile_unit;
Modified: MacRuby/trunk/interpreter.cpp
===================================================================
--- MacRuby/trunk/interpreter.cpp 2010-09-28 05:47:47 UTC (rev 4546)
+++ MacRuby/trunk/interpreter.cpp 2010-09-28 06:04:36 UTC (rev 4547)
@@ -84,11 +84,9 @@
MDNode *node = call->getMetadata(RoxorCompiler::shared->dbg_mdkind);
if (node != NULL) {
- DILocation loc(node);
std::string path;
- path.append(loc.getDirectory());
- path.append("/");
- path.append(loc.getFilename());
+ DILocation loc(node);
+ RoxorCompiler::shared->generate_location_path(path, loc);
Frame frame;
frame.name = (const char *)sel;
Modified: MacRuby/trunk/vm.cpp
===================================================================
--- MacRuby/trunk/vm.cpp 2010-09-28 05:47:47 UTC (rev 4546)
+++ MacRuby/trunk/vm.cpp 2010-09-28 06:04:36 UTC (rev 4547)
@@ -265,14 +265,11 @@
std::string path;
for (std::vector<EmittedFunctionDetails::LineStart>::const_iterator iter = Details.LineStarts.begin(); iter != Details.LineStarts.end(); ++iter) {
MDNode *scope = iter->Loc.getAsMDNode(F.getContext());
- DILocation dil = DILocation(scope);
+ DILocation loc = DILocation(scope);
if (path.size() == 0) {
- DIScope scope = dil.getScope();
- path.append(scope.getDirectory());
- path.append("/");
- path.append(scope.getFilename());
+ RoxorCompiler::shared->generate_location_path(path, loc);
}
- RoxorFunction::Line line(iter->Address, dil.getLineNumber());
+ RoxorFunction::Line line(iter->Address, loc.getLineNumber());
function->lines.push_back(line);
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100927/d7ccde8a/attachment.html>
More information about the macruby-changes
mailing list