summaryrefslogtreecommitdiff
path: root/gjs
diff options
context:
space:
mode:
authorHavoc Pennington <hp@pobox.com>2010-01-03 11:48:27 -0500
committerHavoc Pennington <hp@pobox.com>2010-01-04 16:08:54 -0500
commit53716acf7d314a899fb00bb1e9ac71d1425e38a4 (patch)
tree8bc1068bd033275aeb8652452e313339eb58f729 /gjs
parentcabbbad0bc3977305d26b8a9da4dd54ab4880303 (diff)
downloadgjs-53716acf7d314a899fb00bb1e9ac71d1425e38a4.tar.gz
move gjs_error_reporter into a C++ file jsapi-private.cpp
The issue is that in latest SpiderMonkey, the headers are C++. jsapi-util.c included jscntxt.h (a C++ header) which is used only to implement gjs_error_reporter. jsapi-private.cpp will now contain any usage of private JS APIs that require the C++ headers. jsapi-private.h was added as well, but is empty; this is meant to export APIs for use by jsapi-util.c ... currently none.
Diffstat (limited to 'gjs')
-rw-r--r--gjs/jsapi-private.cpp84
-rw-r--r--gjs/jsapi-private.h40
-rw-r--r--gjs/jsapi-util.c53
3 files changed, 126 insertions, 51 deletions
diff --git a/gjs/jsapi-private.cpp b/gjs/jsapi-private.cpp
new file mode 100644
index 00000000..b27935aa
--- /dev/null
+++ b/gjs/jsapi-private.cpp
@@ -0,0 +1,84 @@
+/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/*
+ * Copyright (c) 2010 litl, LLC
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include <config.h>
+
+#include <util/log.h>
+#include <util/glib.h>
+#include <util/misc.h>
+
+#include "jsapi-util.h"
+#include "jsapi-private.h"
+#include "context-jsapi.h"
+
+#include <string.h>
+#include <jscntxt.h>
+
+void
+gjs_error_reporter(JSContext *context,
+ const char *message,
+ JSErrorReport *report)
+{
+ const char *warning;
+
+ if (gjs_environment_variable_is_set("GJS_ABORT_ON_OOM") &&
+ report->flags == JSREPORT_ERROR &&
+ report->errorNumber == JSMSG_OUT_OF_MEMORY) {
+ g_error("GJS ran out of memory at %s: %i.",
+ report->filename,
+ report->lineno);
+ }
+
+ if ((report->flags & JSREPORT_WARNING) != 0) {
+ /* We manually insert "WARNING" into the output instead of
+ * having GJS_DEBUG_WARNING because it's convenient to
+ * search for 'JS ERROR' to find all problems
+ */
+ warning = "WARNING: ";
+
+ /* suppress bogus warnings. See mozilla/js/src/js.msg */
+ switch (report->errorNumber) {
+ /* 162, JSMSG_UNDEFINED_PROP: warns every time a lazy property
+ * is resolved, since the property starts out
+ * undefined. When this is a real bug it should usually
+ * fail somewhere else anyhow.
+ */
+ case 162:
+ return;
+ }
+ } else {
+ warning = "REPORTED: ";
+ }
+
+ gjs_debug(GJS_DEBUG_ERROR,
+ "%s'%s'",
+ warning,
+ message);
+
+ gjs_debug(GJS_DEBUG_ERROR,
+ "%sfile '%s' line %u exception %d number %d",
+ warning,
+ report->filename, report->lineno,
+ (report->flags & JSREPORT_EXCEPTION) != 0,
+ report->errorNumber);
+}
diff --git a/gjs/jsapi-private.h b/gjs/jsapi-private.h
new file mode 100644
index 00000000..f48affe7
--- /dev/null
+++ b/gjs/jsapi-private.h
@@ -0,0 +1,40 @@
+/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/*
+ * Copyright (c) 2010 litl, LLC
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+/* This file wraps C++ stuff from the spidermonkey private API so we
+ * can use it from our other C files. This file should be included by
+ * jsapi-util.c only. "Public" API from this jsapi-private.c should be
+ * declared in jsapi-util.h
+ */
+
+#ifndef __GJS_JSAPI_PRIVATE_H__
+#define __GJS_JSAPI_PRIVATE_H__
+
+#include <jsapi.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+G_END_DECLS
+
+#endif /* __GJS_JSAPI_PRIVATE_H__ */
diff --git a/gjs/jsapi-util.c b/gjs/jsapi-util.c
index 57ca7320..ff268d69 100644
--- a/gjs/jsapi-util.c
+++ b/gjs/jsapi-util.c
@@ -30,11 +30,11 @@
#include "jsapi-util.h"
#include "context-jsapi.h"
+#include "jsapi-private.h"
#include <string.h>
-#include <jscntxt.h>
-GQuark
+GQuark
gjs_util_error_quark (void)
{
return g_quark_from_static_string ("gjs-util-error-quark");
@@ -920,55 +920,6 @@ gjs_call_function_value(JSContext *context,
return result;
}
-void
-gjs_error_reporter(JSContext *context,
- const char *message,
- JSErrorReport *report)
-{
- const char *warning;
-
- if (gjs_environment_variable_is_set("GJS_ABORT_ON_OOM") &&
- report->flags == JSREPORT_ERROR &&
- report->errorNumber == JSMSG_OUT_OF_MEMORY) {
- g_error("GJS ran out of memory at %s: %i.",
- report->filename,
- report->lineno);
- }
-
- if ((report->flags & JSREPORT_WARNING) != 0) {
- /* We manually insert "WARNING" into the output instead of
- * having GJS_DEBUG_WARNING because it's convenient to
- * search for 'JS ERROR' to find all problems
- */
- warning = "WARNING: ";
-
- /* suppress bogus warnings. See mozilla/js/src/js.msg */
- switch (report->errorNumber) {
- /* 162, JSMSG_UNDEFINED_PROP: warns every time a lazy property
- * is resolved, since the property starts out
- * undefined. When this is a real bug it should usually
- * fail somewhere else anyhow.
- */
- case 162:
- return;
- }
- } else {
- warning = "REPORTED: ";
- }
-
- gjs_debug(GJS_DEBUG_ERROR,
- "%s'%s'",
- warning,
- message);
-
- gjs_debug(GJS_DEBUG_ERROR,
- "%sfile '%s' line %u exception %d number %d",
- warning,
- report->filename, report->lineno,
- (report->flags & JSREPORT_EXCEPTION) != 0,
- report->errorNumber);
-}
-
static JSBool
log_prop(JSContext *context,
JSObject *obj,