Skip to content

Commit 4452843

Browse files
committed
update panicking comments in libstd
1 parent 9c5d8e9 commit 4452843

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

src/libstd/panicking.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -251,21 +251,20 @@ pub unsafe fn r#try<R, F: FnOnce() -> R>(f: F) -> Result<R, Box<dyn Any + Send>>
251251
//
252252
// We go through a transition where:
253253
//
254-
// * First, we set the data to be the closure that we're going to call.
254+
// * First, we set the data field `f` to be the argumentless closure that we're going to call.
255255
// * When we make the function call, the `do_call` function below, we take
256-
// ownership of the function pointer. At this point the `Data` union is
256+
// ownership of the function pointer. At this point the `data` union is
257257
// entirely uninitialized.
258258
// * If the closure successfully returns, we write the return value into the
259-
// data's return slot. Note that `ptr::write` is used as it's overwriting
260-
// uninitialized data.
259+
// data's return slot (field `r`).
260+
// * If the closure panics (`do_catch` below), we write the panic payload into field `p`.
261261
// * Finally, when we come back out of the `try` intrinsic we're
262262
// in one of two states:
263263
//
264264
// 1. The closure didn't panic, in which case the return value was
265-
// filled in. We move it out of `data` and return it.
266-
// 2. The closure panicked, in which case the return value wasn't
267-
// filled in. In this case the entire `data` union is invalid, so
268-
// there is no need to drop anything.
265+
// filled in. We move it out of `data.r` and return it.
266+
// 2. The closure panicked, in which case the panic payload was
267+
// filled in. We move it out of `data.p` and return it.
269268
//
270269
// Once we stack all that together we should have the "most efficient'
271270
// method of calling a catch panic whilst juggling ownership.

0 commit comments

Comments
 (0)