Skip to content

Commit

Permalink
Objective-J backtrace prints object hash id
Browse files Browse the repository at this point in the history
  • Loading branch information
Tom Robinson committed Nov 19, 2008
1 parent 3b65f46 commit 44b6f8c
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions Objective-J/debug.js
@@ -1,17 +1,22 @@
function objj_backtrace_format(aReceiver, aSelector)
{
return "[<" + GETMETA(aReceiver).name + " " + (typeof sprintf == "function" ? sprintf("%#08x", aReceiver.__address) : aReceiver.__address.toString(16)) + "> " + aSelector + "]";
}

function objj_msgSend_Backtrace(/*id*/ aReceiver, /*SEL*/ aSelector)
{
if (aReceiver == nil)
return nil;

objj_debug_backtrace.push("[" + GETMETA(aReceiver).name + " " + aSelector + "]");
objj_debug_backtrace.push(objj_backtrace_format(aReceiver, aSelector));

try
{
var result = class_getMethodImplementation(aReceiver.isa, aSelector).apply(aReceiver, arguments);
}
catch (anException)
{
CPLog.error("Exception " + anException + " in [" + GETMETA(aReceiver).name + " " + aSelector + "]");
CPLog.error("Exception " + anException + " in " + objj_backtrace_format(aReceiver, aSelector));
objj_debug_print_backtrace();
}

Expand All @@ -22,7 +27,7 @@ function objj_msgSend_Backtrace(/*id*/ aReceiver, /*SEL*/ aSelector)

function objj_msgSendSuper_Backtrace(/*id*/ aSuper, /*SEL*/ aSelector)
{
objj_debug_backtrace.push("[" + GETMETA(aSuper.receiver).name + " " + aSelector + "]");
objj_debug_backtrace.push(objj_backtrace_format(aSuper.receiver, aSelector));
var super_class = aSuper.super_class;

arguments[0] = aSuper.receiver;
Expand All @@ -33,7 +38,7 @@ function objj_msgSendSuper_Backtrace(/*id*/ aSuper, /*SEL*/ aSelector)
}
catch (anException)
{
CPLog.error("Exception " + anException + " in [" + GETMETA(aSuper.receiver).name + " " + aSelector + "]");
CPLog.error("Exception " + anException + " in " + objj_backtrace_format(aSuper.receiver, aSelector));
objj_debug_print_backtrace();
}

Expand Down Expand Up @@ -97,7 +102,7 @@ var objj_msgSend_Standard = objj_msgSend,
// FIXME: This could be much better.
var objj_debug_backtrace;

function objj_backtrace_set_enable(enabled)
function objj_backtrace_set_enabled(enabled)
{
if (enabled)
{
Expand All @@ -119,7 +124,7 @@ function objj_debug_print_backtrace()

function objj_debug_backtrace_string()
{
return objj_debug_backtrace.join("\n");
return objj_debug_backtrace ? objj_debug_backtrace.join("\n") : "";
}

var objj_debug_profile = null,
Expand Down

0 comments on commit 44b6f8c

Please sign in to comment.