@agoric/xsnap 0.14.3-u13.0 → 0.14.3-u16.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 (137) hide show
  1. package/README.md +3 -3
  2. package/api.js +4 -2
  3. package/build.env +1 -1
  4. package/moddable/modules/data/base64/base64.js +28 -0
  5. package/moddable/modules/data/base64/manifest.json +11 -0
  6. package/moddable/modules/data/base64/modBase64.c +188 -0
  7. package/moddable/modules/data/binaryMessage/BinaryMessage.js +106 -0
  8. package/moddable/modules/data/crc/crc.c +205 -0
  9. package/moddable/modules/data/crc/crc.js +36 -0
  10. package/moddable/modules/data/crc/manifest.json +8 -0
  11. package/moddable/modules/data/hex/hex.js +28 -0
  12. package/moddable/modules/data/hex/manifest.json +11 -0
  13. package/moddable/modules/data/hex/modHex.c +139 -0
  14. package/moddable/modules/data/logical/logical.js +32 -0
  15. package/moddable/modules/data/logical/modLogical.c +98 -0
  16. package/moddable/modules/data/qrcode/manifest.json +9 -0
  17. package/moddable/modules/data/qrcode/qrcode.c +93 -0
  18. package/moddable/modules/data/qrcode/qrcode.js +23 -0
  19. package/moddable/modules/data/qrcode/qrcodegen.c +1025 -0
  20. package/moddable/modules/data/qrcode/qrcodegen.h +267 -0
  21. package/moddable/modules/data/text/decoder/manifest.json +8 -0
  22. package/moddable/modules/data/text/decoder/textdecoder.c +480 -0
  23. package/moddable/modules/data/text/decoder/textdecoder.js +27 -0
  24. package/moddable/modules/data/text/encoder/manifest.json +8 -0
  25. package/moddable/modules/data/text/encoder/textencoder.c +232 -0
  26. package/moddable/modules/data/text/encoder/textencoder.js +24 -0
  27. package/moddable/modules/data/tinyint/tinyint.c +150 -0
  28. package/moddable/modules/data/tinyint/tinyint.js +53 -0
  29. package/moddable/modules/data/url/manifest.json +17 -0
  30. package/moddable/modules/data/url/url.c +1959 -0
  31. package/moddable/modules/data/url/url.js +210 -0
  32. package/moddable/modules/data/wavreader/manifest.json +8 -0
  33. package/moddable/modules/data/wavreader/wavreader.js +128 -0
  34. package/moddable/modules/data/zlib/deflate.c +161 -0
  35. package/moddable/modules/data/zlib/deflate.js +63 -0
  36. package/moddable/modules/data/zlib/inflate.c +145 -0
  37. package/moddable/modules/data/zlib/inflate.js +66 -0
  38. package/moddable/modules/data/zlib/manifest_deflate.json +9 -0
  39. package/moddable/modules/data/zlib/manifest_inflate.json +9 -0
  40. package/moddable/modules/data/zlib/miniz.c +4924 -0
  41. package/moddable/xs/includes/xs.d.ts +73 -0
  42. package/moddable/xs/includes/xs.h +1533 -0
  43. package/moddable/xs/includes/xsmc.h +206 -0
  44. package/moddable/xs/makefiles/lin/makefile +33 -0
  45. package/moddable/xs/makefiles/lin/xsc.mk +118 -0
  46. package/moddable/xs/makefiles/lin/xsid.mk +90 -0
  47. package/moddable/xs/makefiles/lin/xsl.mk +168 -0
  48. package/moddable/xs/makefiles/lin/xst.mk +201 -0
  49. package/moddable/xs/makefiles/mac/makefile +33 -0
  50. package/moddable/xs/makefiles/mac/xsc.mk +130 -0
  51. package/moddable/xs/makefiles/mac/xsid.mk +102 -0
  52. package/moddable/xs/makefiles/mac/xsl.mk +177 -0
  53. package/moddable/xs/makefiles/mac/xst.mk +203 -0
  54. package/moddable/xs/makefiles/mac/xst_no_asan.txt +52 -0
  55. package/moddable/xs/makefiles/win/build.bat +26 -0
  56. package/moddable/xs/makefiles/win/xsc.mak +142 -0
  57. package/moddable/xs/makefiles/win/xsid.mak +113 -0
  58. package/moddable/xs/makefiles/win/xsl.mak +186 -0
  59. package/moddable/xs/makefiles/win/xst.mak +195 -0
  60. package/moddable/xs/platforms/lin_xs.h +99 -0
  61. package/moddable/xs/platforms/mac_xs.h +97 -0
  62. package/moddable/xs/platforms/wasm_xs.h +79 -0
  63. package/moddable/xs/platforms/win_xs.h +104 -0
  64. package/moddable/xs/platforms/xsHost.h +63 -0
  65. package/moddable/xs/platforms/xsPlatform.h +618 -0
  66. package/moddable/xs/sources/xsAPI.c +2555 -0
  67. package/moddable/xs/sources/xsAll.c +294 -0
  68. package/moddable/xs/sources/xsAll.h +2741 -0
  69. package/moddable/xs/sources/xsArguments.c +222 -0
  70. package/moddable/xs/sources/xsArray.c +2657 -0
  71. package/moddable/xs/sources/xsAtomics.c +844 -0
  72. package/moddable/xs/sources/xsBigInt.c +1859 -0
  73. package/moddable/xs/sources/xsBoolean.c +109 -0
  74. package/moddable/xs/sources/xsCode.c +4493 -0
  75. package/moddable/xs/sources/xsCommon.c +1710 -0
  76. package/moddable/xs/sources/xsCommon.h +1142 -0
  77. package/moddable/xs/sources/xsDataView.c +2890 -0
  78. package/moddable/xs/sources/xsDate.c +1541 -0
  79. package/moddable/xs/sources/xsDebug.c +2710 -0
  80. package/moddable/xs/sources/xsDefaults.c +134 -0
  81. package/moddable/xs/sources/xsError.c +353 -0
  82. package/moddable/xs/sources/xsFunction.c +776 -0
  83. package/moddable/xs/sources/xsGenerator.c +865 -0
  84. package/moddable/xs/sources/xsGlobal.c +839 -0
  85. package/moddable/xs/sources/xsJSON.c +1091 -0
  86. package/moddable/xs/sources/xsLexical.c +1969 -0
  87. package/moddable/xs/sources/xsLockdown.c +933 -0
  88. package/moddable/xs/sources/xsMapSet.c +1649 -0
  89. package/moddable/xs/sources/xsMarshall.c +1020 -0
  90. package/moddable/xs/sources/xsMath.c +624 -0
  91. package/moddable/xs/sources/xsMemory.c +1941 -0
  92. package/moddable/xs/sources/xsModule.c +3101 -0
  93. package/moddable/xs/sources/xsNumber.c +560 -0
  94. package/moddable/xs/sources/xsObject.c +1102 -0
  95. package/moddable/xs/sources/xsPlatforms.c +480 -0
  96. package/moddable/xs/sources/xsProfile.c +577 -0
  97. package/moddable/xs/sources/xsPromise.c +1199 -0
  98. package/moddable/xs/sources/xsProperty.c +636 -0
  99. package/moddable/xs/sources/xsProxy.c +1014 -0
  100. package/moddable/xs/sources/xsRegExp.c +1168 -0
  101. package/moddable/xs/sources/xsRun.c +4889 -0
  102. package/moddable/xs/sources/xsScope.c +1293 -0
  103. package/moddable/xs/sources/xsScript.c +288 -0
  104. package/moddable/xs/sources/xsScript.h +1186 -0
  105. package/moddable/xs/sources/xsSnapshot.c +2161 -0
  106. package/moddable/xs/sources/xsSnapshot.h +51 -0
  107. package/moddable/xs/sources/xsSourceMap.c +218 -0
  108. package/moddable/xs/sources/xsString.c +3332 -0
  109. package/moddable/xs/sources/xsSymbol.c +503 -0
  110. package/moddable/xs/sources/xsSyntaxical.c +4193 -0
  111. package/moddable/xs/sources/xsTree.c +1893 -0
  112. package/moddable/xs/sources/xsType.c +1488 -0
  113. package/moddable/xs/sources/xsdtoa.c +6672 -0
  114. package/moddable/xs/sources/xsmc.c +340 -0
  115. package/moddable/xs/sources/xsre.c +7578 -0
  116. package/package.json +39 -22
  117. package/scripts/get_xsnap_version.sh +14 -0
  118. package/scripts/test-package.sh +21 -0
  119. package/src/avaAssertXS.js +6 -2
  120. package/src/avaHandler.cjs +2 -5
  121. package/src/avaXS.js +7 -8
  122. package/src/build.js +161 -28
  123. package/src/replay.js +0 -3
  124. package/src/xsnap.js +105 -91
  125. package/src/xsrepl.js +2 -3
  126. package/xsnap-native/xsnap/makefiles/lin/makefile +10 -0
  127. package/xsnap-native/xsnap/makefiles/lin/xsnap-worker.mk +156 -0
  128. package/xsnap-native/xsnap/makefiles/lin/xsnap.mk +144 -0
  129. package/xsnap-native/xsnap/makefiles/mac/makefile +10 -0
  130. package/xsnap-native/xsnap/makefiles/mac/xsnap-worker.mk +165 -0
  131. package/xsnap-native/xsnap/makefiles/mac/xsnap.mk +153 -0
  132. package/xsnap-native/xsnap/sources/xsnap-worker.c +1008 -0
  133. package/xsnap-native/xsnap/sources/xsnap.c +717 -0
  134. package/xsnap-native/xsnap/sources/xsnap.h +142 -0
  135. package/xsnap-native/xsnap/sources/xsnapPlatform.c +1501 -0
  136. package/xsnap-native/xsnap/sources/xsnapPlatform.h +105 -0
  137. package/CHANGELOG.md +0 -646
@@ -0,0 +1,1710 @@
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
+ };