mirror of
https://github.com/matrix-construct/construct
synced 2025-01-01 18:34:18 +01:00
ircd::js: Add debug dump() calls from JS_DEBUG ifdef'ed api.
This commit is contained in:
parent
54c8044ca1
commit
7e66df914a
3 changed files with 103 additions and 2 deletions
|
@ -25,6 +25,7 @@
|
|||
namespace ircd {
|
||||
namespace js {
|
||||
|
||||
// Returns static string
|
||||
const char *reflect(const JSType &);
|
||||
const char *reflect(const JSExnType &);
|
||||
const char *reflect(const JSGCStatus &);
|
||||
|
@ -33,10 +34,25 @@ const char *reflect(const JSFinalizeStatus &);
|
|||
const char *reflect(const JSContextOp &);
|
||||
const char *reflect_telemetry(const int &id);
|
||||
|
||||
// Returns single-line string
|
||||
std::string debug(const JS::Value &);
|
||||
std::string debug(const JS::HandleObject &);
|
||||
std::string debug(const JSErrorReport &);
|
||||
void debug_log_gcparams();
|
||||
|
||||
// prints to IRCd stdout
|
||||
void dump(const JSString *const &v);
|
||||
void dump(const JSAtom *const &v);
|
||||
void dump(const JSObject *const &v);
|
||||
void dump(const JS::Value &v);
|
||||
void dump(const jsid &v);
|
||||
void dump(const JSContext *v);
|
||||
void dump(const JSScript *const &v);
|
||||
void dump(const char16_t *const &v, const size_t &len);
|
||||
void dump(const ::js::InterpreterFrame *v);
|
||||
void backtrace();
|
||||
|
||||
// writes lines to ircd::js::log
|
||||
void log_gcparams();
|
||||
|
||||
} // namespace js
|
||||
} // namespace ircd
|
||||
|
|
|
@ -39,6 +39,11 @@
|
|||
#include <jsapi.h>
|
||||
#include <js/Conversions.h>
|
||||
|
||||
// Some forward declarations for jsapi items not declared in the above includes,
|
||||
// but visible to definition files making use of additional jsapi interfaces.
|
||||
struct JSAtom;
|
||||
namespace js { struct InterpreterFrame; }
|
||||
|
||||
namespace ircd {
|
||||
namespace js {
|
||||
|
||||
|
|
82
ircd/js.cc
82
ircd/js.cc
|
@ -1466,7 +1466,7 @@ ircd::js::jserror::create(JSErrorReport &report)
|
|||
//
|
||||
|
||||
void
|
||||
ircd::js::debug_log_gcparams()
|
||||
ircd::js::log_gcparams()
|
||||
{
|
||||
for(int i(0); i < 50; ++i)
|
||||
{
|
||||
|
@ -1494,6 +1494,86 @@ ircd::js::debug_log_gcparams()
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
ircd::js::backtrace()
|
||||
{
|
||||
#ifdef JS_DEBUG
|
||||
::js::DumpBacktrace(*cx);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
ircd::js::dump(const JSString *const &v)
|
||||
{
|
||||
#ifdef JS_DEBUG
|
||||
::js::DumpString(const_cast<JSString *>(v));
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
ircd::js::dump(const JSAtom *const &v)
|
||||
{
|
||||
#ifdef JS_DEBUG
|
||||
::js::DumpAtom(const_cast<JSAtom *>(v));
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
ircd::js::dump(const JSObject *const &v)
|
||||
{
|
||||
#ifdef JS_DEBUG
|
||||
::js::DumpObject(const_cast<JSObject *>(v));
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
ircd::js::dump(const JS::Value &v)
|
||||
{
|
||||
#ifdef JS_DEBUG
|
||||
::js::DumpValue(v);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
ircd::js::dump(const jsid &v)
|
||||
{
|
||||
#ifdef JS_DEBUG
|
||||
::js::DumpId(v);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
ircd::js::dump(const JSContext *v)
|
||||
{
|
||||
#ifdef JS_DEBUG
|
||||
::js::DumpPC(const_cast<JSContext *>(v));
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
ircd::js::dump(const JSScript *const &v)
|
||||
{
|
||||
#ifdef JS_DEBUG
|
||||
::js::DumpScript(*cx, const_cast<JSScript *>(v));
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
ircd::js::dump(const char16_t *const &v, const size_t &len)
|
||||
{
|
||||
#ifdef JS_DEBUG
|
||||
::js::DumpChars(v, len);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
ircd::js::dump(const ::js::InterpreterFrame *v)
|
||||
{
|
||||
#ifdef JS_DEBUG
|
||||
::js::DumpInterpreterFrame(*cx, const_cast<::js::InterpreterFrame *>(v));
|
||||
#endif
|
||||
}
|
||||
|
||||
std::string
|
||||
ircd::js::debug(const JSErrorReport &r)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue