summaryrefslogtreecommitdiff
path: root/src/support/debug.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/support/debug.h')
-rw-r--r--src/support/debug.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/support/debug.h b/src/support/debug.h
new file mode 100644
index 000000000..960082d1a
--- /dev/null
+++ b/src/support/debug.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2019 WebAssembly Community Group participants
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Implements BYN_DEBUG macro similar to llvm's include/llvm/Support/Debug.h,
+// which can include any code, and in addition and printf-file BYN_TRACE.
+//
+// To use these macros you must define DEBUG_TYPE to a C string within your
+// source code which then acts as the name of a channel which can be
+// individually enabled via --debug=<chan>. Specifying --debug without any
+// argument enables all channels.
+
+#ifndef wasm_support_debug_h
+#define wasm_support_debug_h
+
+#ifndef NDEBUG
+
+namespace wasm {
+bool isDebugEnabled(const char* type);
+void setDebugEnabled(const char* types);
+} // namespace wasm
+
+#define BYN_DEBUG_WITH_TYPE(TYPE, X) \
+ do { \
+ if (::wasm::isDebugEnabled(TYPE)) { \
+ X; \
+ } \
+ } while (false)
+
+#define BYN_TRACE_WITH_TYPE(TYPE, MSG) \
+ BYN_DEBUG_WITH_TYPE(TYPE, std::cerr << MSG);
+
+#else
+
+#define BYN_DEBUG_WITH_TYPE(...) \
+ do { \
+ } while (false)
+#define BYN_TRACE_WITH_TYPE(...) \
+ do { \
+ } while (false)
+#define isDebugEnabled() (false)
+#define setDebugEnabled()
+
+#endif
+
+#define BYN_DEBUG(X) BYN_DEBUG_WITH_TYPE(DEBUG_TYPE, X)
+#define BYN_TRACE(MSG) BYN_TRACE_WITH_TYPE(DEBUG_TYPE, MSG)
+
+#endif // wasm_support_debug_h