Move `done_cb` into its final closure in ExecutorState::Finish().
PiperOrigin-RevId: 287352294
Change-Id: I564a9434abc82f304fc053b4fc1f3447d9e90b34
diff --git a/tensorflow/core/common_runtime/executor.cc b/tensorflow/core/common_runtime/executor.cc
index 1c04adf..8141838 100644
--- a/tensorflow/core/common_runtime/executor.cc
+++ b/tensorflow/core/common_runtime/executor.cc
@@ -2532,7 +2532,7 @@
}
}
delete this;
- runner([=]() {
+ runner([step_id, status, done_cb = std::move(done_cb)]() {
profiler::TraceMe traceme(
[&] {
return absl::StrCat("ExecutorDoneCallback#id=", step_id, "#");
@@ -2548,10 +2548,10 @@
// devices like GPUs that continue to execute Ops after their Compute
// methods have completed, this ensures that control is not returned to
// the user until the step (and its side-effects) has actually completed.
- device->Sync([=](Status new_status) mutable {
- status.Update(new_status);
+ device->Sync([this, step_id, runner = std::move(runner),
+ done_cb = std::move(done_cb)](const Status& status) mutable {
delete this;
- runner([=]() {
+ runner([step_id, status, done_cb = std::move(done_cb)]() {
profiler::TraceMe traceme(
[&] {
return absl::StrCat("ExecutorDoneCallback#id=", step_id, "#");
@@ -2562,7 +2562,7 @@
});
} else {
delete this;
- runner([=]() {
+ runner([step_id, status, done_cb = std::move(done_cb)]() {
profiler::TraceMe traceme(
[&] {
return absl::StrCat("ExecutorDoneCallback#id=", step_id, "#");