@agoric/xsnap 0.14.3-dev-b047af2.0 → 0.14.3-dev-3eb4230.0

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.
Files changed (126) hide show
  1. package/api.js +1 -1
  2. package/package.json +16 -23
  3. package/src/build.js +4 -61
  4. package/moddable/modules/data/base64/base64.js +0 -28
  5. package/moddable/modules/data/base64/manifest.json +0 -11
  6. package/moddable/modules/data/base64/modBase64.c +0 -188
  7. package/moddable/modules/data/binaryMessage/BinaryMessage.js +0 -106
  8. package/moddable/modules/data/crc/crc.c +0 -205
  9. package/moddable/modules/data/crc/crc.js +0 -36
  10. package/moddable/modules/data/crc/manifest.json +0 -8
  11. package/moddable/modules/data/hex/hex.js +0 -28
  12. package/moddable/modules/data/hex/manifest.json +0 -11
  13. package/moddable/modules/data/hex/modHex.c +0 -139
  14. package/moddable/modules/data/logical/logical.js +0 -32
  15. package/moddable/modules/data/logical/modLogical.c +0 -98
  16. package/moddable/modules/data/qrcode/manifest.json +0 -9
  17. package/moddable/modules/data/qrcode/qrcode.c +0 -93
  18. package/moddable/modules/data/qrcode/qrcode.js +0 -23
  19. package/moddable/modules/data/qrcode/qrcodegen.c +0 -1025
  20. package/moddable/modules/data/qrcode/qrcodegen.h +0 -267
  21. package/moddable/modules/data/text/decoder/manifest.json +0 -8
  22. package/moddable/modules/data/text/decoder/textdecoder.c +0 -480
  23. package/moddable/modules/data/text/decoder/textdecoder.js +0 -27
  24. package/moddable/modules/data/text/encoder/manifest.json +0 -8
  25. package/moddable/modules/data/text/encoder/textencoder.c +0 -232
  26. package/moddable/modules/data/text/encoder/textencoder.js +0 -24
  27. package/moddable/modules/data/tinyint/tinyint.c +0 -150
  28. package/moddable/modules/data/tinyint/tinyint.js +0 -53
  29. package/moddable/modules/data/url/manifest.json +0 -17
  30. package/moddable/modules/data/url/url.c +0 -1959
  31. package/moddable/modules/data/url/url.js +0 -210
  32. package/moddable/modules/data/wavreader/manifest.json +0 -8
  33. package/moddable/modules/data/wavreader/wavreader.js +0 -128
  34. package/moddable/modules/data/zlib/deflate.c +0 -161
  35. package/moddable/modules/data/zlib/deflate.js +0 -63
  36. package/moddable/modules/data/zlib/inflate.c +0 -145
  37. package/moddable/modules/data/zlib/inflate.js +0 -66
  38. package/moddable/modules/data/zlib/manifest_deflate.json +0 -9
  39. package/moddable/modules/data/zlib/manifest_inflate.json +0 -9
  40. package/moddable/modules/data/zlib/miniz.c +0 -4924
  41. package/moddable/xs/includes/xs.d.ts +0 -73
  42. package/moddable/xs/includes/xs.h +0 -1533
  43. package/moddable/xs/includes/xsmc.h +0 -206
  44. package/moddable/xs/makefiles/lin/makefile +0 -33
  45. package/moddable/xs/makefiles/lin/xsc.mk +0 -118
  46. package/moddable/xs/makefiles/lin/xsid.mk +0 -90
  47. package/moddable/xs/makefiles/lin/xsl.mk +0 -168
  48. package/moddable/xs/makefiles/lin/xst.mk +0 -201
  49. package/moddable/xs/makefiles/mac/makefile +0 -33
  50. package/moddable/xs/makefiles/mac/xsc.mk +0 -130
  51. package/moddable/xs/makefiles/mac/xsid.mk +0 -102
  52. package/moddable/xs/makefiles/mac/xsl.mk +0 -177
  53. package/moddable/xs/makefiles/mac/xst.mk +0 -203
  54. package/moddable/xs/makefiles/mac/xst_no_asan.txt +0 -52
  55. package/moddable/xs/makefiles/win/build.bat +0 -26
  56. package/moddable/xs/makefiles/win/xsc.mak +0 -142
  57. package/moddable/xs/makefiles/win/xsid.mak +0 -113
  58. package/moddable/xs/makefiles/win/xsl.mak +0 -186
  59. package/moddable/xs/makefiles/win/xst.mak +0 -195
  60. package/moddable/xs/platforms/lin_xs.h +0 -99
  61. package/moddable/xs/platforms/mac_xs.h +0 -97
  62. package/moddable/xs/platforms/wasm_xs.h +0 -79
  63. package/moddable/xs/platforms/win_xs.h +0 -104
  64. package/moddable/xs/platforms/xsHost.h +0 -63
  65. package/moddable/xs/platforms/xsPlatform.h +0 -618
  66. package/moddable/xs/sources/xsAPI.c +0 -2555
  67. package/moddable/xs/sources/xsAll.c +0 -294
  68. package/moddable/xs/sources/xsAll.h +0 -2741
  69. package/moddable/xs/sources/xsArguments.c +0 -222
  70. package/moddable/xs/sources/xsArray.c +0 -2657
  71. package/moddable/xs/sources/xsAtomics.c +0 -844
  72. package/moddable/xs/sources/xsBigInt.c +0 -1859
  73. package/moddable/xs/sources/xsBoolean.c +0 -109
  74. package/moddable/xs/sources/xsCode.c +0 -4493
  75. package/moddable/xs/sources/xsCommon.c +0 -1710
  76. package/moddable/xs/sources/xsCommon.h +0 -1142
  77. package/moddable/xs/sources/xsDataView.c +0 -2890
  78. package/moddable/xs/sources/xsDate.c +0 -1541
  79. package/moddable/xs/sources/xsDebug.c +0 -2710
  80. package/moddable/xs/sources/xsDefaults.c +0 -134
  81. package/moddable/xs/sources/xsError.c +0 -353
  82. package/moddable/xs/sources/xsFunction.c +0 -776
  83. package/moddable/xs/sources/xsGenerator.c +0 -865
  84. package/moddable/xs/sources/xsGlobal.c +0 -839
  85. package/moddable/xs/sources/xsJSON.c +0 -1091
  86. package/moddable/xs/sources/xsLexical.c +0 -1969
  87. package/moddable/xs/sources/xsLockdown.c +0 -933
  88. package/moddable/xs/sources/xsMapSet.c +0 -1649
  89. package/moddable/xs/sources/xsMarshall.c +0 -1020
  90. package/moddable/xs/sources/xsMath.c +0 -624
  91. package/moddable/xs/sources/xsMemory.c +0 -1941
  92. package/moddable/xs/sources/xsModule.c +0 -3101
  93. package/moddable/xs/sources/xsNumber.c +0 -560
  94. package/moddable/xs/sources/xsObject.c +0 -1102
  95. package/moddable/xs/sources/xsPlatforms.c +0 -480
  96. package/moddable/xs/sources/xsProfile.c +0 -577
  97. package/moddable/xs/sources/xsPromise.c +0 -1199
  98. package/moddable/xs/sources/xsProperty.c +0 -636
  99. package/moddable/xs/sources/xsProxy.c +0 -1014
  100. package/moddable/xs/sources/xsRegExp.c +0 -1168
  101. package/moddable/xs/sources/xsRun.c +0 -4889
  102. package/moddable/xs/sources/xsScope.c +0 -1293
  103. package/moddable/xs/sources/xsScript.c +0 -288
  104. package/moddable/xs/sources/xsScript.h +0 -1186
  105. package/moddable/xs/sources/xsSnapshot.c +0 -2161
  106. package/moddable/xs/sources/xsSnapshot.h +0 -51
  107. package/moddable/xs/sources/xsSourceMap.c +0 -218
  108. package/moddable/xs/sources/xsString.c +0 -3332
  109. package/moddable/xs/sources/xsSymbol.c +0 -503
  110. package/moddable/xs/sources/xsSyntaxical.c +0 -4193
  111. package/moddable/xs/sources/xsTree.c +0 -1893
  112. package/moddable/xs/sources/xsType.c +0 -1488
  113. package/moddable/xs/sources/xsdtoa.c +0 -6672
  114. package/moddable/xs/sources/xsmc.c +0 -340
  115. package/moddable/xs/sources/xsre.c +0 -7578
  116. package/xsnap-native/xsnap/makefiles/lin/makefile +0 -10
  117. package/xsnap-native/xsnap/makefiles/lin/xsnap-worker.mk +0 -153
  118. package/xsnap-native/xsnap/makefiles/lin/xsnap.mk +0 -144
  119. package/xsnap-native/xsnap/makefiles/mac/makefile +0 -10
  120. package/xsnap-native/xsnap/makefiles/mac/xsnap-worker.mk +0 -162
  121. package/xsnap-native/xsnap/makefiles/mac/xsnap.mk +0 -153
  122. package/xsnap-native/xsnap/sources/xsnap-worker.c +0 -996
  123. package/xsnap-native/xsnap/sources/xsnap.c +0 -716
  124. package/xsnap-native/xsnap/sources/xsnap.h +0 -142
  125. package/xsnap-native/xsnap/sources/xsnapPlatform.c +0 -1496
  126. package/xsnap-native/xsnap/sources/xsnapPlatform.h +0 -105
