From d2a8df45160c7921f8f487d39f59d553058b4838 Mon Sep 17 00:00:00 2001 From: Artem Udovichenko Date: Fri, 23 Sep 2022 13:17:18 +0300 Subject: [PATCH] Add handles to CopylexenvDyn Change-Id: I7a514da6a6c23a6852e784afae96b4b9e2fd4d78 --- runtime/intrinsics-inl.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/runtime/intrinsics-inl.h b/runtime/intrinsics-inl.h index 1e7344c24..734b65ba7 100644 --- a/runtime/intrinsics-inl.h +++ b/runtime/intrinsics-inl.h @@ -1348,10 +1348,11 @@ INLINE_ECMA_INTRINSICS uint64_t NewlexenvDyn(JSThread *thread, uint16_t num_slot // NOLINTNEXTLINE(misc-definitions-in-headers) INLINE_ECMA_INTRINSICS uint64_t CopylexenvDyn(JSThread *thread) { + [[maybe_unused]] EcmaHandleScope handleScope(thread); auto factory = thread->GetEcmaVM()->GetFactory(); - LexicalEnv *oldEnv = GetLexicalEnv(thread); - JSTaggedValue parentEnv = oldEnv->GetParentEnv(); - SetLexicalEnv(thread, parentEnv); + JSHandle oldEnv(thread, GetLexicalEnv(thread)); + JSHandle parentEnv(thread, oldEnv->GetParentEnv()); + SetLexicalEnv(thread, parentEnv.GetTaggedValue()); array_size_t numOfSlots = oldEnv->GetLength(); JSTaggedValue res = FastRuntimeStub::NewLexicalEnvDyn(thread, factory, numOfSlots); @@ -1361,7 +1362,7 @@ INLINE_ECMA_INTRINSICS uint64_t CopylexenvDyn(JSThread *thread) return res.GetRawData(); } } - LexicalEnv::Cast(res.GetHeapObject())->SetParentEnv(thread, parentEnv); + LexicalEnv::Cast(res.GetHeapObject())->SetParentEnv(thread, parentEnv.GetTaggedValue()); SetLexicalEnv(thread, res); for (array_size_t i = 0; i < numOfSlots; i++) { -- Gitee