2436 {
2437 const char* volatile exception_msg = nullptr;
2439
2440 {
2441 LongJumpScope jump;
2442 if (setjmp(*jump.Set()) == 0) {
2443 result = CopyObjectGraphInternal(
root, &exception_msg);
2444
2445
2447 } else {
2448
2449
2451
2452
2453
2456 }
2457 }
2458
2462 }
2464 auto& result_array = Array::Cast(
result);
2465 if (result_array.At(0) ==
Marker()) {
2466 ASSERT(exception_msg !=
nullptr);
2467 auto& unexpected_object_ =
Object::Handle(zone_, result_array.At(1));
2468 if (!unexpected_object_.IsNull()) {
2469 exception_msg =
2472 zone_, thread_->
isolate(),
root, unexpected_object_,
2474 }
2475 ThrowException(exception_msg);
2477 }
2478
2479
2480
2483 }
#define RELEASE_ASSERT(cond)
static DART_NORETURN void PropagateError(const Error &error)
static char * SCreate(Zone *zone, const char *format,...) PRINTF_ATTRIBUTE(2
void FinalizeExternalTypedData()
void FinalizeTransferables()
SlowForwardMap slow_forward_map_
DART_WARN_UNUSED_RESULT ErrorPtr StealStickyError()
Isolate * isolate() const
@ kInternalToIsolateGroup
const char * FindRetainingPath(Zone *zone_, Isolate *isolate, const Object &from, const Object &to, TraversalRules traversal_rules)
static DART_FORCE_INLINE ObjectPtr Marker()