@@ -1,1710 +0,0 @@
1
- /*
2
- * Copyright (c) 2016-2017 Moddable Tech, Inc.
3
- *
4
- * This file is part of the Moddable SDK Runtime.
5
- *
6
- * The Moddable SDK Runtime is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * The Moddable SDK Runtime is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- * GNU Lesser General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public License
17
- * along with the Moddable SDK Runtime. If not, see <http://www.gnu.org/licenses/>.
18
- *
19
- * This file incorporates work covered by the following copyright and
20
- * permission notice:
21
- *
22
- * Copyright (C) 2010-2016 Marvell International Ltd.
23
- * Copyright (C) 2002-2010 Kinoma, Inc.
24
- *
25
- * Licensed under the Apache License, Version 2.0 (the "License");
26
- * you may not use this file except in compliance with the License.
27
- * You may obtain a copy of the License at
28
- *
29
- * http://www.apache.org/licenses/LICENSE-2.0
30
- *
31
- * Unless required by applicable law or agreed to in writing, software
32
- * distributed under the License is distributed on an "AS IS" BASIS,
33
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
34
- * See the License for the specific language governing permissions and
35
- * limitations under the License.
36
- */
37
-
38
- #define _GNU_SOURCE
39
- #include "xsCommon.h"
40
- #ifndef mxUseDefaultCStackLimit
41
- #define mxUseDefaultCStackLimit 1
42
- #endif
43
-
44
- const txString gxCodeNames[XS_CODE_COUNT] = {
45
- "",
46
- /* XS_CODE_ADD */ "add",
47
- /* XS_CODE_ARGUMENT */ "argument",
48
- /* XS_CODE_ARGUMENTS */ "arguments",
49
- /* XS_CODE_ARGUMENTS_SLOPPY */ "arguments_sloppy",
50
- /* XS_CODE_ARGUMENTS_STRICT */ "arguments_strict",
51
- /* XS_CODE_ARRAY */ "array",
52
- /* XS_CODE_ASYNC_FUNCTION */ "async_function",
53
- /* XS_CODE_ASYNC_GENERATOR_FUNCTION */ "async_generator_function",
54
- /* XS_CODE_AT */ "at",
55
- /* XS_CODE_AWAIT */ "await",
56
- /* XS_CODE_BEGIN_SLOPPY */ "begin_sloppy",
57
- /* XS_CODE_BEGIN_STRICT */ "begin_strict",
58
- /* XS_CODE_BEGIN_STRICT_BASE */ "begin_strict_base",
59
- /* XS_CODE_BEGIN_STRICT_DERIVED */ "begin_strict_derived",
60
- /* XS_CODE_BEGIN_STRICT_FIELD */ "begin_strict_field",
61
- /* XS_CODE_BIGINT_1 */ "bigint",
62
- /* XS_CODE_BIGINT_2 */ "bigint_2",
63
- /* XS_CODE_BIT_AND */ "bit_and",
64
- /* XS_CODE_BIT_NOT */ "bit_not",
65
- /* XS_CODE_BIT_OR */ "bit_or",
66
- /* XS_CODE_BIT_XOR */ "bit_xor",
67
- /* XS_CODE_BRANCH_1 */ "branch",
68
- /* XS_CODE_BRANCH_2 */ "branch_2",
69
- /* XS_CODE_BRANCH_4 */ "branch_4",
70
- /* XS_CODE_BRANCH_CHAIN_1 */ "branch_chain",
71
- /* XS_CODE_BRANCH_CHAIN_2 */ "branch_chain_2",
72
- /* XS_CODE_BRANCH_CHAIN_4 */ "branch_chain_4",
73
- /* XS_CODE_BRANCH_COALESCE_1 */ "branch_coalesce",
74
- /* XS_CODE_BRANCH_COALESCE_2 */ "branch_coalesce_2",
75
- /* XS_CODE_BRANCH_COALESCE_4 */ "branch_coalesce_4",
76
- /* XS_CODE_BRANCH_ELSE_1 */ "branch_else",
77
- /* XS_CODE_BRANCH_ELSE_2 */ "branch_else_2",
78
- /* XS_CODE_BRANCH_ELSE_4 */ "branch_else_4",
79
- /* XS_CODE_BRANCH_IF_1 */ "branch_if",
80
- /* XS_CODE_BRANCH_IF_2 */ "branch_if_2",
81
- /* XS_CODE_BRANCH_IF_4 */ "branch_if_4",
82
- /* XS_CODE_BRANCH_STATUS_1 */ "branch_status",
83
- /* XS_CODE_BRANCH_STATUS_2 */ "branch_status_2",
84
- /* XS_CODE_BRANCH_STATUS_4 */ "branch_status_4",
85
- /* XS_CODE_CALL */ "call",
86
- /* XS_CODE_CATCH_1 */ "catch",
87
- /* XS_CODE_CATCH_2 */ "catch_2",
88
- /* XS_CODE_CATCH_4 */ "catch_4",
89
- /* XS_CODE_CHECK_INSTANCE */ "check_instance",
90
- /* XS_CODE_CLASS */ "class",
91
- /* XS_CODE_CODE_1 */ "code",
92
- /* XS_CODE_CODE_2 */ "code_2",
93
- /* XS_CODE_CODE_4 */ "code_4",
94
- /* XS_CODE_CODE_ARCHIVE_1 */ "code_archive",
95
- /* XS_CODE_CODE_ARCHIVE_2 */ "code_archive_2",
96
- /* XS_CODE_CODE_ARCHIVE_4 */ "code_archive_4",
97
- /* XS_CODE_CONST_CLOSURE_1 */ "const_closure",
98
- /* XS_CODE_CONST_CLOSURE_2 */ "const_closure_2",
99
- /* XS_CODE_CONST_LOCAL_1 */ "const_local",
100
- /* XS_CODE_CONST_LOCAL_2 */ "const_local_2",
101
- /* XS_CODE_CONSTRUCTOR_FUNCTION */ "constructor_function",
102
- /* XS_CODE_COPY_OBJECT */ "copy_object",
103
- /* XS_CODE_CURRENT */ "current",
104
- /* XS_CODE_DEBUGGER */ "debugger",
105
- /* XS_CODE_DECREMENT */ "decrement",
106
- /* XS_CODE_DELETE_PROPERTY */ "delete_property",
107
- /* XS_CODE_DELETE_PROPERTY_AT */ "delete_property_at",
108
- /* XS_CODE_DELETE_SUPER */ "delete_super",
109
- /* XS_CODE_DELETE_SUPER_AT */ "delete_super_at",
110
- /* XS_CODE_DIVIDE */ "divide",
111
- /* XS_CODE_DUB */ "dub",
112
- /* XS_CODE_DUB_AT */ "dub_at",
113
- /* XS_CODE_END */ "end",
114
- /* XS_CODE_END_ARROW */ "end_arrow",
115
- /* XS_CODE_END_BASE */ "end_base",
116
- /* XS_CODE_END_DERIVED */ "end_derived",
117
- /* XS_CODE_ENVIRONMENT */ "environment",
118
- /* XS_CODE_EQUAL */ "equal",
119
- /* XS_CODE_EVAL */ "eval",
120
- /* XS_CODE_EVAL_ENVIRONMENT */ "eval_environment",
121
- /* XS_CODE_EVAL_PRIVATE */ "eval_private",
122
- /* XS_CODE_EVAL_REFERENCE */ "eval_reference",
123
- /* XS_CODE_EVAL_TAIL */ "eval_tail",
124
- /* XS_CODE_EXCEPTION */ "exception",
125
- /* XS_CODE_EXPONENTIATION */ "exponentiation",
126
- /* XS_CODE_EXTEND */ "extend",
127
- /* XS_CODE_FALSE */ "false",
128
- /* XS_CODE_FILE */ "file",
129
- /* XS_CODE_FOR_AWAIT_OF */ "for_await_of",
130
- /* XS_CODE_FOR_IN */ "for_in",
131
- /* XS_CODE_FOR_OF */ "for_of",
132
- /* XS_CODE_FUNCTION */ "function",
133
- /* XS_CODE_FUNCTION_ENVIRONMENT */ "function_environment",
134
- /* XS_CODE_GENERATOR_FUNCTION */ "generator",
135
- /* XS_CODE_GET_CLOSURE_1 */ "get_closure",
136
- /* XS_CODE_GET_CLOSURE_2 */ "get_closure_2",
137
- /* XS_CODE_GET_LOCAL_1 */ "get_local",
138
- /* XS_CODE_GET_LOCAL_2 */ "get_local_2",
139
- /* XS_CODE_GET_PRIVATE_1 */ "get_private",
140
- /* XS_CODE_GET_PRIVATE_2 */ "get_private_2",
141
- /* XS_CODE_GET_PROPERTY */ "get_property",
142
- /* XS_CODE_GET_PROPERTY_AT */ "get_property_at",
143
- /* XS_CODE_GET_RESULT */ "get_result",
144
- /* XS_CODE_GET_SUPER */ "get_super",
145
- /* XS_CODE_GET_SUPER_AT */ "get_super_at",
146
- /* XS_CODE_GET_THIS */ "get_this",
147
- /* XS_CODE_GET_THIS_VARIABLE */ "get_this_variable",
148
- /* XS_CODE_GET_VARIABLE */ "get_variable",
149
- /* XS_CODE_GLOBAL */ "global",
150
- /* XS_CODE_HAS_PRIVATE_1 */ "has_private",
151
- /* XS_CODE_HAS_PRIVATE_2 */ "has_private_2",
152
- /* XS_CODE_HOST */ "host",
153
- /* XS_CODE_IMPORT */ "import",
154
- /* XS_CODE_IMPORT_META */ "import.meta",
155
- /* XS_CODE_IN */ "in",
156
- /* XS_CODE_INCREMENT */ "increment",
157
- /* XS_CODE_INSTANCEOF */ "instanceof",
158
- /* XS_CODE_INSTANTIATE */ "instantiate",
159
- /* XS_CODE_INTEGER_1 */ "integer",
160
- /* XS_CODE_INTEGER_2 */ "integer_2",
161
- /* XS_CODE_INTEGER_4 */ "integer_4",
162
- /* XS_CODE_LEFT_SHIFT */ "left_shift",
163
- /* XS_CODE_LESS */ "less",
164
- /* XS_CODE_LESS_EQUAL */ "less_equal",
165
- /* XS_CODE_LET_CLOSURE_1 */ "let_closure",
166
- /* XS_CODE_LET_CLOSURE_2 */ "let_closure_2",
167
- /* XS_CODE_LET_LOCAL_1 */ "let_local",
168
- /* XS_CODE_LET_LOCAL_2 */ "let_local_2",
169
- /* XS_CODE_LINE */ "line",
170
- /* XS_CODE_MINUS */ "minus",
171
- /* XS_CODE_MODULE */ "module",
172
- /* XS_CODE_MODULO */ "modulo",
173
- /* XS_CODE_MORE */ "more",
174
- /* XS_CODE_MORE_EQUAL */ "more_equal",
175
- /* XS_CODE_MULTIPLY */ "multiply",
176
- /* XS_CODE_NAME */ "name",
177
- /* XS_CODE_NEW */ "new",
178
- /* XS_CODE_NEW_CLOSURE */ "new_closure",
179
- /* XS_CODE_NEW_LOCAL */ "new_local",
180
- /* XS_CODE_NEW_PRIVATE_1 */ "new_private",
181
- /* XS_CODE_NEW_PRIVATE_2 */ "new_private_2",
182
- /* XS_CODE_NEW_PROPERTY */ "new_property",
183
- /* XS_CODE_NEW_PROPERTY_AT */ "new_property_at",
184
- /* XS_CODE_NEW_TEMPORARY */ "new_temporary",
185
- /* XS_CODE_NOT */ "not",
186
- /* XS_CODE_NOT_EQUAL */ "not_equal",
187
- /* XS_CODE_NULL */ "null",
188
- /* XS_CODE_NUMBER */ "number",
189
- /* XS_CODE_OBJECT */ "object",
190
- /* XS_CODE_PLUS */ "plus",
191
- /* XS_CODE_POP */ "pop",
192
- /* XS_CODE_PROGRAM_ENVIRONMENT */ "program_environment",
193
- /* XS_CODE_PROGRAM_REFERENCE */ "program_reference",
194
- /* XS_CODE_PULL_CLOSURE_1 */ "pull_closure",
195
- /* XS_CODE_PULL_CLOSURE_2 */ "pull_closure_2",
196
- /* XS_CODE_PULL_LOCAL_1 */ "pull_local",
197
- /* XS_CODE_PULL_LOCAL_2 */ "pull_local_2",
198
- /* XS_CODE_REFRESH_CLOSURE_1 */ "refresh_closure",
199
- /* XS_CODE_REFRESH_CLOSURE_2 */ "refresh_closure_2",
200
- /* XS_CODE_REFRESH_LOCAL_1 */ "refresh_local",
201
- /* XS_CODE_REFRESH_LOCAL_2 */ "refresh_local_2",
202
- /* XS_CODE_REGEXP */ "regexp",
203
- /* XS_CODE_RESERVE_1 */ "reserve",
204
- /* XS_CODE_RESERVE_2 */ "reserve_2",
205
- /* XS_CODE_RESET_CLOSURE_1 */ "reset_closure",
206
- /* XS_CODE_RESET_CLOSURE_2 */ "reset_closure_2",
207
- /* XS_CODE_RESET_LOCAL_1 */ "reset_local",
208
- /* XS_CODE_RESET_LOCAL_2 */ "reset_local_2",
209
- /* XS_CODE_RETHROW */ "rethrow",
210
- /* XS_CODE_RETRIEVE_1 */ "retrieve",
211
- /* XS_CODE_RETRIEVE_2 */ "retrieve_2",
212
- /* XS_CODE_RETRIEVE_TARGET */ "retrieve_target",
213
- /* XS_CODE_RETRIEVE_THIS */ "retrieve_this",
214
- /* XS_CODE_RETURN */ "return",
215
- /* XS_CODE_RUN */ "run",
216
- /* XS_CODE_RUN_1 */ "run_1",
217
- /* XS_CODE_RUN_2 */ "run_2",
218
- /* XS_CODE_RUN_4 */ "run_4",
219
- /* XS_CODE_RUN_TAIL */ "run_tail",
220
- /* XS_CODE_RUN_TAIL_1 */ "run_tail_1",
221
- /* XS_CODE_RUN_TAIL_2 */ "run_tail_2",
222
- /* XS_CODE_RUN_TAIL_4 */ "run_tail_4",
223
- /* XS_CODE_SET_CLOSURE_1 */ "set_closure",
224
- /* XS_CODE_SET_CLOSURE_2 */ "set_closure_2",
225
- /* XS_CODE_SET_HOME */ "set_home",
226
- /* XS_CODE_SET_LOCAL_1 */ "set_local",
227
- /* XS_CODE_SET_LOCAL_2 */ "set_local_2",
228
- /* XS_CODE_SET_PRIVATE_1 */ "set_private",
229
- /* XS_CODE_SET_PRIVATE_2 */ "set_private_2",
230
- /* XS_CODE_SET_PROPERTY */ "set_property",
231
- /* XS_CODE_SET_PROPERTY_AT */ "set_property_at",
232
- /* XS_CODE_SET_RESULT */ "set_result",
233
- /* XS_CODE_SET_SUPER */ "set_super",
234
- /* XS_CODE_SET_SUPER_AT */ "set_super_at",
235
- /* XS_CODE_SET_THIS */ "set_this",
236
- /* XS_CODE_SET_VARIABLE */ "set_variable",
237
- /* XS_CODE_SIGNED_RIGHT_SHIFT */ "signed_right_shift",
238
- /* XS_CODE_START_ASYNC */ "start_async",
239
- /* XS_CODE_START_ASYNC_GENERATOR */ "start_async_generator",
240
- /* XS_CODE_START_GENERATOR */ "start_generator",
241
- /* XS_CODE_STORE_1 */ "store_1",
242
- /* XS_CODE_STORE_2 */ "store_2",
243
- /* XS_CODE_STORE_ARROW */ "store_arrow",
244
- /* XS_CODE_STRICT_EQUAL */ "strict_equal",
245
- /* XS_CODE_STRICT_NOT_EQUAL */ "strict_not_equal",
246
- /* XS_CODE_STRING_1 */ "string",
247
- /* XS_CODE_STRING_2 */ "string_2",
248
- /* XS_CODE_STRING_4 */ "string_4",
249
- /* XS_CODE_STRING_ARCHIVE_1 */ "string_archive",
250
- /* XS_CODE_STRING_ARCHIVE_2 */ "string_archive_2",
251
- /* XS_CODE_STRING_ARCHIVE_4 */ "string_archive_4",
252
- /* XS_CODE_SUBTRACT */ "subtract",
253
- /* XS_CODE_SUPER */ "super",
254
- /* XS_CODE_SWAP */ "swap",
255
- /* XS_CODE_SYMBOL */ "symbol",
256
- /* XS_CODE_TARGET */ "target",
257
- /* XS_CODE_TEMPLATE */ "template",
258
- /* XS_CODE_TEMPLATE_CACHE */ "template_cache",
259
- /* XS_CODE_THIS */ "this",
260
- /* XS_CODE_THROW */ "throw",
261
- /* XS_CODE_THROW_STATUS */ "throw_status",
262
- /* XS_CODE_TO_INSTANCE */ "to_instance",
263
- /* XS_CODE_TO_NUMERIC */ "to_numeric",
264
- /* XS_CODE_TO_STRING */ "to_string",
265
- /* XS_CODE_TRANSFER */ "transfer",
266
- /* XS_CODE_TRUE */ "true",
267
- /* XS_CODE_TYPEOF */ "typeof",
268
- /* XS_CODE_UNCATCH */ "uncatch",
269
- /* XS_CODE_UNDEFINED */ "undefined",
270
- /* XS_CODE_UNSIGNED_RIGHT_SHIFT */ "unsigned_right_shift",
271
- /* XS_CODE_UNWIND_1 */ "unwind",
272
- /* XS_CODE_UNWIND_2 */ "unwind_2",
273
- /* XS_CODE_VAR_CLOSURE_1 */ "var_closure_1",
274
- /* XS_CODE_VAR_CLOSURE_2 */ "var_closure_2",
275
- /* XS_CODE_VAR_LOCAL_1 */ "var_local_1",
276
- /* XS_CODE_VAR_LOCAL_2 */ "var_local_2",
277
- /* XS_CODE_VOID */ "void",
278
- /* XS_CODE_WITH */ "with",
279
- /* XS_CODE_WITHOUT */ "without",
280
- /* XS_CODE_YIELD */ "yield",
281
- /* XS_CODE_PROFILE */ "profile"
282
- };
283
-
284
- const txS1 gxCodeSizes[XS_CODE_COUNT] ICACHE_FLASH_ATTR = {
285
- 0 /* XS_NO_CODE */,
286
- 1 /* XS_CODE_ADD */,
287
- 2 /* XS_CODE_ARGUMENT */,
288
- 2 /* XS_CODE_ARGUMENTS */,
289
- 2 /* XS_CODE_ARGUMENTS_SLOPPY */,
290
- 2 /* XS_CODE_ARGUMENTS_STRICT */,
291
- 1 /* XS_CODE_ARRAY */,
292
- 0 /* XS_CODE_ASYNC_FUNCTION */,
293
- 0 /* XS_CODE_ASYNC_GENERATOR_FUNCTION */,
294
- 1 /* XS_CODE_AT */,
295
- 1 /* XS_CODE_AWAIT */,
296
- 2 /* XS_CODE_BEGIN_SLOPPY */,
297
- 2 /* XS_CODE_BEGIN_STRICT */,
298
- 2 /* XS_CODE_BEGIN_STRICT_BASE */,
299
- 2 /* XS_CODE_BEGIN_STRICT_DERIVED */,
300
- 2 /* XS_CODE_BEGIN_STRICT_FIELD */,
301
- -1 /* XS_CODE_BIGINT_1 */,
302
- -2 /* XS_CODE_BIGINT_2 */,
303
- 1 /* XS_CODE_BIT_AND */,
304
- 1 /* XS_CODE_BIT_NOT */,
305
- 1 /* XS_CODE_BIT_OR */,
306
- 1 /* XS_CODE_BIT_XOR */,
307
- 2 /* XS_CODE_BRANCH_1 */,
308
- 3 /* XS_CODE_BRANCH_2 */,
309
- 5 /* XS_CODE_BRANCH_4 */,
310
- 2 /* XS_CODE_BRANCH_CHAIN_1 */,
311
- 3 /* XS_CODE_BRANCH_CHAIN_2 */,
312
- 5 /* XS_CODE_BRANCH_CHAIN_4 */,
313
- 2 /* XS_CODE_BRANCH_COALESCE_1 */,
314
- 3 /* XS_CODE_BRANCH_COALESCE_2 */,
315
- 5 /* XS_CODE_BRANCH_COALESCE_4 */,
316
- 2 /* XS_CODE_BRANCH_ELSE_1 */,
317
- 3 /* XS_CODE_BRANCH_ELSE_2 */,
318
- 5 /* XS_CODE_BRANCH_ELSE_4 */,
319
- 2 /* XS_CODE_BRANCH_IF_1 */,
320
- 3 /* XS_CODE_BRANCH_IF_2 */,
321
- 5 /* XS_CODE_BRANCH_IF_4 */,
322
- 2 /* XS_CODE_BRANCH_STATUS_1 */,
323
- 3 /* XS_CODE_BRANCH_STATUS_2 */,
324
- 5 /* XS_CODE_BRANCH_STATUS_4 */,
325
- 1 /* XS_CODE_CALL */,
326
- 2 /* XS_CODE_CATCH_1 */,
327
- 3 /* XS_CODE_CATCH_2 */,
328
- 5 /* XS_CODE_CATCH_4 */,
329
- 1 /* XS_CODE_CLASS */,
330
- 1 /* XS_CODE_CHECK_INSTANCE */,
331
- 2 /* XS_CODE_CODE_1 */,
332
- 3 /* XS_CODE_CODE_2 */,
333
- 5 /* XS_CODE_CODE_4 */,
334
- 2 /* XS_CODE_CODE_ARCHIVE_1 */,
335
- 3 /* XS_CODE_CODE_ARCHIVE_2 */,
336
- 5 /* XS_CODE_CODE_ARCHIVE_4 */,
337
- 2 /* XS_CODE_CONST_CLOSURE_1 */,
338
- 3 /* XS_CODE_CONST_CLOSURE_2 */,
339
- 2 /* XS_CODE_CONST_LOCAL_1 */,
340
- 3 /* XS_CODE_CONST_LOCAL_2 */,
341
- 0 /* XS_CODE_CONSTRUCTOR_FUNCTION */,
342
- 1 /* XS_CODE_COPY_OBJECT */,
343
- 1 /* XS_CODE_CURRENT */,
344
- 1 /* XS_CODE_DEBUGGER */,
345
- 1 /* XS_CODE_DECREMENT */,
346
- 0 /* XS_CODE_DELETE_PROPERTY */,
347
- 1 /* XS_CODE_DELETE_PROPERTY_AT */,
348
- 0 /* XS_CODE_DELETE_SUPER */,
349
- 1 /* XS_CODE_DELETE_SUPER_AT */,
350
- 1 /* XS_CODE_DIVIDE */,
351
- 1 /* XS_CODE_DUB */,
352
- 1 /* XS_CODE_DUB_AT */,
353
- 1 /* XS_CODE_END */,
354
- 1 /* XS_CODE_END_ARROW */,
355
- 1 /* XS_CODE_END_BASE */,
356
- 1 /* XS_CODE_END_DERIVED */,
357
- 1 /* XS_CODE_ENVIRONMENT */,
358
- 1 /* XS_CODE_EQUAL */,
359
- 1 /* XS_CODE_EVAL */,
360
- 1 /* XS_CODE_EVAL_ENVIRONMENT */,
361
- 0 /* XS_CODE_EVAL_PRIVATE */,
362
- 0 /* XS_CODE_EVAL_REFERENCE */,
363
- 1 /* XS_CODE_EVAL_TAIL */,
364
- 1 /* XS_CODE_EXCEPTION */,
365
- 1 /* XS_CODE_EXPONENTIATION */,
366
- 1 /* XS_CODE_EXTEND */,
367
- 1 /* XS_CODE_FALSE */,
368
- 0 /* XS_CODE_FILE */,
369
- 1 /* XS_CODE_FOR_AWAIT_OF */,
370
- 1 /* XS_CODE_FOR_IN */,
371
- 1 /* XS_CODE_FOR_OF */,
372
- 0 /* XS_CODE_FUNCTION */,
373
- 1 /* XS_CODE_FUNCTION_ENVIRONMENT */,
374
- 0 /* XS_CODE_GENERATOR_FUNCTION */,
375
- 2 /* XS_CODE_GET_CLOSURE_1 */,
376
- 3 /* XS_CODE_GET_CLOSURE_2 */,
377
- 2 /* XS_CODE_GET_LOCAL_1 */,
378
- 3 /* XS_CODE_GET_LOCAL_2 */,
379
- 2 /* XS_CODE_GET_PRIVATE_1 */,
380
- 3 /* XS_CODE_GET_PRIVATE_2 */,
381
- 0 /* XS_CODE_GET_PROPERTY */,
382
- 1 /* XS_CODE_GET_PROPERTY_AT */,
383
- 1 /* XS_CODE_GET_RESULT */,
384
- 0 /* XS_CODE_GET_SUPER */,
385
- 1 /* XS_CODE_GET_SUPER_AT */,
386
- 1 /* XS_CODE_GET_THIS */,
387
- 0 /* XS_CODE_GET_THIS_VARIABLE */,
388
- 0 /* XS_CODE_GET_VARIABLE */,
389
- 1 /* XS_CODE_GLOBAL */,
390
- 2 /* XS_CODE_HAS_PRIVATE_1 */,
391
- 3 /* XS_CODE_HAS_PRIVATE_2 */,
392
- 3 /* XS_CODE_HOST */,
393
- 1 /* XS_CODE_IMPORT */,
394
- 1 /* XS_CODE_IMPORT_META */,
395
- 1 /* XS_CODE_IN */,
396
- 1 /* XS_CODE_INCREMENT */,
397
- 1 /* XS_CODE_INSTANCEOF */,
398
- 1 /* XS_CODE_INSTANTIATE */,
399
- 2 /* XS_CODE_INTEGER_1 */,
400
- 3 /* XS_CODE_INTEGER_2 */,
401
- 5 /* XS_CODE_INTEGER_4 */,
402
- 1 /* XS_CODE_LEFT_SHIFT */,
403
- 1 /* XS_CODE_LESS */,
404
- 1 /* XS_CODE_LESS_EQUAL */,
405
- 2 /* XS_CODE_LET_CLOSURE_1 */,
406
- 3 /* XS_CODE_LET_CLOSURE_2 */,
407
- 2 /* XS_CODE_LET_LOCAL_1 */,
408
- 3 /* XS_CODE_LET_LOCAL_2 */,
409
- 3 /* XS_CODE_LINE */,
410
- 1 /* XS_CODE_MINUS */,
411
- 2 /* XS_CODE_MODULE */,
412
- 1 /* XS_CODE_MODULO */,
413
- 1 /* XS_CODE_MORE */,
414
- 1 /* XS_CODE_MORE_EQUAL */,
415
- 1 /* XS_CODE_MULTIPLY */,
416
- 0 /* XS_CODE_NAME */,
417
- 1 /* XS_CODE_NEW */,
418
- 0 /* XS_CODE_NEW_CLOSURE */,
419
- 0 /* XS_CODE_NEW_LOCAL */,
420
- 2 /* XS_CODE_NEW_PRIVATE_1 */,
421
- 3 /* XS_CODE_NEW_PRIVATE_2 */,
422
- 0 /* XS_CODE_NEW_PROPERTY */,
423
- 1 /* XS_CODE_NEW_PROPERTY_AT */,
424
- 1 /* XS_CODE_NEW_TEMPORARY */,
425
- 1 /* XS_CODE_NOT */,
426
- 1 /* XS_CODE_NOT_EQUAL */,
427
- 1 /* XS_CODE_NULL */,
428
- 9 /* XS_CODE_NUMBER */,
429
- 1 /* XS_CODE_OBJECT */,
430
- 1 /* XS_CODE_PLUS */,
431
- 1 /* XS_CODE_POP */,
432
- 1 /* XS_CODE_PROGRAM_ENVIRONMENT */,
433
- 0 /* XS_CODE_PROGRAM_REFERENCE */,
434
- 2 /* XS_CODE_PULL_CLOSURE_1 */,
435
- 3 /* XS_CODE_PULL_CLOSURE_2 */,
436
- 2 /* XS_CODE_PULL_LOCAL_1 */,
437
- 3 /* XS_CODE_PULL_LOCAL_2 */,
438
- 2 /* XS_CODE_REFRESH_CLOSURE_1 */,
439
- 3 /* XS_CODE_REFRESH_CLOSURE_2 */,
440
- 2 /* XS_CODE_REFRESH_LOCAL_1 */,
441
- 3 /* XS_CODE_REFRESH_LOCAL_2 */,
442
- 1 /* XS_CODE_REGEXP */,
443
- 2 /* XS_CODE_RESERVE_1 */,
444
- 3 /* XS_CODE_RESERVE_2 */,
445
- 2 /* XS_CODE_RESET_CLOSURE_1 */,
446
- 3 /* XS_CODE_RESET_CLOSURE_2 */,
447
- 2 /* XS_CODE_RESET_LOCAL_1 */,
448
- 3 /* XS_CODE_RESET_LOCAL_2 */,
449
- 1 /* XS_CODE_RETHROW */,
450
- 2 /* XS_CODE_RETRIEVE_1 */,
451
- 3 /* XS_CODE_RETRIEVE_2 */,
452
- 1 /* XS_CODE_RETRIEVE_TARGET */,
453
- 1 /* XS_CODE_RETRIEVE_THIS */,
454
- 1 /* XS_CODE_RETURN */,
455
- 1 /* XS_CODE_RUN */,
456
- 2 /* XS_CODE_RUN_1 */,
457
- 3 /* XS_CODE_RUN_2 */,
458
- 5 /* XS_CODE_RUN_4 */,
459
- 1 /* XS_CODE_RUN_TAIL */,
460
- 2 /* XS_CODE_RUN_TAIL_1 */,
461
- 3 /* XS_CODE_RUN_TAIL_2 */,
462
- 5 /* XS_CODE_RUN_TAIL_4 */,
463
- 2 /* XS_CODE_SET_CLOSURE_1 */,
464
- 3 /* XS_CODE_SET_CLOSURE_2 */,
465
- 1 /* XS_CODE_SET_HOME */,
466
- 2 /* XS_CODE_SET_LOCAL_1 */,
467
- 3 /* XS_CODE_SET_LOCAL_2 */,
468
- 2 /* XS_CODE_SET_PRIVATE_1 */,
469
- 3 /* XS_CODE_SET_PRIVATE_2 */,
470
- 0 /* XS_CODE_SET_PROPERTY */,
471
- 1 /* XS_CODE_SET_PROPERTY_AT */,
472
- 1 /* XS_CODE_SET_RESULT */,
473
- 0 /* XS_CODE_SET_SUPER */,
474
- 1 /* XS_CODE_SET_SUPER_AT */,
475
- 1 /* XS_CODE_SET_THIS */,
476
- 0 /* XS_CODE_SET_VARIABLE */,
477
- 1 /* XS_CODE_SIGNED_RIGHT_SHIFT */,
478
- 1 /* XS_CODE_START_ASYNC */,
479
- 1 /* XS_CODE_START_ASYNC_GENERATOR */,
480
- 1 /* XS_CODE_START_GENERATOR */,
481
- 2 /* XS_CODE_STORE_1 */,
482
- 3 /* XS_CODE_STORE_2 */,
483
- 1 /* XS_CODE_STORE_ARROW */,
484
- 1 /* XS_CODE_STRICT_EQUAL */,
485
- 1 /* XS_CODE_STRICT_NOT_EQUAL */,
486
- -1 /* XS_CODE_STRING_1 */,
487
- -2 /* XS_CODE_STRING_2 */,
488
- -4 /* XS_CODE_STRING_4 */,
489
- -1 /* XS_CODE_STRING_ARCHIVE_1 */,
490
- -2 /* XS_CODE_STRING_ARCHIVE_2 */,
491
- -4 /* XS_CODE_STRING_ARCHIVE_2 */,
492
- 1 /* XS_CODE_SUBTRACT */,
493
- 1 /* XS_CODE_SUPER */,
494
- 1 /* XS_CODE_SWAP */,
495
- 0 /* XS_CODE_SYMBOL */,
496
- 1 /* XS_CODE_TARGET */,
497
- 1 /* XS_CODE_TEMPLATE */,
498
- 1 /* XS_CODE_TEMPLATE_CACHE */,
499
- 1 /* XS_CODE_THIS */,
500
- 1 /* XS_CODE_THROW */,
501
- 1 /* XS_CODE_THROW_STATUS */,
502
- 1 /* XS_CODE_TO_INSTANCE */,
503
- 1 /* XS_CODE_TO_NUMERIC */,
504
- 1 /* XS_CODE_TO_STRING */,
505
- 1 /* XS_CODE_TRANSFER */,
506
- 1 /* XS_CODE_TRUE */,
507
- 1 /* XS_CODE_TYPEOF */,
508
- 1 /* XS_CODE_UNCATCH */,
509
- 1 /* XS_CODE_UNDEFINED */,
510
- 1 /* XS_CODE_UNSIGNED_RIGHT_SHIFT */,
511
- 2 /* XS_CODE_UNWIND_1 */,
512
- 3 /* XS_CODE_UNWIND_2 */,
513
- 2 /* XS_CODE_VAR_CLOSURE_1 */,
514
- 3 /* XS_CODE_VAR_CLOSURE_2 */,
515
- 2 /* XS_CODE_VAR_LOCAL_1 */,
516
- 3 /* XS_CODE_VAR_LOCAL_2 */,
517
- 1 /* XS_CODE_VOID */,
518
- 1 /* XS_CODE_WITH */,
519
- 1 /* XS_CODE_WITHOUT */,
520
- 1 /* XS_CODE_YIELD */,
521
- #ifdef mx32bitID
522
- 5 /* XS_CODE_PROFILE */
523
- #else
524
- 3 /* XS_CODE_PROFILE */
525
- #endif
526
- };
527
-
528
- #if mxUseDefaultCStackLimit
529
-
530
- #ifdef __ets__
531
- #if ESP32
532
- #include "freertos/task.h"
533
- #else
534
- #include "cont.h"
535
- #endif
536
- #endif
537
-
538
- #ifndef mxASANStackMargin
539
- #define mxASANStackMargin 0
540
- #endif
541
-
542
- char* fxCStackLimit()
543
- {
544
- #if mxWindows
545
- ULONG_PTR low, high;
546
- GetCurrentThreadStackLimits(&low, &high);
547
- return (char*)low + (16 * 1024) + mxASANStackMargin;
548
- #elif mxMacOSX
549
- pthread_t self = pthread_self();
550
- void* stackAddr = pthread_get_stackaddr_np(self);
551
- size_t stackSize = pthread_get_stacksize_np(self);
552
- return (char*)stackAddr - stackSize + (128 * 1024) + mxASANStackMargin;
553
- #elif mxLinux
554
- char* result = C_NULL;
555
- pthread_attr_t attrs;
556
- pthread_attr_init(&attrs);
557
- if (pthread_getattr_np(pthread_self(), &attrs) == 0) {
558
- void* stackAddr;
559
- size_t stackSize;
560
- if (pthread_attr_getstack(&attrs, &stackAddr, &stackSize) == 0) {
561
- result = (char*)stackAddr + (128 * 1024) + mxASANStackMargin;
562
- }
563
- }
564
- pthread_attr_destroy(&attrs);
565
- return result;
566
- #elif defined(__ets__) && !ESP32
567
- extern cont_t g_cont;
568
- return 192 + (char *)g_cont.stack;
569
- #elif defined(__ets__) && ESP32
570
- TaskStatus_t info;
571
- vTaskGetTaskInfo(NULL, &info, pdFALSE, eReady);
572
- return 512 + (char *)info.pxStackBase;
573
- #else
574
- return C_NULL;
575
- #endif
576
- }
577
-
578
- #endif
579
-
580
- void fxDeleteScript(txScript* script)
581
- {
582
- if (script) {
583
- if (script->symbolsBuffer)
584
- c_free(script->symbolsBuffer);
585
- if (script->hostsBuffer)
586
- c_free(script->hostsBuffer);
587
- if (script->codeBuffer)
588
- c_free(script->codeBuffer);
589
- c_free(script);
590
- }
591
- }
592
-
593
-
594
- const txUTF8Sequence gxUTF8Sequences[] ICACHE_RODATA_ATTR = {
595
- {1, 0x80, 0x00, 0*6, 0x0000007F, 0x00000000},
596
- {2, 0xE0, 0xC0, 1*6, 0x000007FF, 0x00000080},
597
- {3, 0xF0, 0xE0, 2*6, 0x0000FFFF, 0x00000800},
598
- {4, 0xF8, 0xF0, 3*6, 0x001FFFFF, 0x00010000},
599
- {5, 0xFC, 0xF8, 4*6, 0x03FFFFFF, 0x00200000},
600
- {6, 0xFE, 0xFC, 5*6, 0x7FFFFFFF, 0x04000000},
601
- {0, 0, 0, 0, 0, 0},
602
- };
603
-
604
- static const char gxHexLower[] ICACHE_FLASH_ATTR = "0123456789abcdef";
605
- static const char gxHexUpper[] ICACHE_FLASH_ATTR = "0123456789ABCDEF";
606
- static txBoolean fxParseHex(txU1 c, txU4* value);
607
-
608
- txBoolean fxIsIdentifierFirst(txU4 c)
609
- {
610
- #define mxIdentifierFirstCount 1300
611
- static const txU2 gxIdentifierFirstTable[mxIdentifierFirstCount] ICACHE_RODATA_ATTR = {
612
- 36,0,29,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,130,4,2,1,
613
- 3,3,2,0,7,0,2,2,2,0,2,19,2,82,2,138,9,165,2,37,3,0,7,40,72,26,5,3,46,42,36,1,
614
- 2,98,2,0,16,1,8,1,11,2,3,0,17,0,2,29,30,88,12,0,25,32,10,1,5,0,6,21,5,0,10,0,
615
- 4,0,24,24,8,10,6,23,2,5,18,41,59,53,4,0,19,0,8,9,16,15,5,7,3,1,3,21,2,6,2,0,
616
- 4,3,4,0,17,0,14,1,2,2,15,1,11,0,9,5,5,1,3,21,2,6,2,1,2,1,2,1,32,3,2,0,
617
- 20,2,17,8,2,2,2,21,2,6,2,1,2,4,4,0,19,0,16,1,24,0,12,7,3,1,3,21,2,6,2,1,
618
- 2,4,4,0,31,1,2,2,16,0,18,0,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,23,0,
619
- 53,7,2,2,2,22,2,15,4,0,27,2,3,0,3,1,31,0,5,7,2,2,2,22,2,9,2,4,4,0,32,1,
620
- 2,1,16,1,18,8,2,2,2,40,3,0,17,0,6,2,9,2,25,5,6,17,4,23,2,8,2,0,3,6,59,47,
621
- 2,1,13,6,59,1,2,0,2,4,2,23,2,0,2,9,2,1,10,0,3,4,2,0,22,3,33,0,64,7,2,35,
622
- 28,4,116,42,21,0,17,5,5,3,4,0,4,1,8,2,5,12,13,0,18,37,2,0,6,0,3,42,2,332,2,3,
623
- 3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,38,15,17,85,
624
- 3,5,4,619,3,16,2,25,6,74,4,10,8,17,14,18,15,17,15,12,2,2,16,51,36,0,5,0,68,88,8,40,
625
- 2,0,6,69,11,30,50,29,3,4,12,43,5,25,55,22,10,52,83,0,94,46,18,7,55,29,14,1,11,43,27,35,
626
- 42,2,11,35,3,8,8,42,3,2,42,3,2,5,2,1,4,0,6,191,65,277,3,5,3,37,3,5,3,7,2,0,
627
- 2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,117,0,14,0,17,12,
628
- 102,0,5,0,3,9,2,0,3,5,7,0,2,0,2,0,2,15,3,3,6,4,5,0,18,40,2680,228,7,3,4,1,
629
- 13,37,2,0,6,0,3,55,8,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,551,2,26,8,
630
- 8,4,3,4,5,85,5,4,2,89,2,3,6,42,2,93,18,31,49,15,513,6591,65,22156,68,45,3,268,4,15,11,1,
631
- 21,46,17,30,3,79,40,8,3,102,3,63,6,1,2,0,2,4,25,15,2,2,2,3,2,22,30,51,15,49,63,5,
632
- 4,0,2,1,12,27,11,22,26,28,8,46,29,0,17,4,2,9,11,4,2,40,24,2,2,7,21,22,4,0,4,49,
633
- 2,0,4,1,3,4,3,0,2,0,25,2,3,10,8,2,13,5,3,5,3,5,10,6,2,6,2,42,2,13,7,114,
634
- 30,11171,13,22,5,48,8453,365,3,105,39,6,13,4,6,0,2,9,2,12,2,4,2,0,2,1,2,1,2,107,34,362,
635
- 19,63,3,53,41,11,117,4,2,134,37,25,7,25,12,88,4,5,3,5,3,5,3,2,36,11,2,25,2,18,2,1,
636
- 2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,
637
- 5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,68,310,10,21,11,7,25,5,2,41,2,8,
638
- 70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,
639
- 2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,
640
- 79,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,
641
- 13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,
642
- 2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,
643
- 14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,
644
- 29,0,11,39,8,0,22,0,12,45,20,0,19,72,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,
645
- 2,1,2,31,15,0,328,18,190,0,80,921,103,110,18,195,2637,96,16,1070,4050,582,8634,568,8,30,18,78,18,29,19,47,
646
- 17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8936,3,2,6,2,1,2,290,
647
- 46,2,18,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,
648
- 2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,
649
- 2,30,2,24,2,30,2,24,2,7,1845,30,482,44,11,6,17,0,322,29,19,43,1269,6,2,3,2,1,2,14,2,196,
650
- 60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,
651
- 2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,
652
- 6,2,2,4,2,16,4421,42719,33,4152,8,221,3,5761,15,7472,3104,541,1507,4938,
653
- };
654
- const txU2* p = gxIdentifierFirstTable;
655
- const txU2* q = p + mxIdentifierFirstCount;
656
- txU4 s = 0;
657
- while (p < q) {
658
- s += c_read16(p++);
659
- if (c < s)
660
- return 0;
661
- s += c_read16(p++);
662
- if (c <= s)
663
- return 1;
664
- }
665
- return 0;
666
- }
667
-
668
- txBoolean fxIsIdentifierNext(txU4 c)
669
- {
670
- #define mxIdentifierNextCount 1514
671
- static const txU2 gxIdentifierNextTable[mxIdentifierNextCount] ICACHE_RODATA_ATTR = {
672
- 36,0,12,9,8,25,5,0,2,25,48,0,11,0,2,0,3,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,
673
- 18,116,2,1,3,3,2,0,7,4,2,0,2,19,2,82,2,138,2,4,3,165,2,37,3,0,7,40,9,44,2,0,
674
- 2,1,2,1,2,0,9,26,5,3,30,10,6,73,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,
675
- 3,0,3,45,19,27,5,10,6,23,2,5,10,73,2,128,3,9,2,18,2,7,3,1,3,21,2,6,2,0,4,3,
676
- 3,8,3,1,3,3,9,0,5,1,2,4,3,11,11,0,2,0,3,2,2,5,5,1,3,21,2,6,2,1,2,1,
677
- 2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,
678
- 3,9,2,2,2,2,3,0,16,3,3,9,10,6,2,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,
679
- 3,2,8,2,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,
680
- 5,4,4,2,2,3,3,0,7,0,15,9,17,12,2,2,2,22,2,15,3,8,2,2,2,3,8,1,2,2,3,0,
681
- 3,3,3,9,17,3,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,7,1,2,3,3,9,2,1,
682
- 14,12,2,2,2,50,2,2,2,4,6,3,8,4,3,9,11,5,2,2,2,17,4,23,2,8,2,0,3,6,4,0,
683
- 5,5,2,0,2,7,7,9,3,1,14,57,6,14,2,9,40,1,2,0,2,4,2,23,2,0,2,22,3,4,2,0,
684
- 2,5,3,9,3,3,33,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,17,2,35,10,0,58,73,
685
- 7,77,3,37,2,0,6,0,3,42,2,332,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,
686
- 2,3,3,14,2,56,2,3,3,66,3,2,10,8,15,15,17,85,3,5,4,619,3,16,2,25,6,74,4,10,8,21,
687
- 10,21,12,19,13,12,2,2,2,1,13,83,4,0,5,1,3,9,34,2,2,10,7,88,8,42,6,69,11,30,2,11,
688
- 5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,9,13,2,15,50,76,4,9,
689
- 18,8,13,115,13,55,9,9,4,48,3,8,8,42,3,2,17,2,2,38,6,533,3,5,3,37,3,5,3,7,2,0,
690
- 2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,16,1,50,1,20,0,
691
- 29,0,14,0,17,12,52,12,5,0,4,11,18,0,5,0,3,9,2,0,3,5,7,0,2,0,2,0,2,15,3,3,
692
- 6,4,5,0,18,40,2680,228,7,8,13,37,2,0,6,0,3,55,8,0,16,23,10,6,2,6,2,6,2,6,2,6,
693
- 2,6,2,6,2,6,2,31,518,2,26,14,2,4,3,4,5,85,3,6,2,89,2,3,6,42,2,93,18,31,49,15,
694
- 513,6591,65,22156,68,45,3,268,4,27,21,47,5,9,2,114,38,8,3,102,3,63,6,1,2,0,2,4,25,53,5,0,
695
- 20,51,13,69,11,9,7,23,4,0,2,48,3,35,13,28,4,64,15,10,7,30,2,54,10,13,3,9,7,22,4,72,
696
- 25,2,3,15,3,4,11,5,3,5,3,5,10,6,2,6,2,42,2,13,7,122,2,1,3,9,7,11171,13,22,5,48,
697
- 8453,365,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,
698
- 17,15,4,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2,36,11,2,25,
699
- 2,18,2,1,2,14,3,13,35,122,70,52,137,0,131,28,4,48,16,0,32,31,14,29,6,42,6,29,3,35,5,7,
700
- 2,4,43,157,3,9,7,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,68,310,
701
- 10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,
702
- 11,25,71,55,7,1,65,3,2,1,6,7,2,2,2,28,3,2,5,0,33,28,4,28,36,7,2,29,26,53,11,21,
703
- 11,18,14,17,111,72,56,50,14,50,14,39,9,9,327,41,2,1,4,1,79,28,11,0,9,32,32,21,43,20,28,22,
704
- 10,70,32,15,10,59,8,0,14,24,8,9,7,52,2,9,5,3,9,35,3,0,10,68,5,3,2,12,2,0,36,17,
705
- 2,36,7,0,66,6,2,0,2,3,2,14,2,9,8,58,6,9,7,3,2,7,3,1,3,21,2,6,2,1,2,4,
706
- 2,9,3,1,3,2,3,0,7,0,6,6,3,6,4,4,140,74,6,9,5,3,31,69,2,0,9,9,167,53,3,8,
707
- 24,5,35,64,4,0,12,9,39,56,8,9,55,26,3,14,5,9,7,6,186,58,102,73,22,7,3,0,3,7,2,1,
708
- 2,29,2,1,3,8,13,9,71,7,3,45,3,7,2,1,28,62,9,0,9,73,4,0,19,72,264,8,2,44,2,8,
709
- 16,9,25,29,3,21,2,13,74,6,2,1,2,43,4,0,2,1,2,8,9,9,7,5,2,1,2,36,2,1,2,5,
710
- 8,9,311,22,186,0,80,921,103,110,18,195,2637,96,16,1070,4050,582,8634,568,8,30,2,9,7,78,2,9,7,29,3,4,
711
- 12,54,10,3,13,9,10,20,6,18,689,63,129,74,5,56,8,16,65,1,2,1,12,1,15,6135,9,1237,43,8,8936,3,
712
- 2,6,2,1,2,290,46,2,18,3,9,395,2309,106,6,12,4,8,8,9,4,1,4706,45,3,22,543,4,4,5,9,7,
713
- 3,6,31,3,149,2,444,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,
714
- 2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,
715
- 2,7,3,49,513,54,5,49,9,0,15,0,23,4,2,14,1105,30,226,6,2,16,3,6,2,1,2,4,214,44,4,13,
716
- 3,9,5,0,322,30,18,57,1255,6,2,3,2,1,2,14,2,196,12,6,42,75,5,9,1191,3,2,26,2,1,2,0,
717
- 3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,
718
- 2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,3381,9,1031,42719,33,4152,
719
- 8,221,3,5761,15,7472,3104,541,1507,4938,
720
- };
721
- const txU2* p = gxIdentifierNextTable;
722
- const txU2* q = p + mxIdentifierNextCount;
723
- txU4 s = 0;
724
- while (p < q) {
725
- s += c_read16(p++);
726
- if (c < s)
727
- return 0;
728
- s += c_read16(p++);
729
- if (c <= s)
730
- return 1;
731
- }
732
- s += 716214;
733
- if (c < s)
734
- return 0;
735
- s += 239;
736
- if (c <= s)
737
- return 1;
738
- return 0;
739
- }
740
-
741
- txBoolean fxIsSpace(txInteger character)
742
- {
743
- static const txU4 spaces[27] ICACHE_RODATA_ATTR = {
744
- 0x00000009,
745
- 0x0000000A,
746
- 0x0000000B,
747
- 0x0000000C,
748
- 0x0000000D,
749
- 0x00000020,
750
- 0x000000A0,
751
- 0x00001680,
752
- 0x00002000,
753
- 0x00002001,
754
- 0x00002002,
755
- 0x00002003,
756
- 0x00002004,
757
- 0x00002005,
758
- 0x00002006,
759
- 0x00002007,
760
- 0x00002008,
761
- 0x00002009,
762
- 0x0000200A,
763
- 0x00002028,
764
- 0x00002029,
765
- 0x0000202F,
766
- 0x0000205F,
767
- 0x00003000,
768
- 0x0000FEFF,
769
- 0xFFFFFFFF,
770
- 0x00000000,
771
- };
772
- const txU4 *p = spaces;
773
- txU4 c = (txU4)character;
774
- txU4 s;
775
- while ((s = *p++)) {
776
- if (c < s)
777
- return 0;
778
- if (c == s)
779
- return 1;
780
- }
781
- return 0;
782
- }
783
-
784
- txBoolean fxParseHex(txU1 c, txU4* value)
785
- {
786
- if (('0' <= c) && (c <= '9'))
787
- *value = (*value * 16) + (c - '0');
788
- else if (('a' <= c) && (c <= 'f'))
789
- *value = (*value * 16) + (10 + c - 'a');
790
- else if (('A' <= c) && (c <= 'F'))
791
- *value = (*value * 16) + (10 + c - 'A');
792
- else
793
- return 0;
794
- return 1;
795
- }
796
-
797
- txBoolean fxParseHexEscape(txString* string, txInteger* character)
798
- {
799
- txU1* p = *((txU1**)string);
800
- txU4 value = 0;
801
- txU1 i, c;
802
- for (i = 0; i < 2; i++) {
803
- c = c_read8(p);
804
- if (!fxParseHex(c, &value))
805
- return 0;
806
- p++;
807
- }
808
- *character = (txInteger)value;
809
- *string = (txString)p;
810
- return 1;
811
- }
812
-
813
- txBoolean fxParseUnicodeEscape(txString* string, txInteger* character, txInteger braces, txInteger separator)
814
- {
815
- txU1* p = *((txU1**)string);
816
- txU4 value = 0;
817
- txU1 c;
818
- txInteger i;
819
-
820
- c = c_read8(p++);
821
- if (braces && (c == '{')) {
822
- c = c_read8(p++);
823
- for (i = 0; value < 0x00110000; i++) {
824
- if (fxParseHex(c, &value)) {
825
- c = c_read8(p++);
826
- }
827
- else
828
- break;
829
- }
830
- if ((c == '}') && (i > 0) && (value < 0x00110000)) {
831
- *character = (txInteger)value;
832
- *string = (txString)p;
833
- return 1;
834
- }
835
- return 0;
836
- }
837
- if (!fxParseHex(c, &value)) return 0;
838
- c = c_read8(p++);
839
- if (!fxParseHex(c, &value)) return 0;
840
- c = c_read8(p++);
841
- if (!fxParseHex(c, &value)) return 0;
842
- c = c_read8(p++);
843
- if (!fxParseHex(c, &value)) return 0;
844
- *character = (txInteger)value;
845
- *string = (txString)p;
846
- c = c_read8(p++);
847
- if (c && (c == separator) && (0x0000D800 <= value) && (value <= 0x0000DBFF)) {
848
- c = c_read8(p++);
849
- if (c == 'u') {
850
- txU4 other = 0;
851
- c = c_read8(p++);
852
- if (!fxParseHex(c, &other)) return 1;
853
- c = c_read8(p++);
854
- if (!fxParseHex(c, &other)) return 1;
855
- c = c_read8(p++);
856
- if (!fxParseHex(c, &other)) return 1;
857
- c = c_read8(p++);
858
- if (!fxParseHex(c, &other)) return 1;
859
- if ((0x0000DC00 <= other) && (other <= 0x0000DFFF)) {
860
- *character = (txInteger)(0x00010000 + ((value & 0x03FF) << 10) + (other & 0x03FF));
861
- *string = (txString)p;
862
- }
863
- }
864
- }
865
- return 1;
866
- }
867
-
868
- txString fxSkipSpaces(txString string)
869
- {
870
- txString p = string;
871
- txString q = p;
872
- txInteger c;
873
- while (((q = fxUTF8Decode(q, &c))) && (c != C_EOF)) {
874
- if (fxIsSpace(c))
875
- p = q;
876
- else
877
- break;
878
- }
879
- return p;
880
- }
881
-
882
- txString fxStringifyHexEscape(txString string, txInteger character)
883
- {
884
- const char* digits = gxHexUpper;
885
- txU1* p = (txU1*)string;
886
- *p++ = c_read8(digits + ((character & 0x000000F0) >> 4));
887
- *p++ = c_read8(digits + (character & 0x0000000F));
888
- return (txString)p;
889
- }
890
-
891
- txString fxStringifyUnicodeEscape(txString string, txInteger character, txInteger separator)
892
- {
893
- const char* digits = (separator == '%') ? gxHexUpper : gxHexLower;
894
- txU1* p = (txU1*)string;
895
- txInteger surrogate;
896
- if (character > 0xFFFF) {
897
- character -= 0x10000;
898
- surrogate = 0xDC00 | (character & 0x3FF);
899
- character = 0xD800 | (character >> 10);
900
- }
901
- else
902
- surrogate = 0;
903
- *p++ = c_read8(digits + ((character & 0x0000F000) >> 12));
904
- *p++ = c_read8(digits + ((character & 0x00000F00) >> 8));
905
- *p++ = c_read8(digits + ((character & 0x000000F0) >> 4));
906
- *p++ = c_read8(digits + (character & 0x0000000F));
907
- if (surrogate) {
908
- *p++ = separator;
909
- *p++ = 'u';
910
- *p++ = c_read8(digits + ((surrogate & 0x0000F000) >> 12));
911
- *p++ = c_read8(digits + ((surrogate & 0x00000F00) >> 8));
912
- *p++ = c_read8(digits + ((surrogate & 0x000000F0) >> 4));
913
- *p++ = c_read8(digits + (surrogate & 0x0000000F));
914
- }
915
- return (txString)p;
916
- }
917
-
918
- int fxUTF8Compare(txString p1, txString p2)
919
- {
920
- register const unsigned char *s1 = (const unsigned char *) p1;
921
- register const unsigned char *s2 = (const unsigned char *) p2;
922
- unsigned char c1, c2;
923
- do {
924
- c1 = (unsigned char) *s1++;
925
- c2 = (unsigned char) *s2++;
926
- if (c1 == '\0')
927
- return c1 - c2;
928
- }
929
- while (c1 == c2);
930
- if (c2 == '\0')
931
- return c1 - c2;
932
- if ((c1 == 0xC0) && (*s1 == 0x80))
933
- return 0 - c2;
934
- if ((c2 == 0xC0) && (*s2 == 0x80))
935
- return c1 - 0;
936
- return c1 - c2;
937
- }
938
-
939
- txString fxUTF8Decode(txString string, txInteger* character)
940
- {
941
- txU1* p = (txU1*)string;
942
- txU4 c = c_read8(p++);
943
- if (c) {
944
- if (c & 0x80) {
945
- const txUTF8Sequence *sequence;
946
- txS4 size;
947
- for (sequence = gxUTF8Sequences; sequence->size; sequence++) {
948
- if ((c & sequence->cmask) == sequence->cval)
949
- break;
950
- }
951
- size = sequence->size - 1;
952
- while (size > 0) {
953
- size--;
954
- c = (c << 6) | (c_read8(p++) & 0x3F);
955
- }
956
- c &= sequence->lmask;
957
- }
958
- *character = (txInteger)c;
959
- return (txString)p;
960
- }
961
- *character = C_EOF;
962
- return (txString)p;
963
- }
964
-
965
- txString fxUTF8Encode(txString string, txInteger character)
966
- {
967
- txU1* p = (txU1*)string;
968
- if (character < 0) {
969
- }
970
- else if (character == 0) {
971
- *p++ = 0xC0;
972
- *p++ = 0x80;
973
- }
974
- else if (character < 0x80) {
975
- *p++ = (txU1)character;
976
- }
977
- else if (character < 0x800) {
978
- *p++ = (txU1)(0xC0 | (((txU4)character) >> 6));
979
- *p++ = (txU1)(0x80 | (((txU4)character) & 0x3F));
980
- }
981
- else if (character < 0x10000) {
982
- *p++ = (txU1)(0xE0 | (((txU4)character) >> 12));
983
- *p++ = (txU1)(0x80 | ((((txU4)character) >> 6) & 0x3F));
984
- *p++ = (txU1)(0x80 | (((txU4)character) & 0x3F));
985
- }
986
- else if (character < 0x110000) {
987
- *p++ = (txU1)(0xF0 | (((txU4)character) >> 18));
988
- *p++ = (txU1)(0x80 | ((((txU4)character) >> 12) & 0x3F));
989
- *p++ = (txU1)(0x80 | ((((txU4)character) >> 6) & 0x3F));
990
- *p++ = (txU1)(0x80 | (((txU4)character) & 0x3F));
991
- }
992
- return (txString)p;
993
- }
994
-
995
- txSize fxUTF8Length(txInteger character)
996
- {
997
- txSize length;
998
- if (character < 0)
999
- length = 0;
1000
- else if (character == 0)
1001
- length = 2;
1002
- else if (character < 0x80)
1003
- length = 1;
1004
- else if (character < 0x800)
1005
- length = 2;
1006
- else if (character < 0x10000)
1007
- length = 3;
1008
- else if (character < 0x110000)
1009
- length = 4;
1010
- else
1011
- length = 0;
1012
- return length;
1013
- }
1014
-
1015
- #if mxCESU8
1016
- txString fxCESU8Decode(txString string, txInteger* character)
1017
- {
1018
- txInteger result;
1019
- string = fxUTF8Decode(string, &result);
1020
- if ((0x0000D800 <= result) && (result <= 0x0000DBFF)) {
1021
- txString former = string;
1022
- txInteger surrogate;
1023
- string = fxUTF8Decode(former, &surrogate);
1024
- if ((0x0000DC00 <= surrogate) && (surrogate <= 0x0000DFFF))
1025
- result = 0x00010000 + ((result & 0x000003FF) << 10) + (surrogate & 0x000003FF);
1026
- else
1027
- string = former;
1028
- }
1029
- *character = result;
1030
- return string;
1031
- }
1032
-
1033
- txString fxCESU8Encode(txString string, txInteger character)
1034
- {
1035
- txU1* p = (txU1*)string;
1036
- if (character < 0) {
1037
- }
1038
- else if (character == 0) {
1039
- *p++ = 0xC0;
1040
- *p++ = 0x80;
1041
- }
1042
- else if (character < 0x80) {
1043
- *p++ = (txU1)character;
1044
- }
1045
- else if (character < 0x800) {
1046
- *p++ = (txU1)(0xC0 | (((txU4)character) >> 6));
1047
- *p++ = (txU1)(0x80 | (((txU4)character) & 0x3F));
1048
- }
1049
- else if (character < 0x10000) {
1050
- *p++ = (txU1)(0xE0 | (((txU4)character) >> 12));
1051
- *p++ = (txU1)(0x80 | ((((txU4)character) >> 6) & 0x3F));
1052
- *p++ = (txU1)(0x80 | (((txU4)character) & 0x3F));
1053
- }
1054
- else if (character < 0x110000) {
1055
- txInteger surrogate;
1056
- character -= 0x00010000;
1057
- surrogate = 0xDC00 | (character & 0x3FF);
1058
- character = 0xD800 | ((character >> 10) & 0x3FF);
1059
- *p++ = (txU1)(0xE0 | (((txU4)character) >> 12));
1060
- *p++ = (txU1)(0x80 | ((((txU4)character) >> 6) & 0x3F));
1061
- *p++ = (txU1)(0x80 | (((txU4)character) & 0x3F));
1062
- *p++ = (txU1)(0xE0 | (((txU4)surrogate) >> 12));
1063
- *p++ = (txU1)(0x80 | ((((txU4)surrogate) >> 6) & 0x3F));
1064
- *p++ = (txU1)(0x80 | (((txU4)surrogate) & 0x3F));
1065
- }
1066
- return (txString)p;
1067
- }
1068
-
1069
- txSize fxCESU8Length(txInteger character)
1070
- {
1071
- txSize length;
1072
- if (character < 0)
1073
- length = 0;
1074
- else if (character == 0)
1075
- length = 2;
1076
- else if (character < 0x80)
1077
- length = 1;
1078
- else if (character < 0x800)
1079
- length = 2;
1080
- else if (character < 0x10000)
1081
- length = 3;
1082
- else if (character < 0x110000)
1083
- length = 6;
1084
- else
1085
- length = 0;
1086
- return length;
1087
- }
1088
- #endif
1089
-
1090
- txSize fxUTF8ToUnicodeOffset(txString theString, txSize theOffset)
1091
- {
1092
- txU1* p = (txU1*)theString;
1093
- txU1 c;
1094
- txSize unicodeOffset = 0;
1095
- txSize utf8Offset = 0;
1096
-
1097
- while ((c = c_read8(p++))) {
1098
- if ((c & 0xC0) != 0x80) {
1099
- if (utf8Offset == theOffset)
1100
- return unicodeOffset;
1101
- unicodeOffset++;
1102
- }
1103
- utf8Offset++;
1104
- }
1105
- if (utf8Offset == theOffset)
1106
- return unicodeOffset;
1107
- else
1108
- return -1;
1109
- }
1110
-
1111
- #if 0
1112
- txSize fxUnicodeLength(txString theString)
1113
- {
1114
- txU1* p = (txU1*)theString;
1115
- txU1 c;
1116
- txSize anIndex = 0;
1117
-
1118
- while ((c = c_read8(p++))) {
1119
- if ((c & 0xC0) != 0x80)
1120
- anIndex++;
1121
- }
1122
- return anIndex;
1123
- }
1124
- #else
1125
- // http://www.daemonology.net/blog/2008-06-05-faster-utf8-strlen.html
1126
-
1127
- #define ONEMASK ((size_t)(-1) / 0xFF)
1128
-
1129
- #if defined(__has_feature)
1130
- #if __has_feature(address_sanitizer)
1131
- __attribute__((no_sanitize("address")))
1132
- #endif
1133
- #endif
1134
- txSize fxUnicodeLength(txString _s)
1135
- {
1136
- const char * s;
1137
- size_t count = 0;
1138
- size_t u;
1139
- unsigned char b;
1140
-
1141
- /* Handle any initial misaligned bytes. */
1142
- for (s = _s; (uintptr_t)(s) & (sizeof(size_t) - 1); s++) {
1143
- b = c_read8(s);
1144
-
1145
- /* Exit if we hit a zero byte. */
1146
- if (b == '\0')
1147
- goto done;
1148
-
1149
- /* Is this byte NOT the first byte of a character? */
1150
- count += (b >> 7) & ((~b) >> 6);
1151
- }
1152
-
1153
- /* Handle complete blocks. */
1154
- for (; ; s += sizeof(size_t)) {
1155
- /* Grab 4 or 8 bytes of UTF-8 data. */
1156
- u = *(size_t *)(s);
1157
-
1158
- /* Exit the loop if there are any zero bytes. */
1159
- if ((u - ONEMASK) & (~u) & (ONEMASK * 0x80))
1160
- break;
1161
-
1162
- /* Count bytes which are NOT the first byte of a character. */
1163
- u = ((u & (ONEMASK * 0x80)) >> 7) & ((~u) >> 6);
1164
- count += (u * ONEMASK) >> ((sizeof(size_t) - 1) * 8);
1165
- }
1166
-
1167
- /* Take care of any left-over bytes. */
1168
- for (; ; s++) {
1169
- b = c_read8(s);
1170
-
1171
- /* Exit if we hit a zero byte. */
1172
- if (b == '\0')
1173
- break;
1174
-
1175
- /* Is this byte NOT the first byte of a character? */
1176
- count += (b >> 7) & ((~b) >> 6);
1177
- }
1178
-
1179
- done:
1180
- return (txSize)((s - _s) - count);
1181
- }
1182
- #endif
1183
-
1184
- txSize fxUnicodeToUTF8Offset(txString theString, txSize theOffset)
1185
- {
1186
- txU1* p = (txU1*)theString;
1187
- txU1 c;
1188
- txSize unicodeOffset = 0;
1189
- txSize utf8Offset = 0;
1190
-
1191
- while ((c = c_read8(p++))) {
1192
- if ((c & 0xC0) != 0x80) {
1193
- if (unicodeOffset == theOffset)
1194
- return utf8Offset;
1195
- unicodeOffset++;
1196
- }
1197
- utf8Offset++;
1198
- }
1199
- if (unicodeOffset == theOffset)
1200
- return utf8Offset;
1201
- else
1202
- return -1;
1203
- }
1204
-
1205
- txFlag fxIntegerToIndex(void* dtoa, txInteger theInteger, txIndex* theIndex)
1206
- {
1207
- if (0 <= theInteger) {
1208
- *theIndex = (txIndex)theInteger;
1209
- return 1;
1210
- }
1211
- return 0;
1212
- }
1213
-
1214
- txFlag fxNumberToIndex(void* dtoa, txNumber number, txIndex* theIndex)
1215
- {
1216
- txIndex integer = (txIndex)number;
1217
- txNumber check = integer;
1218
- if ((number == check) && (integer < 4294967295u)) {
1219
- *theIndex = integer;
1220
- return 1;
1221
- }
1222
- return 0;
1223
- }
1224
-
1225
- txFlag fxStringToIndex(void* dtoa, txString theString, txIndex* theIndex)
1226
- {
1227
- char buffer[256], c;
1228
- txNumber number;
1229
- txIndex integer;
1230
- txNumber check;
1231
-
1232
- c = c_read8(theString);
1233
- if (('+' != c) && ('-' != c) && ('.' != c) && !(('0' <= c) && ('9' >= c)))
1234
- return 0;
1235
- number = fxStringToNumber(dtoa, theString, 1);
1236
- integer = (txIndex)number;
1237
- check = integer;
1238
- if ((number == check) && (integer < 4294967295u)) {
1239
- fxNumberToString(dtoa, number, buffer, sizeof(buffer), 0, 0);
1240
- if (!c_strcmp(theString, buffer)) {
1241
- *theIndex = integer;
1242
- return 1;
1243
- }
1244
- }
1245
- return 0;
1246
- }
1247
-
1248
- const txString gxIDStrings[XS_ID_COUNT] = {
1249
- "@",
1250
- "Symbol.asyncIterator",
1251
- "Symbol.hasInstance",
1252
- "Symbol.isConcatSpreadable",
1253
- "Symbol.iterator",
1254
- "Symbol.match",
1255
- "Symbol.matchAll",
1256
- "Symbol.replace",
1257
- "Symbol.search",
1258
- "Symbol.species",
1259
- "Symbol.split",
1260
- "Symbol.toPrimitive",
1261
- "Symbol.toStringTag",
1262
- "Symbol.unscopables",
1263
- "AggregateError",
1264
- "Array",
1265
- "ArrayBuffer",
1266
- "Atomics",
1267
- "BigInt",
1268
- "BigInt64Array",
1269
- "BigUint64Array",
1270
- "Boolean",
1271
- "DataView",
1272
- "Date",
1273
- "Error",
1274
- "EvalError",
1275
- "FinalizationRegistry",
1276
- "Float32Array",
1277
- "Float64Array",
1278
- "Int16Array",
1279
- "Int32Array",
1280
- "Int8Array",
1281
- "JSON",
1282
- "Map",
1283
- "Math",
1284
- "ModuleSource",
1285
- "Number",
1286
- "Object",
1287
- "Promise",
1288
- "Proxy",
1289
- "RangeError",
1290
- "ReferenceError",
1291
- "Reflect",
1292
- "RegExp",
1293
- "Set",
1294
- "SharedArrayBuffer",
1295
- "String",
1296
- "Symbol",
1297
- "SyntaxError",
1298
- "TypeError",
1299
- "TypedArray",
1300
- "URIError",
1301
- "Uint16Array",
1302
- "Uint32Array",
1303
- "Uint8Array",
1304
- "Uint8ClampedArray",
1305
- "WeakMap",
1306
- "WeakRef",
1307
- "WeakSet",
1308
- "decodeURI",
1309
- "decodeURIComponent",
1310
- "encodeURI",
1311
- "encodeURIComponent",
1312
- "escape",
1313
- "isFinite",
1314
- "isNaN",
1315
- "parseFloat",
1316
- "parseInt",
1317
- "trace",
1318
- "unescape",
1319
- "Infinity",
1320
- "NaN",
1321
- "undefined",
1322
- "Compartment",
1323
- "Function",
1324
- "eval",
1325
- "AsyncFunction",
1326
- "AsyncGeneratorFunction",
1327
- "BYTES_PER_ELEMENT",
1328
- "E",
1329
- "EPSILON",
1330
- "Generator",
1331
- "GeneratorFunction",
1332
- "LN10",
1333
- "LN2",
1334
- "LOG10E",
1335
- "LOG2E",
1336
- "MAX_SAFE_INTEGER",
1337
- "MAX_VALUE",
1338
- "MIN_SAFE_INTEGER",
1339
- "MIN_VALUE",
1340
- "NEGATIVE_INFINITY",
1341
- "PI",
1342
- "POSITIVE_INFINITY",
1343
- "SQRT1_2",
1344
- "SQRT2",
1345
- "UTC",
1346
- "__defineGetter__",
1347
- "__defineSetter__",
1348
- "__lookupGetter__",
1349
- "__lookupSetter__",
1350
- "__proto__",
1351
- "abs",
1352
- "acos",
1353
- "acosh",
1354
- "add",
1355
- "aliases",
1356
- "all",
1357
- "allSettled",
1358
- "and",
1359
- "any",
1360
- "append",
1361
- "apply",
1362
- "arguments",
1363
- "as",
1364
- "asIntN",
1365
- "asUintN",
1366
- "asin",
1367
- "asinh",
1368
- "assign",
1369
- "asyncIterator",
1370
- "at",
1371
- "atan",
1372
- "atanh",
1373
- "atan2",
1374
- "bind",
1375
- "bindings",
1376
- "bitLength",
1377
- "boundArguments",
1378
- "boundFunction",
1379
- "boundThis",
1380
- "buffer",
1381
- "busy",
1382
- "byteLength",
1383
- "byteOffset",
1384
- "cache",
1385
- "call",
1386
- "callee",
1387
- "caller",
1388
- "catch",
1389
- "cause",
1390
- "cbrt",
1391
- "ceil",
1392
- "center",
1393
- "charAt",
1394
- "charCodeAt",
1395
- "chunk",
1396
- "chunkify",
1397
- "cleanupSome",
1398
- "clear",
1399
- "closure",
1400
- "clz32",
1401
- "codePointAt",
1402
- "compare",
1403
- "compareExchange",
1404
- "compile",
1405
- "concat",
1406
- "configurable",
1407
- "console",
1408
- "construct",
1409
- "constructor",
1410
- "copyWithin",
1411
- "cos",
1412
- "cosh",
1413
- "count",
1414
- "create",
1415
- "default",
1416
- "defineProperties",
1417
- "defineProperty",
1418
- "delete",
1419
- "deleteProperty",
1420
- "deref",
1421
- "description",
1422
- "done",
1423
- "dotAll",
1424
- "eachDown",
1425
- "eachUp",
1426
- "endsWith",
1427
- "entries",
1428
- "enumerable",
1429
- "enumerate",
1430
- "errors",
1431
- "evaluate",
1432
- "every",
1433
- "exchange",
1434
- "exec",
1435
- "exp",
1436
- "expm1",
1437
- "export",
1438
- "exports",
1439
- "fill",
1440
- "filter",
1441
- "finally",
1442
- "find",
1443
- "findIndex",
1444
- "findLast",
1445
- "findLastIndex",
1446
- "flags",
1447
- "flat",
1448
- "flatMap",
1449
- "floor",
1450
- "for",
1451
- "forEach",
1452
- "free",
1453
- "freeze",
1454
- "from",
1455
- "fromArrayBuffer",
1456
- "fromBigInt",
1457
- "fromCharCode",
1458
- "fromCodePoint",
1459
- "fromEntries",
1460
- "fromString",
1461
- "fround",
1462
- "function",
1463
- "get",
1464
- "getBigInt64",
1465
- "getBigUint64",
1466
- "getDate",
1467
- "getDay",
1468
- "getFloat32",
1469
- "getFloat64",
1470
- "getFullYear",
1471
- "getHours",
1472
- "getInt16",
1473
- "getInt32",
1474
- "getInt8",
1475
- "getMilliseconds",
1476
- "getMinutes",
1477
- "getMonth",
1478
- "getOwnPropertyDescriptor",
1479
- "getOwnPropertyDescriptors",
1480
- "getOwnPropertyNames",
1481
- "getOwnPropertySymbols",
1482
- "getPrototypeOf",
1483
- "getSeconds",
1484
- "getTime",
1485
- "getTimezoneOffset",
1486
- "getUTCDate",
1487
- "getUTCDay",
1488
- "getUTCFullYear",
1489
- "getUTCHours",
1490
- "getUTCMilliseconds",
1491
- "getUTCMinutes",
1492
- "getUTCMonth",
1493
- "getUTCSeconds",
1494
- "getUint16",
1495
- "getUint32",
1496
- "getUint8",
1497
- "getYear",
1498
- "global",
1499
- "globalThis",
1500
- "groups",
1501
- "grow",
1502
- "growable",
1503
- "has",
1504
- "hasIndices",
1505
- "hasInstance",
1506
- "hasOwn",
1507
- "hasOwnProperty",
1508
- "hypot",
1509
- "id",
1510
- "idiv",
1511
- "idivmod",
1512
- "ignoreCase",
1513
- "imod",
1514
- "import",
1515
- "importNow",
1516
- "imports",
1517
- "imul",
1518
- "imuldiv",
1519
- "includes",
1520
- "index",
1521
- "indexOf",
1522
- "indices",
1523
- "input",
1524
- "irem",
1525
- "is",
1526
- "isArray",
1527
- "isConcatSpreadable",
1528
- "isExtensible",
1529
- "isFrozen",
1530
- "isInteger",
1531
- "isLockFree",
1532
- "isPrototypeOf",
1533
- "isSafeInteger",
1534
- "isSealed",
1535
- "isView",
1536
- "iterable",
1537
- "iterator",
1538
- "join",
1539
- "keyFor",
1540
- "keys",
1541
- "lastIndex",
1542
- "lastIndexOf",
1543
- "left",
1544
- "length",
1545
- "line",
1546
- "load",
1547
- "local",
1548
- "localeCompare",
1549
- "log",
1550
- "log1p",
1551
- "log10",
1552
- "log2",
1553
- "map",
1554
- "match",
1555
- "matchAll",
1556
- "max",
1557
- "maxByteLength",
1558
- "message",
1559
- "min",
1560
- "mod",
1561
- "module",
1562
- "multiline",
1563
- "name",
1564
- "needsImport",
1565
- "needsImportMeta",
1566
- "new.target",
1567
- "next",
1568
- "normalize",
1569
- "notify",
1570
- "now",
1571
- "of",
1572
- "or",
1573
- "ownKeys",
1574
- "padEnd",
1575
- "padStart",
1576
- "parse",
1577
- "path",
1578
- "peek",
1579
- "poke",
1580
- "pop",
1581
- "pow",
1582
- "preventExtensions",
1583
- "propertyIsEnumerable",
1584
- "prototype",
1585
- "proxy",
1586
- "push",
1587
- "race",
1588
- "random",
1589
- "raw",
1590
- "reason",
1591
- "reduce",
1592
- "reduceRight",
1593
- "reexports",
1594
- "register",
1595
- "reject",
1596
- "repeat",
1597
- "replace",
1598
- "replaceAll",
1599
- "resizable",
1600
- "resize",
1601
- "resolve",
1602
- "result",
1603
- "return",
1604
- "reverse",
1605
- "revocable",
1606
- "revoke",
1607
- "right",
1608
- "round",
1609
- "seal",
1610
- "search",
1611
- "set",
1612
- "setBigInt64",
1613
- "setBigUint64",
1614
- "setDate",
1615
- "setFloat32",
1616
- "setFloat64",
1617
- "setFullYear",
1618
- "setHours",
1619
- "setInt16",
1620
- "setInt32",
1621
- "setInt8",
1622
- "setMilliseconds",
1623
- "setMinutes",
1624
- "setMonth",
1625
- "setPrototypeOf",
1626
- "setSeconds",
1627
- "setTime",
1628
- "setUTCDate",
1629
- "setUTCFullYear",
1630
- "setUTCHours",
1631
- "setUTCMilliseconds",
1632
- "setUTCMinutes",
1633
- "setUTCMonth",
1634
- "setUTCSeconds",
1635
- "setUint16",
1636
- "setUint32",
1637
- "setUint8",
1638
- "setYear",
1639
- "shift",
1640
- "sign",
1641
- "sin",
1642
- "sinh",
1643
- "size",
1644
- "slice",
1645
- "some",
1646
- "sort",
1647
- "source",
1648
- "species",
1649
- "splice",
1650
- "split",
1651
- "sqrt",
1652
- "stack",
1653
- "startsWith",
1654
- "status",
1655
- "sticky",
1656
- "store",
1657
- "stringify",
1658
- "sub",
1659
- "subarray",
1660
- "substr",
1661
- "substring",
1662
- "tan",
1663
- "tanh",
1664
- "test",
1665
- "then",
1666
- "this",
1667
- "throw",
1668
- "toDateString",
1669
- "toExponential",
1670
- "toFixed",
1671
- "toGMTString",
1672
- "toISOString",
1673
- "toJSON",
1674
- "toLocaleDateString",
1675
- "toLocaleLowerCase",
1676
- "toLocaleString",
1677
- "toLocaleTimeString",
1678
- "toLocaleUpperCase",
1679
- "toLowerCase",
1680
- "toPrecision",
1681
- "toPrimitive",
1682
- "toString",
1683
- "toStringTag",
1684
- "toTimeString",
1685
- "toUTCString",
1686
- "toUpperCase",
1687
- "transfer",
1688
- "transfers",
1689
- "trim",
1690
- "trimEnd",
1691
- "trimLeft",
1692
- "trimRight",
1693
- "trimStart",
1694
- "trunc",
1695
- "unicode",
1696
- "unregister",
1697
- "unscopables",
1698
- "unshift",
1699
- "uri",
1700
- "value",
1701
- "valueOf",
1702
- "values",
1703
- "wait",
1704
- "wake",
1705
- "weak",
1706
- "writable",
1707
- "xor",
1708
- "",
1709
- "<xsbug:script>"
1710
- };