json-as 1.1.19 → 1.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -44,6 +44,7 @@ export function serializeArbitrary(src: JSON.Value): void {
44
44
  const fn = JSON.Value.METHODS.get(src.type - JSON.Types.Struct);
45
45
  const ptr = src.get<usize>();
46
46
  call_indirect<void>(fn, 0, ptr);
47
+ break;
47
48
  }
48
49
  }
49
50
  }
@@ -27,7 +27,7 @@ export function serializeArray<T extends any[]>(src: T): void {
27
27
 
28
28
  const lastBlock = unchecked(src[end]);
29
29
  JSON.__serialize<valueof<T>>(lastBlock);
30
- bs.growSize(2);
30
+ // bs.growSize(2);
31
31
  store<u16>(bs.offset, BRACKET_RIGHT);
32
32
  bs.offset += 2;
33
33
  }
@@ -5,7 +5,7 @@ import { bs } from "../../../lib/as-bs";
5
5
  * @returns void
6
6
  */
7
7
  export function serializeBool(data: bool): void {
8
- if (data == true) {
8
+ if (data === true) {
9
9
  bs.proposeSize(8);
10
10
  store<u64>(bs.offset, 28429475166421108);
11
11
  bs.offset += 8;
@@ -4,5 +4,7 @@ import { dtoa_buffered } from "util/number";
4
4
  // @ts-ignore: inline
5
5
  @inline export function serializeFloat<T extends number>(data: T): void {
6
6
  bs.ensureSize(64);
7
- bs.offset += dtoa_buffered(bs.offset, data) << 1;
7
+ const size = dtoa_buffered(bs.offset, data) << 1;
8
+ bs.stackSize += size;
9
+ bs.offset += size;
8
10
  }
@@ -5,8 +5,8 @@ import { itoa_buffered } from "util/number";
5
5
  @inline export function serializeInteger<T extends number>(data: T): void {
6
6
  bs.ensureSize(sizeof<T>() << 3);
7
7
  const bytesWritten = itoa_buffered(bs.offset, data) << 1;
8
- bs.offset += bytesWritten;
9
8
  bs.growSize(bytesWritten);
9
+ bs.offset += bytesWritten;
10
10
  }
11
11
 
12
12
  // 32 {"x":,"y":,"z"}
@@ -16,7 +16,7 @@ export function serializeMap<T extends Map<any, any>>(src: T): void {
16
16
  let keys = src.keys();
17
17
  let values = src.values();
18
18
 
19
- bs.proposeSize(srcSize << 3); // This needs to be predicted better
19
+ bs.proposeSize(4);
20
20
 
21
21
  store<u16>(bs.offset, BRACE_LEFT);
22
22
  bs.offset += 2;
@@ -37,7 +37,7 @@ export function serializeMap<T extends Map<any, any>>(src: T): void {
37
37
  store<u16>(bs.offset, COLON);
38
38
  bs.offset += 2;
39
39
  JSON.__serialize(unchecked(values[srcEnd]));
40
- bs.growSize(2);
40
+ // bs.growSize(2);
41
41
  store<u16>(bs.offset, BRACE_RIGHT);
42
42
  bs.offset += 2;
43
43
  }
@@ -1,44 +1,46 @@
1
1
  import { bs } from "../../../lib/as-bs";
2
2
  import { JSON } from "../..";
3
- import { BRACE_LEFT, BRACE_RIGHT, QUOTE } from "../../custom/chars";
4
- import { bytes } from "../../util";
3
+ import { BRACE_LEFT, BRACE_RIGHT, COLON, COMMA } from "../../custom/chars";
4
+ import { serializeArbitrary } from "./arbitrary";
5
+ import { serializeString } from "./string";
5
6
 
6
- export function serializeObject(data: JSON.Obj): void {
7
- if (!data.size) {
7
+ export function serializeObject(src: JSON.Obj): void {
8
+ const srcSize = src.size;
9
+ const srcEnd = srcSize - 1;
10
+
11
+ if (srcSize == 0) {
8
12
  bs.proposeSize(4);
9
13
  store<u32>(bs.offset, 8192123);
10
14
  bs.offset += 4;
11
15
  return;
12
16
  }
13
17
 
14
- bs.proposeSize(load<u32>(changetype<usize>(data), offsetof<JSON.Obj>("stackSize")) - 2);
15
- const keys = data.keys();
16
- const values = data.values();
17
-
18
- // console.log(" Keys " + keys.join(" "));
19
- // console.log(" Values " + values.map<string>(v => v.toString()).join(" "))
18
+ const keys = src.keys();
19
+ const values = src.values();
20
20
 
21
+ bs.growSize(2);
21
22
  store<u16>(bs.offset, BRACE_LEFT);
22
23
  bs.offset += 2;
23
24
 
24
- const firstKey = unchecked(keys[0]);
25
- const keySize = bytes(firstKey);
26
- store<u16>(bs.offset, QUOTE);
27
- memory.copy(bs.offset + 2, changetype<usize>(firstKey), keySize);
28
- store<u32>((bs.offset += keySize + 2), 3801122); // ":
29
- bs.offset += 4;
30
- JSON.__serialize(unchecked(values[0]));
31
-
32
- for (let i = 1; i < keys.length; i++) {
33
- const key = unchecked(keys[i]);
34
- const keySize = bytes(key);
35
- store<u32>(bs.offset, 2228268); // ,"
36
- memory.copy(bs.offset + 4, changetype<usize>(key), keySize);
37
- store<u32>((bs.offset += keySize + 4), 3801122); // ":
38
- bs.offset += 4;
39
- JSON.__serialize(unchecked(values[i]));
25
+ for (let i = 0; i < srcEnd; i++) {
26
+ serializeString(unchecked(keys[i]));
27
+ bs.growSize(2);
28
+ store<u16>(bs.offset, COLON);
29
+ bs.offset += 2;
30
+
31
+ serializeArbitrary(unchecked(values[i]));
32
+ bs.growSize(2);
33
+ store<u16>(bs.offset, COMMA);
34
+ bs.offset += 2;
40
35
  }
41
36
 
37
+ serializeString(unchecked(keys[srcEnd]));
38
+ bs.growSize(2);
39
+ store<u16>(bs.offset, COLON);
40
+ bs.offset += 2;
41
+ serializeArbitrary(unchecked(values[srcEnd]));
42
+
43
+ bs.growSize(2);
42
44
  store<u16>(bs.offset, BRACE_RIGHT);
43
45
  bs.offset += 2;
44
46
  }