patch 8.2.3311: Vim9: check for DO_NOT_FREE_CNT is very slow

Problem:    Vim9: check for DO_NOT_FREE_CNT is very slow.
Solution:   Move to a separate function so it can be skipped by setting
            $TEST_SKIP_PAT.
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 11e1524..9ac4d0b 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -2832,16 +2832,49 @@
       assert_equal('some', get(t:, 'some_var', 'xxx'))
       assert_equal('xxx', get(t:, 'no_var', 'xxx'))
       unlet t:some_var
-
-      # check using g: in a for loop more than DO_NOT_FREE_CNT times
-      for i in range(100000)
-        if has_key(g:, 'does-not-exist')
-        endif
-      endfor
   END
   CheckDefAndScriptSuccess(lines)
 enddef
 
+def Test_expr7_namespace_loop_def()
+  var lines =<< trim END
+      # check using g: in a for loop more than DO_NOT_FREE_CNT times
+      var exists = 0
+      var exists_not = 0
+      for i in range(100000)
+        if has_key(g:, 'does-not-exist')
+          exists += 1
+        else
+          exists_not += 1
+        endif
+      endfor
+      assert_equal(0, exists)
+      assert_equal(100000, exists_not)
+  END
+  CheckDefSuccess(lines)
+enddef
+
+" NOTE: this is known to be slow.  To skip use:
+"   :let $TEST_SKIP_PAT = 'Test_expr7_namespace_loop_script'
+def Test_expr7_namespace_loop_script()
+  var lines =<< trim END
+      vim9script
+      # check using g: in a for loop more than DO_NOT_FREE_CNT times
+      var exists = 0
+      var exists_not = 0
+      for i in range(100000)
+        if has_key(g:, 'does-not-exist')
+          exists += 1
+        else
+          exists_not += 1
+        endif
+      endfor
+      assert_equal(0, exists)
+      assert_equal(100000, exists_not)
+  END
+  CheckScriptSuccess(lines)
+enddef
+
 def Test_expr7_parens()
   # (expr)
   var lines =<< trim END