ensureMove usage leading to memory leak for JsonNode !
### Description

I was using `ensureMove` with custom objects to make sure compiler is doing what i expect.
I accidentally used `ensureMove`  with a `JsonNode` (with kind `JObject`),  later i pinned memory leak to usage of `ensureMove` .

I am not sure if i am supposed to use `ensureMove` anywhere , but compiler didn't give me any warning.

Following minimal code reproduces the issue for me .

```nim

# happens both with ARC and ORC mm
import std/json
proc test_something():JsonNode=

    var final_result = JsonNode(kind:JObject)
    var a = JsonNode(kind:JArray)
    for i in 0..<10000:
        a.add(JsonNode(kind:JString, str:"random string"))
    final_result["key"] = ensureMove a
    # final_result["key"] = a

    return final_result

var temp:JsonNode
for i in 0..<100000:
    temp = test_something()
```
 

### Nim Version

Nim Compiler Version 2.2.0 [Windows: amd64]
Compiled at 2024-10-02
Copyright (c) 2006-2024 by Andreas Rumpf

active boot switches: -d:release

### Current Output

_No response_

### Expected Output

```text
I think it is not supposed to do memory leak or i don't know if `ensureMove` is supposed to be used for custom objects only!
```


### Known Workarounds

_No response_

### Additional Information

_No response_