aboutsummaryrefslogtreecommitdiff
path: root/src/macros.rs
diff options
context:
space:
mode:
authorGravatar Rahix <rahix@rahix.de> 2022-01-03 11:32:26 +0100
committerGravatar Rahix <rahix@rahix.de> 2022-01-03 11:39:55 +0100
commit19125ac052fcba1d67de39be3292e34bd6c6d0f4 (patch)
treecc8fc44e3e8ddb6f457d9722a4bdff288aabb35b /src/macros.rs
parent50c7fd34901eb9a2a9aec79c4c5a5574140046ba (diff)
downloadcortex-m-19125ac052fcba1d67de39be3292e34bd6c6d0f4.tar.gz
cortex-m-19125ac052fcba1d67de39be3292e34bd6c6d0f4.tar.zst
cortex-m-19125ac052fcba1d67de39be3292e34bd6c6d0f4.zip
macros: Allow setting a name for singleton!() statics
Right now, the `singleton!()` macro always creates a static named `VAR`. This is annoying when digging through objdump output or digging into memory with a debugger because it is hard to see what singleton you're looking at when they are all called `<...>::{{closure}}::VAR`. To make it a bit nicer, allow setting the name of the generated static to some meaningful identifier which can then be cross-referenced in debugger output, for example with singleton!(FOO_BUFFER: [u8; 1024] = [0u8; 1024]); There is no other side-effects to this change - the identifier is never visible to other code because it is still contained in the closure of the macro.
Diffstat (limited to 'src/macros.rs')
-rw-r--r--src/macros.rs23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/macros.rs b/src/macros.rs
index 66b75b1..a1ce322 100644
--- a/src/macros.rs
+++ b/src/macros.rs
@@ -30,9 +30,12 @@ macro_rules! iprintln {
/// `None` variant the caller must ensure that the macro is called from a function that's executed
/// at most once in the whole lifetime of the program.
///
-/// # Note
+/// # Notes
/// This macro is unsound on multi core systems.
///
+/// For debuggability, you can set an explicit name for a singleton. This name only shows up the
+/// the debugger and is not referencable from other code. See example below.
+///
/// # Example
///
/// ``` no_run
@@ -50,15 +53,20 @@ macro_rules! iprintln {
/// fn alias() -> &'static mut bool {
/// singleton!(: bool = false).unwrap()
/// }
+///
+/// fn singleton_with_name() {
+/// // A name only for debugging purposes
+/// singleton!(FOO_BUFFER: [u8; 1024] = [0u8; 1024]);
+/// }
/// ```
#[macro_export]
macro_rules! singleton {
- (: $ty:ty = $expr:expr) => {
+ ($name:ident: $ty:ty = $expr:expr) => {
$crate::interrupt::free(|_| {
- static mut VAR: Option<$ty> = None;
+ static mut $name: Option<$ty> = None;
#[allow(unsafe_code)]
- let used = unsafe { VAR.is_some() };
+ let used = unsafe { $name.is_some() };
if used {
None
} else {
@@ -66,16 +74,19 @@ macro_rules! singleton {
#[allow(unsafe_code)]
unsafe {
- VAR = Some(expr)
+ $name = Some(expr)
}
#[allow(unsafe_code)]
unsafe {
- VAR.as_mut()
+ $name.as_mut()
}
}
})
};
+ (: $ty:ty = $expr:expr) => {
+ $crate::singleton!(VAR: $ty = $expr)
+ };
}
/// ``` compile_fail
7 Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/snapshots.js (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2023-03-01chore(builtins): add process builtin gen'd codeGravatar Derrick Farris 1-1/+24
2023-03-01feat(stdio): add some `tty.WriteStream` methodsGravatar Derrick Farris 1-0/+23
2023-03-01fix bun server segfault with abortsignal (#2261)Gravatar Ciro Spaciari 3-133/+79
* removed redundant tests, fixed server segfault * fix onRejectStream, safer unassign signal * fix abort Bun.serve signal.addEventListener on async * move ctx.signal null check up * keep original behavior of streams onAborted
2023-03-01fix(node:http): match Node `http.request()` GET/HEAD w/ body (#2262)Gravatar Derrick Farris 2-2/+31
2023-03-01Add a test for https request in node:httpGravatar Jarred Sumner 2-17/+28
2023-03-01fix(node:http/https): fix passing `URL` objs to `http.request`(#2253) (#2258)Gravatar Derrick Farris 2-43/+63
* fix(node:http/https): fix passing `URL` objs to `http.request`(#2253) * fix(node:http): hoist debug env var * fix(node:http): make body `undefined` when falsy
2023-03-01Revert "Update clap (#2238)"Gravatar Jarred Sumner 16-290/+1840
This reverts commit 7b9a17f9d7106ffd8e553a5192aba60d14ea5e9c.
2023-03-01Revert "Add `-D`, `--dev` flags for bun install (#2240)"Gravatar Jarred Sumner 1-9/+9
This reverts commit ec20fae57f96a835562b154730957ecc4015ba31.
2023-03-01Use GitHub action ID instead of SHA for test workflowGravatar Ashcon Partovi 1-1/+1
2023-03-01avoids segfault after aborted onReject in Bun.serve streams (#2256)Gravatar Ciro Spaciari 1-7/+8
* avoids segfault after aborted on reject * silence err on handleRejectStream after aborted
2023-03-01Run tests in CI for bun-linux-aarch64Gravatar Ashcon Partovi 2-1/+30
2023-03-01Revert spawnSync changeGravatar Jarred Sumner 1-1/+2
cc @FireTheFox
2023-03-01Update bindings.zigGravatar Jarred Sumner 1-1/+3
2023-03-01fix deinit behavior when connection is aborted using ResponseStream and ↵Gravatar Ciro Spaciari 3-34/+174
abort event behavior (#2252) * fix deinit behavior when connection is aborted using ResponseStream * fix abort handling on stream, and get better tests * avoid segfault by trying to deinit 2x when aborted * make tests more reliable * more reliable onResolveStream after aborted * add test case for not firing the abort signal
2023-03-01fix Bun.file.arrayBuffer() segmentation fault on empty file #2248 (#2249)Gravatar Ciro Spaciari 3-7/+23
* fix Bun.file.arrayBuffer() segmentation fault on empty file #2248 * cleanner this.iotask check
2023-03-01Fix async in sqliteGravatar Colin McDonnell 1-2/+2
2023-02-28Forces a specific libdir for c-ares (#2241)Gravatar Justin Whear 1-1/+5
The c-ares build expects lib/libcares.a to exist after cmake, but on my system it was being generated in lib64. This simply sets the cmake variable so that the target ends up where we expect.
2023-02-28Make Bun.gc(true) more aggressiveGravatar Jarred Sumner 1-0/+3
2023-02-28Expose JSC::Options via `BUN_JSC_` prefixGravatar Jarred Sumner 6-8/+47
Example usage: BUN_JSC_logGC=1 bun file.js
2023-02-28fixupGravatar Jarred Sumner 1-1/+1
2023-02-28Fix typecheckGravatar Colin McDonnell 2-1/+4
2023-02-28Fix incorrect Bun version in docs (#2236)Gravatar Derrick Farris 1-1/+1
2023-02-28just some comments fix (#2237)Gravatar Ciro Spaciari 1-4/+2
2023-02-28Add `-D`, `--dev` flags for bun install (#2240)Gravatar Justin Whear 1-9/+9
* remove vendored clap * Update to latest zig-clap Major changes: * Instead of vendoring zig-clap and adding changes, this uses Hejsil/zig-clap directly as a submodule * `cli.zig` and related files have been updated to use new API (no more `flag()` or `option()`) * A workaround for the Run and Auto commands has been implemented that allows us to use the official upstream Minor change: * `-i` now has the long option `--install-fallback`; I didn't spend much time thinking about this name, so suggestions weclome. * add --development and --optional to bun install * Add support for `-D`, `--dev` in bun install, fix `--save`
2023-02-28Document punningGravatar Colin McDonnell 1-1/+18