PageRenderTime 121ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 2ms

/lib_duktape/src/duktape.c

https://bitbucket.org/xixs/lua
C | 6189 lines | 5220 code | 370 blank | 599 comment | 207 complexity | 871478a7f12eae76e32e32eceff98bb8 MD5 | raw file
Possible License(s): Zlib, BSD-3-Clause, CC0-1.0, GPL-3.0, GPL-2.0, CPL-1.0, MPL-2.0-no-copyleft-exception, LGPL-2.0, LGPL-2.1, LGPL-3.0, 0BSD, Cube
  1. /*
  2. * Single file autogenerated distributable for Duktape 1.2.2.
  3. * Git commit 5f4302c732d21b3b721db3d3473db32e4eb92470 (v1.2.2).
  4. *
  5. * See Duktape AUTHORS.rst and LICENSE.txt for copyright and
  6. * licensing information.
  7. */
  8. /* LICENSE.txt */
  9. /*
  10. * ===============
  11. * Duktape license
  12. * ===============
  13. *
  14. * (http://opensource.org/licenses/MIT)
  15. *
  16. * Copyright (c) 2013-2015 by Duktape authors (see AUTHORS.rst)
  17. *
  18. * Permission is hereby granted, free of charge, to any person obtaining a copy
  19. * of this software and associated documentation files (the "Software"), to deal
  20. * in the Software without restriction, including without limitation the rights
  21. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  22. * copies of the Software, and to permit persons to whom the Software is
  23. * furnished to do so, subject to the following conditions:
  24. *
  25. * The above copyright notice and this permission notice shall be included in
  26. * all copies or substantial portions of the Software.
  27. *
  28. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  29. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  30. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  31. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  32. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  33. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  34. * THE SOFTWARE.
  35. *
  36. */
  37. /* AUTHORS.rst */
  38. /*
  39. * ===============
  40. * Duktape authors
  41. * ===============
  42. *
  43. * Copyright
  44. * =========
  45. *
  46. * Duktape copyrights are held by its authors. Each author has a copyright
  47. * to their contribution, and agrees to irrevocably license the contribution
  48. * under the Duktape ``LICENSE.txt``.
  49. *
  50. * Authors
  51. * =======
  52. *
  53. * Please include an e-mail address, a link to your GitHub profile, or something
  54. * similar to allow your contribution to be identified accurately.
  55. *
  56. * The following people have contributed code and agreed to irrevocably license
  57. * their contributions under the Duktape ``LICENSE.txt`` (in order of appearance):
  58. *
  59. * * Sami Vaarala <sami.vaarala@iki.fi>
  60. * * Niki Dobrev
  61. * * Andreas \u00d6man <andreas@lonelycoder.com>
  62. * * L\u00e1szl\u00f3 Lang\u00f3 <llango.u-szeged@partner.samsung.com>
  63. * * Legimet <legimet.calc@gmail.com>
  64. *
  65. * Other contributions
  66. * ===================
  67. *
  68. * The following people have contributed something other than code (e.g. reported
  69. * bugs, provided ideas, etc; roughly in order of appearance):
  70. *
  71. * * Greg Burns
  72. * * Anthony Rabine
  73. * * Carlos Costa
  74. * * Aur\u00e9lien Bouilland
  75. * * Preet Desai (Pris Matic)
  76. * * judofyr (http://www.reddit.com/user/judofyr)
  77. * * Jason Woofenden
  78. * * Micha\u0142 Przyby\u015b
  79. * * Anthony Howe
  80. * * Conrad Pankoff
  81. * * Jim Schimpf
  82. * * Rajaran Gaunker (https://github.com/zimbabao)
  83. * * Andreas \u00d6man
  84. * * Doug Sanden
  85. * * Josh Engebretson (https://github.com/JoshEngebretson)
  86. * * Remo Eichenberger (https://github.com/remoe)
  87. * * Mamod Mehyar (https://github.com/mamod)
  88. * * David Demelier (https://github.com/hftmarkand)
  89. * * Tim Caswell (https://github.com/creationix)
  90. * * Mitchell Blank Jr (https://github.com/mitchblank)
  91. * * https://github.com/yushli
  92. * * Seo Sanghyeon (https://github.com/sanxiyn)
  93. * * Han ChoongWoo (https://github.com/tunz)
  94. * * Joshua Peek (https://github.com/josh)
  95. * * Bruce E. Pascoe (https://github.com/fatcerberus)
  96. * * https://github.com/Kelledin
  97. *
  98. * If you are accidentally missing from this list, send me an e-mail
  99. * (``sami.vaarala@iki.fi``) and I'll fix the omission.
  100. */
  101. #line 1 "duk_internal.h"
  102. /*
  103. * Top-level include file to be used for all (internal) source files.
  104. *
  105. * Source files should not include individual header files, as they
  106. * have not been designed to be individually included.
  107. */
  108. #ifndef DUK_INTERNAL_H_INCLUDED
  109. #define DUK_INTERNAL_H_INCLUDED
  110. /*
  111. * The 'duktape.h' header provides the public API, but also handles all
  112. * compiler and platform specific feature detection, Duktape feature
  113. * resolution, inclusion of system headers, etc. These have been merged
  114. * because the public API is also dependent on e.g. detecting appropriate
  115. * C types which is quite platform/compiler specific especially for a non-C99
  116. * build. The public API is also dependent on the resolved feature set.
  117. *
  118. * Some actions taken by the merged header (such as including system headers)
  119. * are not appropriate for building a user application. The define
  120. * DUK_COMPILING_DUKTAPE allows the merged header to skip/include some
  121. * sections depending on what is being built.
  122. */
  123. #define DUK_COMPILING_DUKTAPE
  124. #include "duktape.h"
  125. /*
  126. * User declarations, e.g. prototypes for user functions used by Duktape
  127. * macros. Concretely, if DUK_OPT_PANIC_HANDLER is used and the macro
  128. * value calls a user function, it needs to be declared for Duktape
  129. * compilation to avoid warnings.
  130. */
  131. DUK_USE_USER_DECLARE()
  132. /*
  133. * Duktape includes (other than duk_features.h)
  134. *
  135. * The header files expect to be included in an order which satisfies header
  136. * dependencies correctly (the headers themselves don't include any other
  137. * includes). Forward declarations are used to break circular struct/typedef
  138. * dependencies.
  139. */
  140. #line 1 "duk_replacements.h"
  141. #ifndef DUK_REPLACEMENTS_H_INCLUDED
  142. #define DUK_REPLACEMENTS_H_INCLUDED
  143. #ifdef DUK_USE_REPL_FPCLASSIFY
  144. DUK_INTERNAL_DECL int duk_repl_fpclassify(double x);
  145. #endif
  146. #ifdef DUK_USE_REPL_SIGNBIT
  147. DUK_INTERNAL_DECL int duk_repl_signbit(double x);
  148. #endif
  149. #ifdef DUK_USE_REPL_ISFINITE
  150. DUK_INTERNAL_DECL int duk_repl_isfinite(double x);
  151. #endif
  152. #ifdef DUK_USE_REPL_ISNAN
  153. DUK_INTERNAL_DECL int duk_repl_isnan(double x);
  154. #endif
  155. #ifdef DUK_USE_REPL_ISINF
  156. DUK_INTERNAL_DECL int duk_repl_isinf(double x);
  157. #endif
  158. #endif /* DUK_REPLACEMENTS_H_INCLUDED */
  159. #line 1 "duk_jmpbuf.h"
  160. /*
  161. * Wrapper for jmp_buf.
  162. *
  163. * This is used because jmp_buf is an array type for backward compatibility.
  164. * Wrapping jmp_buf in a struct makes pointer references, sizeof, etc,
  165. * behave more intuitively.
  166. *
  167. * http://en.wikipedia.org/wiki/Setjmp.h#Member_types
  168. */
  169. #ifndef DUK_JMPBUF_H_INCLUDED
  170. #define DUK_JMPBUF_H_INCLUDED
  171. struct duk_jmpbuf {
  172. #if defined(DUK_USE_SETJMP) || defined(DUK_USE_UNDERSCORE_SETJMP)
  173. jmp_buf jb;
  174. #elif defined(DUK_USE_SIGSETJMP)
  175. sigjmp_buf jb;
  176. #else
  177. #error internal error, no long control transfer provider
  178. #endif
  179. };
  180. #endif /* DUK_JMPBUF_H_INCLUDED */
  181. #line 1 "duk_forwdecl.h"
  182. /*
  183. * Forward declarations for all Duktape structures.
  184. */
  185. #ifndef DUK_FORWDECL_H_INCLUDED
  186. #define DUK_FORWDECL_H_INCLUDED
  187. /*
  188. * Forward declarations
  189. */
  190. struct duk_jmpbuf;
  191. /* duk_tval intentionally skipped */
  192. struct duk_heaphdr;
  193. struct duk_heaphdr_string;
  194. struct duk_hstring;
  195. struct duk_hstring_external;
  196. struct duk_hobject;
  197. struct duk_hcompiledfunction;
  198. struct duk_hnativefunction;
  199. struct duk_hthread;
  200. struct duk_hbuffer;
  201. struct duk_hbuffer_fixed;
  202. struct duk_hbuffer_dynamic;
  203. struct duk_propaccessor;
  204. union duk_propvalue;
  205. struct duk_propdesc;
  206. struct duk_heap;
  207. struct duk_breakpoint;
  208. struct duk_activation;
  209. struct duk_catcher;
  210. struct duk_strcache;
  211. struct duk_ljstate;
  212. struct duk_strtab_entry;
  213. #ifdef DUK_USE_DEBUG
  214. struct duk_fixedbuffer;
  215. #endif
  216. struct duk_bitdecoder_ctx;
  217. struct duk_bitencoder_ctx;
  218. struct duk_token;
  219. struct duk_re_token;
  220. struct duk_lexer_point;
  221. struct duk_lexer_ctx;
  222. struct duk_compiler_instr;
  223. struct duk_compiler_func;
  224. struct duk_compiler_ctx;
  225. struct duk_re_matcher_ctx;
  226. struct duk_re_compiler_ctx;
  227. typedef struct duk_jmpbuf duk_jmpbuf;
  228. /* duk_tval intentionally skipped */
  229. typedef struct duk_heaphdr duk_heaphdr;
  230. typedef struct duk_heaphdr_string duk_heaphdr_string;
  231. typedef struct duk_hstring duk_hstring;
  232. typedef struct duk_hstring_external duk_hstring_external;
  233. typedef struct duk_hobject duk_hobject;
  234. typedef struct duk_hcompiledfunction duk_hcompiledfunction;
  235. typedef struct duk_hnativefunction duk_hnativefunction;
  236. typedef struct duk_hthread duk_hthread;
  237. typedef struct duk_hbuffer duk_hbuffer;
  238. typedef struct duk_hbuffer_fixed duk_hbuffer_fixed;
  239. typedef struct duk_hbuffer_dynamic duk_hbuffer_dynamic;
  240. typedef struct duk_propaccessor duk_propaccessor;
  241. typedef union duk_propvalue duk_propvalue;
  242. typedef struct duk_propdesc duk_propdesc;
  243. typedef struct duk_heap duk_heap;
  244. typedef struct duk_breakpoint duk_breakpoint;
  245. typedef struct duk_activation duk_activation;
  246. typedef struct duk_catcher duk_catcher;
  247. typedef struct duk_strcache duk_strcache;
  248. typedef struct duk_ljstate duk_ljstate;
  249. typedef struct duk_strtab_entry duk_strtab_entry;
  250. #ifdef DUK_USE_DEBUG
  251. typedef struct duk_fixedbuffer duk_fixedbuffer;
  252. #endif
  253. typedef struct duk_bitdecoder_ctx duk_bitdecoder_ctx;
  254. typedef struct duk_bitencoder_ctx duk_bitencoder_ctx;
  255. typedef struct duk_token duk_token;
  256. typedef struct duk_re_token duk_re_token;
  257. typedef struct duk_lexer_point duk_lexer_point;
  258. typedef struct duk_lexer_ctx duk_lexer_ctx;
  259. typedef struct duk_compiler_instr duk_compiler_instr;
  260. typedef struct duk_compiler_func duk_compiler_func;
  261. typedef struct duk_compiler_ctx duk_compiler_ctx;
  262. typedef struct duk_re_matcher_ctx duk_re_matcher_ctx;
  263. typedef struct duk_re_compiler_ctx duk_re_compiler_ctx;
  264. #endif /* DUK_FORWDECL_H_INCLUDED */
  265. #line 1 "duk_builtins.h"
  266. /*
  267. * Automatically generated by genbuiltins.py, do not edit!
  268. */
  269. #ifndef DUK_BUILTINS_H_INCLUDED
  270. #define DUK_BUILTINS_H_INCLUDED
  271. #if defined(DUK_USE_DOUBLE_LE)
  272. #if !defined(DUK_SINGLE_FILE)
  273. DUK_INTERNAL_DECL const duk_uint8_t duk_strings_data[1943];
  274. #endif /* !DUK_SINGLE_FILE */
  275. #define DUK_STRDATA_DATA_LENGTH 1943
  276. #define DUK_STRDATA_MAX_STRLEN 24
  277. #define DUK_STRIDX_UC_LOGGER 0 /* 'Logger' */
  278. #define DUK_STRIDX_UC_THREAD 1 /* 'Thread' */
  279. #define DUK_STRIDX_UC_POINTER 2 /* 'Pointer' */
  280. #define DUK_STRIDX_UC_BUFFER 3 /* 'Buffer' */
  281. #define DUK_STRIDX_DEC_ENV 4 /* 'DecEnv' */
  282. #define DUK_STRIDX_OBJ_ENV 5 /* 'ObjEnv' */
  283. #define DUK_STRIDX_EMPTY_STRING 6 /* '' */
  284. #define DUK_STRIDX_GLOBAL 7 /* 'global' */
  285. #define DUK_STRIDX_UC_ARGUMENTS 8 /* 'Arguments' */
  286. #define DUK_STRIDX_JSON 9 /* 'JSON' */
  287. #define DUK_STRIDX_MATH 10 /* 'Math' */
  288. #define DUK_STRIDX_UC_ERROR 11 /* 'Error' */
  289. #define DUK_STRIDX_REG_EXP 12 /* 'RegExp' */
  290. #define DUK_STRIDX_DATE 13 /* 'Date' */
  291. #define DUK_STRIDX_UC_NUMBER 14 /* 'Number' */
  292. #define DUK_STRIDX_UC_BOOLEAN 15 /* 'Boolean' */
  293. #define DUK_STRIDX_UC_STRING 16 /* 'String' */
  294. #define DUK_STRIDX_ARRAY 17 /* 'Array' */
  295. #define DUK_STRIDX_UC_FUNCTION 18 /* 'Function' */
  296. #define DUK_STRIDX_UC_OBJECT 19 /* 'Object' */
  297. #define DUK_STRIDX_UC_NULL 20 /* 'Null' */
  298. #define DUK_STRIDX_UC_UNDEFINED 21 /* 'Undefined' */
  299. #define DUK_STRIDX_JSON_EXT_FUNCTION2 22 /* '{_func:true}' */
  300. #define DUK_STRIDX_JSON_EXT_FUNCTION1 23 /* '{"_func":true}' */
  301. #define DUK_STRIDX_JSON_EXT_NEGINF 24 /* '{"_ninf":true}' */
  302. #define DUK_STRIDX_JSON_EXT_POSINF 25 /* '{"_inf":true}' */
  303. #define DUK_STRIDX_JSON_EXT_NAN 26 /* '{"_nan":true}' */
  304. #define DUK_STRIDX_JSON_EXT_UNDEFINED 27 /* '{"_undef":true}' */
  305. #define DUK_STRIDX_TO_LOG_STRING 28 /* 'toLogString' */
  306. #define DUK_STRIDX_CLOG 29 /* 'clog' */
  307. #define DUK_STRIDX_LC_L 30 /* 'l' */
  308. #define DUK_STRIDX_LC_N 31 /* 'n' */
  309. #define DUK_STRIDX_LC_FATAL 32 /* 'fatal' */
  310. #define DUK_STRIDX_LC_ERROR 33 /* 'error' */
  311. #define DUK_STRIDX_LC_WARN 34 /* 'warn' */
  312. #define DUK_STRIDX_LC_DEBUG 35 /* 'debug' */
  313. #define DUK_STRIDX_LC_TRACE 36 /* 'trace' */
  314. #define DUK_STRIDX_RAW 37 /* 'raw' */
  315. #define DUK_STRIDX_FMT 38 /* 'fmt' */
  316. #define DUK_STRIDX_CURRENT 39 /* 'current' */
  317. #define DUK_STRIDX_RESUME 40 /* 'resume' */
  318. #define DUK_STRIDX_COMPACT 41 /* 'compact' */
  319. #define DUK_STRIDX_JC 42 /* 'jc' */
  320. #define DUK_STRIDX_JX 43 /* 'jx' */
  321. #define DUK_STRIDX_BASE64 44 /* 'base64' */
  322. #define DUK_STRIDX_HEX 45 /* 'hex' */
  323. #define DUK_STRIDX_DEC 46 /* 'dec' */
  324. #define DUK_STRIDX_ENC 47 /* 'enc' */
  325. #define DUK_STRIDX_FIN 48 /* 'fin' */
  326. #define DUK_STRIDX_GC 49 /* 'gc' */
  327. #define DUK_STRIDX_ACT 50 /* 'act' */
  328. #define DUK_STRIDX_LC_INFO 51 /* 'info' */
  329. #define DUK_STRIDX_VERSION 52 /* 'version' */
  330. #define DUK_STRIDX_ENV 53 /* 'env' */
  331. #define DUK_STRIDX_MOD_LOADED 54 /* 'modLoaded' */
  332. #define DUK_STRIDX_MOD_SEARCH 55 /* 'modSearch' */
  333. #define DUK_STRIDX_ERR_THROW 56 /* 'errThrow' */
  334. #define DUK_STRIDX_ERR_CREATE 57 /* 'errCreate' */
  335. #define DUK_STRIDX_COMPILE 58 /* 'compile' */
  336. #define DUK_STRIDX_INT_REGBASE 59 /* '\x00Regbase' */
  337. #define DUK_STRIDX_INT_THREAD 60 /* '\x00Thread' */
  338. #define DUK_STRIDX_INT_HANDLER 61 /* '\x00Handler' */
  339. #define DUK_STRIDX_INT_FINALIZER 62 /* '\x00Finalizer' */
  340. #define DUK_STRIDX_INT_CALLEE 63 /* '\x00Callee' */
  341. #define DUK_STRIDX_INT_MAP 64 /* '\x00Map' */
  342. #define DUK_STRIDX_INT_ARGS 65 /* '\x00Args' */
  343. #define DUK_STRIDX_INT_THIS 66 /* '\x00This' */
  344. #define DUK_STRIDX_INT_PC2LINE 67 /* '\x00Pc2line' */
  345. #define DUK_STRIDX_INT_SOURCE 68 /* '\x00Source' */
  346. #define DUK_STRIDX_INT_VARENV 69 /* '\x00Varenv' */
  347. #define DUK_STRIDX_INT_LEXENV 70 /* '\x00Lexenv' */
  348. #define DUK_STRIDX_INT_VARMAP 71 /* '\x00Varmap' */
  349. #define DUK_STRIDX_INT_FORMALS 72 /* '\x00Formals' */
  350. #define DUK_STRIDX_INT_BYTECODE 73 /* '\x00Bytecode' */
  351. #define DUK_STRIDX_INT_NEXT 74 /* '\x00Next' */
  352. #define DUK_STRIDX_INT_TARGET 75 /* '\x00Target' */
  353. #define DUK_STRIDX_INT_VALUE 76 /* '\x00Value' */
  354. #define DUK_STRIDX_LC_POINTER 77 /* 'pointer' */
  355. #define DUK_STRIDX_LC_BUFFER 78 /* 'buffer' */
  356. #define DUK_STRIDX_INT_TRACEDATA 79 /* '\x00Tracedata' */
  357. #define DUK_STRIDX_LINE_NUMBER 80 /* 'lineNumber' */
  358. #define DUK_STRIDX_FILE_NAME 81 /* 'fileName' */
  359. #define DUK_STRIDX_PC 82 /* 'pc' */
  360. #define DUK_STRIDX_STACK 83 /* 'stack' */
  361. #define DUK_STRIDX_THROW_TYPE_ERROR 84 /* 'ThrowTypeError' */
  362. #define DUK_STRIDX_DUKTAPE 85 /* 'Duktape' */
  363. #define DUK_STRIDX_ID 86 /* 'id' */
  364. #define DUK_STRIDX_REQUIRE 87 /* 'require' */
  365. #define DUK_STRIDX___PROTO__ 88 /* '__proto__' */
  366. #define DUK_STRIDX_SET_PROTOTYPE_OF 89 /* 'setPrototypeOf' */
  367. #define DUK_STRIDX_OWN_KEYS 90 /* 'ownKeys' */
  368. #define DUK_STRIDX_ENUMERATE 91 /* 'enumerate' */
  369. #define DUK_STRIDX_DELETE_PROPERTY 92 /* 'deleteProperty' */
  370. #define DUK_STRIDX_HAS 93 /* 'has' */
  371. #define DUK_STRIDX_PROXY 94 /* 'Proxy' */
  372. #define DUK_STRIDX_CALLEE 95 /* 'callee' */
  373. #define DUK_STRIDX_INVALID_DATE 96 /* 'Invalid Date' */
  374. #define DUK_STRIDX_BRACKETED_ELLIPSIS 97 /* '[...]' */
  375. #define DUK_STRIDX_NEWLINE_TAB 98 /* '\n\t' */
  376. #define DUK_STRIDX_SPACE 99 /* ' ' */
  377. #define DUK_STRIDX_COMMA 100 /* ',' */
  378. #define DUK_STRIDX_MINUS_ZERO 101 /* '-0' */
  379. #define DUK_STRIDX_PLUS_ZERO 102 /* '+0' */
  380. #define DUK_STRIDX_ZERO 103 /* '0' */
  381. #define DUK_STRIDX_MINUS_INFINITY 104 /* '-Infinity' */
  382. #define DUK_STRIDX_PLUS_INFINITY 105 /* '+Infinity' */
  383. #define DUK_STRIDX_INFINITY 106 /* 'Infinity' */
  384. #define DUK_STRIDX_LC_OBJECT 107 /* 'object' */
  385. #define DUK_STRIDX_LC_STRING 108 /* 'string' */
  386. #define DUK_STRIDX_LC_NUMBER 109 /* 'number' */
  387. #define DUK_STRIDX_LC_BOOLEAN 110 /* 'boolean' */
  388. #define DUK_STRIDX_LC_UNDEFINED 111 /* 'undefined' */
  389. #define DUK_STRIDX_STRINGIFY 112 /* 'stringify' */
  390. #define DUK_STRIDX_TAN 113 /* 'tan' */
  391. #define DUK_STRIDX_SQRT 114 /* 'sqrt' */
  392. #define DUK_STRIDX_SIN 115 /* 'sin' */
  393. #define DUK_STRIDX_ROUND 116 /* 'round' */
  394. #define DUK_STRIDX_RANDOM 117 /* 'random' */
  395. #define DUK_STRIDX_POW 118 /* 'pow' */
  396. #define DUK_STRIDX_MIN 119 /* 'min' */
  397. #define DUK_STRIDX_MAX 120 /* 'max' */
  398. #define DUK_STRIDX_LOG 121 /* 'log' */
  399. #define DUK_STRIDX_FLOOR 122 /* 'floor' */
  400. #define DUK_STRIDX_EXP 123 /* 'exp' */
  401. #define DUK_STRIDX_COS 124 /* 'cos' */
  402. #define DUK_STRIDX_CEIL 125 /* 'ceil' */
  403. #define DUK_STRIDX_ATAN2 126 /* 'atan2' */
  404. #define DUK_STRIDX_ATAN 127 /* 'atan' */
  405. #define DUK_STRIDX_ASIN 128 /* 'asin' */
  406. #define DUK_STRIDX_ACOS 129 /* 'acos' */
  407. #define DUK_STRIDX_ABS 130 /* 'abs' */
  408. #define DUK_STRIDX_SQRT2 131 /* 'SQRT2' */
  409. #define DUK_STRIDX_SQRT1_2 132 /* 'SQRT1_2' */
  410. #define DUK_STRIDX_PI 133 /* 'PI' */
  411. #define DUK_STRIDX_LOG10E 134 /* 'LOG10E' */
  412. #define DUK_STRIDX_LOG2E 135 /* 'LOG2E' */
  413. #define DUK_STRIDX_LN2 136 /* 'LN2' */
  414. #define DUK_STRIDX_LN10 137 /* 'LN10' */
  415. #define DUK_STRIDX_E 138 /* 'E' */
  416. #define DUK_STRIDX_MESSAGE 139 /* 'message' */
  417. #define DUK_STRIDX_NAME 140 /* 'name' */
  418. #define DUK_STRIDX_INPUT 141 /* 'input' */
  419. #define DUK_STRIDX_INDEX 142 /* 'index' */
  420. #define DUK_STRIDX_ESCAPED_EMPTY_REGEXP 143 /* '(?:)' */
  421. #define DUK_STRIDX_LAST_INDEX 144 /* 'lastIndex' */
  422. #define DUK_STRIDX_MULTILINE 145 /* 'multiline' */
  423. #define DUK_STRIDX_IGNORE_CASE 146 /* 'ignoreCase' */
  424. #define DUK_STRIDX_SOURCE 147 /* 'source' */
  425. #define DUK_STRIDX_TEST 148 /* 'test' */
  426. #define DUK_STRIDX_EXEC 149 /* 'exec' */
  427. #define DUK_STRIDX_TO_GMT_STRING 150 /* 'toGMTString' */
  428. #define DUK_STRIDX_SET_YEAR 151 /* 'setYear' */
  429. #define DUK_STRIDX_GET_YEAR 152 /* 'getYear' */
  430. #define DUK_STRIDX_TO_JSON 153 /* 'toJSON' */
  431. #define DUK_STRIDX_TO_ISO_STRING 154 /* 'toISOString' */
  432. #define DUK_STRIDX_TO_UTC_STRING 155 /* 'toUTCString' */
  433. #define DUK_STRIDX_SET_UTC_FULL_YEAR 156 /* 'setUTCFullYear' */
  434. #define DUK_STRIDX_SET_FULL_YEAR 157 /* 'setFullYear' */
  435. #define DUK_STRIDX_SET_UTC_MONTH 158 /* 'setUTCMonth' */
  436. #define DUK_STRIDX_SET_MONTH 159 /* 'setMonth' */
  437. #define DUK_STRIDX_SET_UTC_DATE 160 /* 'setUTCDate' */
  438. #define DUK_STRIDX_SET_DATE 161 /* 'setDate' */
  439. #define DUK_STRIDX_SET_UTC_HOURS 162 /* 'setUTCHours' */
  440. #define DUK_STRIDX_SET_HOURS 163 /* 'setHours' */
  441. #define DUK_STRIDX_SET_UTC_MINUTES 164 /* 'setUTCMinutes' */
  442. #define DUK_STRIDX_SET_MINUTES 165 /* 'setMinutes' */
  443. #define DUK_STRIDX_SET_UTC_SECONDS 166 /* 'setUTCSeconds' */
  444. #define DUK_STRIDX_SET_SECONDS 167 /* 'setSeconds' */
  445. #define DUK_STRIDX_SET_UTC_MILLISECONDS 168 /* 'setUTCMilliseconds' */
  446. #define DUK_STRIDX_SET_MILLISECONDS 169 /* 'setMilliseconds' */
  447. #define DUK_STRIDX_SET_TIME 170 /* 'setTime' */
  448. #define DUK_STRIDX_GET_TIMEZONE_OFFSET 171 /* 'getTimezoneOffset' */
  449. #define DUK_STRIDX_GET_UTC_MILLISECONDS 172 /* 'getUTCMilliseconds' */
  450. #define DUK_STRIDX_GET_MILLISECONDS 173 /* 'getMilliseconds' */
  451. #define DUK_STRIDX_GET_UTC_SECONDS 174 /* 'getUTCSeconds' */
  452. #define DUK_STRIDX_GET_SECONDS 175 /* 'getSeconds' */
  453. #define DUK_STRIDX_GET_UTC_MINUTES 176 /* 'getUTCMinutes' */
  454. #define DUK_STRIDX_GET_MINUTES 177 /* 'getMinutes' */
  455. #define DUK_STRIDX_GET_UTC_HOURS 178 /* 'getUTCHours' */
  456. #define DUK_STRIDX_GET_HOURS 179 /* 'getHours' */
  457. #define DUK_STRIDX_GET_UTC_DAY 180 /* 'getUTCDay' */
  458. #define DUK_STRIDX_GET_DAY 181 /* 'getDay' */
  459. #define DUK_STRIDX_GET_UTC_DATE 182 /* 'getUTCDate' */
  460. #define DUK_STRIDX_GET_DATE 183 /* 'getDate' */
  461. #define DUK_STRIDX_GET_UTC_MONTH 184 /* 'getUTCMonth' */
  462. #define DUK_STRIDX_GET_MONTH 185 /* 'getMonth' */
  463. #define DUK_STRIDX_GET_UTC_FULL_YEAR 186 /* 'getUTCFullYear' */
  464. #define DUK_STRIDX_GET_FULL_YEAR 187 /* 'getFullYear' */
  465. #define DUK_STRIDX_GET_TIME 188 /* 'getTime' */
  466. #define DUK_STRIDX_TO_LOCALE_TIME_STRING 189 /* 'toLocaleTimeString' */
  467. #define DUK_STRIDX_TO_LOCALE_DATE_STRING 190 /* 'toLocaleDateString' */
  468. #define DUK_STRIDX_TO_TIME_STRING 191 /* 'toTimeString' */
  469. #define DUK_STRIDX_TO_DATE_STRING 192 /* 'toDateString' */
  470. #define DUK_STRIDX_NOW 193 /* 'now' */
  471. #define DUK_STRIDX_UTC 194 /* 'UTC' */
  472. #define DUK_STRIDX_PARSE 195 /* 'parse' */
  473. #define DUK_STRIDX_TO_PRECISION 196 /* 'toPrecision' */
  474. #define DUK_STRIDX_TO_EXPONENTIAL 197 /* 'toExponential' */
  475. #define DUK_STRIDX_TO_FIXED 198 /* 'toFixed' */
  476. #define DUK_STRIDX_POSITIVE_INFINITY 199 /* 'POSITIVE_INFINITY' */
  477. #define DUK_STRIDX_NEGATIVE_INFINITY 200 /* 'NEGATIVE_INFINITY' */
  478. #define DUK_STRIDX_NAN 201 /* 'NaN' */
  479. #define DUK_STRIDX_MIN_VALUE 202 /* 'MIN_VALUE' */
  480. #define DUK_STRIDX_MAX_VALUE 203 /* 'MAX_VALUE' */
  481. #define DUK_STRIDX_SUBSTR 204 /* 'substr' */
  482. #define DUK_STRIDX_TRIM 205 /* 'trim' */
  483. #define DUK_STRIDX_TO_LOCALE_UPPER_CASE 206 /* 'toLocaleUpperCase' */
  484. #define DUK_STRIDX_TO_UPPER_CASE 207 /* 'toUpperCase' */
  485. #define DUK_STRIDX_TO_LOCALE_LOWER_CASE 208 /* 'toLocaleLowerCase' */
  486. #define DUK_STRIDX_TO_LOWER_CASE 209 /* 'toLowerCase' */
  487. #define DUK_STRIDX_SUBSTRING 210 /* 'substring' */
  488. #define DUK_STRIDX_SPLIT 211 /* 'split' */
  489. #define DUK_STRIDX_SEARCH 212 /* 'search' */
  490. #define DUK_STRIDX_REPLACE 213 /* 'replace' */
  491. #define DUK_STRIDX_MATCH 214 /* 'match' */
  492. #define DUK_STRIDX_LOCALE_COMPARE 215 /* 'localeCompare' */
  493. #define DUK_STRIDX_CHAR_CODE_AT 216 /* 'charCodeAt' */
  494. #define DUK_STRIDX_CHAR_AT 217 /* 'charAt' */
  495. #define DUK_STRIDX_FROM_CHAR_CODE 218 /* 'fromCharCode' */
  496. #define DUK_STRIDX_REDUCE_RIGHT 219 /* 'reduceRight' */
  497. #define DUK_STRIDX_REDUCE 220 /* 'reduce' */
  498. #define DUK_STRIDX_FILTER 221 /* 'filter' */
  499. #define DUK_STRIDX_MAP 222 /* 'map' */
  500. #define DUK_STRIDX_FOR_EACH 223 /* 'forEach' */
  501. #define DUK_STRIDX_SOME 224 /* 'some' */
  502. #define DUK_STRIDX_EVERY 225 /* 'every' */
  503. #define DUK_STRIDX_LAST_INDEX_OF 226 /* 'lastIndexOf' */
  504. #define DUK_STRIDX_INDEX_OF 227 /* 'indexOf' */
  505. #define DUK_STRIDX_UNSHIFT 228 /* 'unshift' */
  506. #define DUK_STRIDX_SPLICE 229 /* 'splice' */
  507. #define DUK_STRIDX_SORT 230 /* 'sort' */
  508. #define DUK_STRIDX_SLICE 231 /* 'slice' */
  509. #define DUK_STRIDX_SHIFT 232 /* 'shift' */
  510. #define DUK_STRIDX_REVERSE 233 /* 'reverse' */
  511. #define DUK_STRIDX_PUSH 234 /* 'push' */
  512. #define DUK_STRIDX_POP 235 /* 'pop' */
  513. #define DUK_STRIDX_JOIN 236 /* 'join' */
  514. #define DUK_STRIDX_CONCAT 237 /* 'concat' */
  515. #define DUK_STRIDX_IS_ARRAY 238 /* 'isArray' */
  516. #define DUK_STRIDX_LC_ARGUMENTS 239 /* 'arguments' */
  517. #define DUK_STRIDX_CALLER 240 /* 'caller' */
  518. #define DUK_STRIDX_BIND 241 /* 'bind' */
  519. #define DUK_STRIDX_CALL 242 /* 'call' */
  520. #define DUK_STRIDX_APPLY 243 /* 'apply' */
  521. #define DUK_STRIDX_PROPERTY_IS_ENUMERABLE 244 /* 'propertyIsEnumerable' */
  522. #define DUK_STRIDX_IS_PROTOTYPE_OF 245 /* 'isPrototypeOf' */
  523. #define DUK_STRIDX_HAS_OWN_PROPERTY 246 /* 'hasOwnProperty' */
  524. #define DUK_STRIDX_VALUE_OF 247 /* 'valueOf' */
  525. #define DUK_STRIDX_TO_LOCALE_STRING 248 /* 'toLocaleString' */
  526. #define DUK_STRIDX_TO_STRING 249 /* 'toString' */
  527. #define DUK_STRIDX_CONSTRUCTOR 250 /* 'constructor' */
  528. #define DUK_STRIDX_SET 251 /* 'set' */
  529. #define DUK_STRIDX_GET 252 /* 'get' */
  530. #define DUK_STRIDX_ENUMERABLE 253 /* 'enumerable' */
  531. #define DUK_STRIDX_CONFIGURABLE 254 /* 'configurable' */
  532. #define DUK_STRIDX_WRITABLE 255 /* 'writable' */
  533. #define DUK_STRIDX_VALUE 256 /* 'value' */
  534. #define DUK_STRIDX_KEYS 257 /* 'keys' */
  535. #define DUK_STRIDX_IS_EXTENSIBLE 258 /* 'isExtensible' */
  536. #define DUK_STRIDX_IS_FROZEN 259 /* 'isFrozen' */
  537. #define DUK_STRIDX_IS_SEALED 260 /* 'isSealed' */
  538. #define DUK_STRIDX_PREVENT_EXTENSIONS 261 /* 'preventExtensions' */
  539. #define DUK_STRIDX_FREEZE 262 /* 'freeze' */
  540. #define DUK_STRIDX_SEAL 263 /* 'seal' */
  541. #define DUK_STRIDX_DEFINE_PROPERTIES 264 /* 'defineProperties' */
  542. #define DUK_STRIDX_DEFINE_PROPERTY 265 /* 'defineProperty' */
  543. #define DUK_STRIDX_CREATE 266 /* 'create' */
  544. #define DUK_STRIDX_GET_OWN_PROPERTY_NAMES 267 /* 'getOwnPropertyNames' */
  545. #define DUK_STRIDX_GET_OWN_PROPERTY_DESCRIPTOR 268 /* 'getOwnPropertyDescriptor' */
  546. #define DUK_STRIDX_GET_PROTOTYPE_OF 269 /* 'getPrototypeOf' */
  547. #define DUK_STRIDX_PROTOTYPE 270 /* 'prototype' */
  548. #define DUK_STRIDX_LENGTH 271 /* 'length' */
  549. #define DUK_STRIDX_ALERT 272 /* 'alert' */
  550. #define DUK_STRIDX_PRINT 273 /* 'print' */
  551. #define DUK_STRIDX_UNESCAPE 274 /* 'unescape' */
  552. #define DUK_STRIDX_ESCAPE 275 /* 'escape' */
  553. #define DUK_STRIDX_ENCODE_URI_COMPONENT 276 /* 'encodeURIComponent' */
  554. #define DUK_STRIDX_ENCODE_URI 277 /* 'encodeURI' */
  555. #define DUK_STRIDX_DECODE_URI_COMPONENT 278 /* 'decodeURIComponent' */
  556. #define DUK_STRIDX_DECODE_URI 279 /* 'decodeURI' */
  557. #define DUK_STRIDX_IS_FINITE 280 /* 'isFinite' */
  558. #define DUK_STRIDX_IS_NAN 281 /* 'isNaN' */
  559. #define DUK_STRIDX_PARSE_FLOAT 282 /* 'parseFloat' */
  560. #define DUK_STRIDX_PARSE_INT 283 /* 'parseInt' */
  561. #define DUK_STRIDX_EVAL 284 /* 'eval' */
  562. #define DUK_STRIDX_URI_ERROR 285 /* 'URIError' */
  563. #define DUK_STRIDX_TYPE_ERROR 286 /* 'TypeError' */
  564. #define DUK_STRIDX_SYNTAX_ERROR 287 /* 'SyntaxError' */
  565. #define DUK_STRIDX_REFERENCE_ERROR 288 /* 'ReferenceError' */
  566. #define DUK_STRIDX_RANGE_ERROR 289 /* 'RangeError' */
  567. #define DUK_STRIDX_EVAL_ERROR 290 /* 'EvalError' */
  568. #define DUK_STRIDX_BREAK 291 /* 'break' */
  569. #define DUK_STRIDX_CASE 292 /* 'case' */
  570. #define DUK_STRIDX_CATCH 293 /* 'catch' */
  571. #define DUK_STRIDX_CONTINUE 294 /* 'continue' */
  572. #define DUK_STRIDX_DEBUGGER 295 /* 'debugger' */
  573. #define DUK_STRIDX_DEFAULT 296 /* 'default' */
  574. #define DUK_STRIDX_DELETE 297 /* 'delete' */
  575. #define DUK_STRIDX_DO 298 /* 'do' */
  576. #define DUK_STRIDX_ELSE 299 /* 'else' */
  577. #define DUK_STRIDX_FINALLY 300 /* 'finally' */
  578. #define DUK_STRIDX_FOR 301 /* 'for' */
  579. #define DUK_STRIDX_LC_FUNCTION 302 /* 'function' */
  580. #define DUK_STRIDX_IF 303 /* 'if' */
  581. #define DUK_STRIDX_IN 304 /* 'in' */
  582. #define DUK_STRIDX_INSTANCEOF 305 /* 'instanceof' */
  583. #define DUK_STRIDX_NEW 306 /* 'new' */
  584. #define DUK_STRIDX_RETURN 307 /* 'return' */
  585. #define DUK_STRIDX_SWITCH 308 /* 'switch' */
  586. #define DUK_STRIDX_THIS 309 /* 'this' */
  587. #define DUK_STRIDX_THROW 310 /* 'throw' */
  588. #define DUK_STRIDX_TRY 311 /* 'try' */
  589. #define DUK_STRIDX_TYPEOF 312 /* 'typeof' */
  590. #define DUK_STRIDX_VAR 313 /* 'var' */
  591. #define DUK_STRIDX_VOID 314 /* 'void' */
  592. #define DUK_STRIDX_WHILE 315 /* 'while' */
  593. #define DUK_STRIDX_WITH 316 /* 'with' */
  594. #define DUK_STRIDX_CLASS 317 /* 'class' */
  595. #define DUK_STRIDX_CONST 318 /* 'const' */
  596. #define DUK_STRIDX_ENUM 319 /* 'enum' */
  597. #define DUK_STRIDX_EXPORT 320 /* 'export' */
  598. #define DUK_STRIDX_EXTENDS 321 /* 'extends' */
  599. #define DUK_STRIDX_IMPORT 322 /* 'import' */
  600. #define DUK_STRIDX_SUPER 323 /* 'super' */
  601. #define DUK_STRIDX_LC_NULL 324 /* 'null' */
  602. #define DUK_STRIDX_TRUE 325 /* 'true' */
  603. #define DUK_STRIDX_FALSE 326 /* 'false' */
  604. #define DUK_STRIDX_IMPLEMENTS 327 /* 'implements' */
  605. #define DUK_STRIDX_INTERFACE 328 /* 'interface' */
  606. #define DUK_STRIDX_LET 329 /* 'let' */
  607. #define DUK_STRIDX_PACKAGE 330 /* 'package' */
  608. #define DUK_STRIDX_PRIVATE 331 /* 'private' */
  609. #define DUK_STRIDX_PROTECTED 332 /* 'protected' */
  610. #define DUK_STRIDX_PUBLIC 333 /* 'public' */
  611. #define DUK_STRIDX_STATIC 334 /* 'static' */
  612. #define DUK_STRIDX_YIELD 335 /* 'yield' */
  613. #define DUK_HEAP_STRING_UC_LOGGER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_LOGGER)
  614. #define DUK_HTHREAD_STRING_UC_LOGGER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_LOGGER)
  615. #define DUK_HEAP_STRING_UC_THREAD(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_THREAD)
  616. #define DUK_HTHREAD_STRING_UC_THREAD(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_THREAD)
  617. #define DUK_HEAP_STRING_UC_POINTER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_POINTER)
  618. #define DUK_HTHREAD_STRING_UC_POINTER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_POINTER)
  619. #define DUK_HEAP_STRING_UC_BUFFER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_BUFFER)
  620. #define DUK_HTHREAD_STRING_UC_BUFFER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_BUFFER)
  621. #define DUK_HEAP_STRING_DEC_ENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEC_ENV)
  622. #define DUK_HTHREAD_STRING_DEC_ENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEC_ENV)
  623. #define DUK_HEAP_STRING_OBJ_ENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_OBJ_ENV)
  624. #define DUK_HTHREAD_STRING_OBJ_ENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_OBJ_ENV)
  625. #define DUK_HEAP_STRING_EMPTY_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EMPTY_STRING)
  626. #define DUK_HTHREAD_STRING_EMPTY_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EMPTY_STRING)
  627. #define DUK_HEAP_STRING_GLOBAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GLOBAL)
  628. #define DUK_HTHREAD_STRING_GLOBAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GLOBAL)
  629. #define DUK_HEAP_STRING_UC_ARGUMENTS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_ARGUMENTS)
  630. #define DUK_HTHREAD_STRING_UC_ARGUMENTS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_ARGUMENTS)
  631. #define DUK_HEAP_STRING_JSON(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON)
  632. #define DUK_HTHREAD_STRING_JSON(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON)
  633. #define DUK_HEAP_STRING_MATH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MATH)
  634. #define DUK_HTHREAD_STRING_MATH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MATH)
  635. #define DUK_HEAP_STRING_UC_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_ERROR)
  636. #define DUK_HTHREAD_STRING_UC_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_ERROR)
  637. #define DUK_HEAP_STRING_REG_EXP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REG_EXP)
  638. #define DUK_HTHREAD_STRING_REG_EXP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REG_EXP)
  639. #define DUK_HEAP_STRING_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DATE)
  640. #define DUK_HTHREAD_STRING_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DATE)
  641. #define DUK_HEAP_STRING_UC_NUMBER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_NUMBER)
  642. #define DUK_HTHREAD_STRING_UC_NUMBER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_NUMBER)
  643. #define DUK_HEAP_STRING_UC_BOOLEAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_BOOLEAN)
  644. #define DUK_HTHREAD_STRING_UC_BOOLEAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_BOOLEAN)
  645. #define DUK_HEAP_STRING_UC_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_STRING)
  646. #define DUK_HTHREAD_STRING_UC_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_STRING)
  647. #define DUK_HEAP_STRING_ARRAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ARRAY)
  648. #define DUK_HTHREAD_STRING_ARRAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ARRAY)
  649. #define DUK_HEAP_STRING_UC_FUNCTION(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_FUNCTION)
  650. #define DUK_HTHREAD_STRING_UC_FUNCTION(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_FUNCTION)
  651. #define DUK_HEAP_STRING_UC_OBJECT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_OBJECT)
  652. #define DUK_HTHREAD_STRING_UC_OBJECT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_OBJECT)
  653. #define DUK_HEAP_STRING_UC_NULL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_NULL)
  654. #define DUK_HTHREAD_STRING_UC_NULL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_NULL)
  655. #define DUK_HEAP_STRING_UC_UNDEFINED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_UNDEFINED)
  656. #define DUK_HTHREAD_STRING_UC_UNDEFINED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_UNDEFINED)
  657. #define DUK_HEAP_STRING_JSON_EXT_FUNCTION2(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_FUNCTION2)
  658. #define DUK_HTHREAD_STRING_JSON_EXT_FUNCTION2(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_FUNCTION2)
  659. #define DUK_HEAP_STRING_JSON_EXT_FUNCTION1(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_FUNCTION1)
  660. #define DUK_HTHREAD_STRING_JSON_EXT_FUNCTION1(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_FUNCTION1)
  661. #define DUK_HEAP_STRING_JSON_EXT_NEGINF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_NEGINF)
  662. #define DUK_HTHREAD_STRING_JSON_EXT_NEGINF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_NEGINF)
  663. #define DUK_HEAP_STRING_JSON_EXT_POSINF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_POSINF)
  664. #define DUK_HTHREAD_STRING_JSON_EXT_POSINF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_POSINF)
  665. #define DUK_HEAP_STRING_JSON_EXT_NAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_NAN)
  666. #define DUK_HTHREAD_STRING_JSON_EXT_NAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_NAN)
  667. #define DUK_HEAP_STRING_JSON_EXT_UNDEFINED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_UNDEFINED)
  668. #define DUK_HTHREAD_STRING_JSON_EXT_UNDEFINED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_UNDEFINED)
  669. #define DUK_HEAP_STRING_TO_LOG_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOG_STRING)
  670. #define DUK_HTHREAD_STRING_TO_LOG_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOG_STRING)
  671. #define DUK_HEAP_STRING_CLOG(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CLOG)
  672. #define DUK_HTHREAD_STRING_CLOG(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CLOG)
  673. #define DUK_HEAP_STRING_LC_L(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_L)
  674. #define DUK_HTHREAD_STRING_LC_L(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_L)
  675. #define DUK_HEAP_STRING_LC_N(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_N)
  676. #define DUK_HTHREAD_STRING_LC_N(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_N)
  677. #define DUK_HEAP_STRING_LC_FATAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_FATAL)
  678. #define DUK_HTHREAD_STRING_LC_FATAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_FATAL)
  679. #define DUK_HEAP_STRING_LC_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_ERROR)
  680. #define DUK_HTHREAD_STRING_LC_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_ERROR)
  681. #define DUK_HEAP_STRING_LC_WARN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_WARN)
  682. #define DUK_HTHREAD_STRING_LC_WARN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_WARN)
  683. #define DUK_HEAP_STRING_LC_DEBUG(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_DEBUG)
  684. #define DUK_HTHREAD_STRING_LC_DEBUG(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_DEBUG)
  685. #define DUK_HEAP_STRING_LC_TRACE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_TRACE)
  686. #define DUK_HTHREAD_STRING_LC_TRACE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_TRACE)
  687. #define DUK_HEAP_STRING_RAW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_RAW)
  688. #define DUK_HTHREAD_STRING_RAW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_RAW)
  689. #define DUK_HEAP_STRING_FMT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FMT)
  690. #define DUK_HTHREAD_STRING_FMT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FMT)
  691. #define DUK_HEAP_STRING_CURRENT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CURRENT)
  692. #define DUK_HTHREAD_STRING_CURRENT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CURRENT)
  693. #define DUK_HEAP_STRING_RESUME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_RESUME)
  694. #define DUK_HTHREAD_STRING_RESUME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_RESUME)
  695. #define DUK_HEAP_STRING_COMPACT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_COMPACT)
  696. #define DUK_HTHREAD_STRING_COMPACT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_COMPACT)
  697. #define DUK_HEAP_STRING_JC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JC)
  698. #define DUK_HTHREAD_STRING_JC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JC)
  699. #define DUK_HEAP_STRING_JX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JX)
  700. #define DUK_HTHREAD_STRING_JX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JX)
  701. #define DUK_HEAP_STRING_BASE64(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_BASE64)
  702. #define DUK_HTHREAD_STRING_BASE64(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_BASE64)
  703. #define DUK_HEAP_STRING_HEX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_HEX)
  704. #define DUK_HTHREAD_STRING_HEX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_HEX)
  705. #define DUK_HEAP_STRING_DEC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEC)
  706. #define DUK_HTHREAD_STRING_DEC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEC)
  707. #define DUK_HEAP_STRING_ENC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENC)
  708. #define DUK_HTHREAD_STRING_ENC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENC)
  709. #define DUK_HEAP_STRING_FIN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FIN)
  710. #define DUK_HTHREAD_STRING_FIN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FIN)
  711. #define DUK_HEAP_STRING_GC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GC)
  712. #define DUK_HTHREAD_STRING_GC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GC)
  713. #define DUK_HEAP_STRING_ACT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ACT)
  714. #define DUK_HTHREAD_STRING_ACT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ACT)
  715. #define DUK_HEAP_STRING_LC_INFO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_INFO)
  716. #define DUK_HTHREAD_STRING_LC_INFO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_INFO)
  717. #define DUK_HEAP_STRING_VERSION(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VERSION)
  718. #define DUK_HTHREAD_STRING_VERSION(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VERSION)
  719. #define DUK_HEAP_STRING_ENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENV)
  720. #define DUK_HTHREAD_STRING_ENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENV)
  721. #define DUK_HEAP_STRING_MOD_LOADED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MOD_LOADED)
  722. #define DUK_HTHREAD_STRING_MOD_LOADED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MOD_LOADED)
  723. #define DUK_HEAP_STRING_MOD_SEARCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MOD_SEARCH)
  724. #define DUK_HTHREAD_STRING_MOD_SEARCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MOD_SEARCH)
  725. #define DUK_HEAP_STRING_ERR_THROW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ERR_THROW)
  726. #define DUK_HTHREAD_STRING_ERR_THROW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ERR_THROW)
  727. #define DUK_HEAP_STRING_ERR_CREATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ERR_CREATE)
  728. #define DUK_HTHREAD_STRING_ERR_CREATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ERR_CREATE)
  729. #define DUK_HEAP_STRING_COMPILE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_COMPILE)
  730. #define DUK_HTHREAD_STRING_COMPILE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_COMPILE)
  731. #define DUK_HEAP_STRING_INT_REGBASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_REGBASE)
  732. #define DUK_HTHREAD_STRING_INT_REGBASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_REGBASE)
  733. #define DUK_HEAP_STRING_INT_THREAD(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_THREAD)
  734. #define DUK_HTHREAD_STRING_INT_THREAD(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_THREAD)
  735. #define DUK_HEAP_STRING_INT_HANDLER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_HANDLER)
  736. #define DUK_HTHREAD_STRING_INT_HANDLER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_HANDLER)
  737. #define DUK_HEAP_STRING_INT_FINALIZER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_FINALIZER)
  738. #define DUK_HTHREAD_STRING_INT_FINALIZER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_FINALIZER)
  739. #define DUK_HEAP_STRING_INT_CALLEE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_CALLEE)
  740. #define DUK_HTHREAD_STRING_INT_CALLEE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_CALLEE)
  741. #define DUK_HEAP_STRING_INT_MAP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_MAP)
  742. #define DUK_HTHREAD_STRING_INT_MAP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_MAP)
  743. #define DUK_HEAP_STRING_INT_ARGS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_ARGS)
  744. #define DUK_HTHREAD_STRING_INT_ARGS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_ARGS)
  745. #define DUK_HEAP_STRING_INT_THIS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_THIS)
  746. #define DUK_HTHREAD_STRING_INT_THIS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_THIS)
  747. #define DUK_HEAP_STRING_INT_PC2LINE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_PC2LINE)
  748. #define DUK_HTHREAD_STRING_INT_PC2LINE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_PC2LINE)
  749. #define DUK_HEAP_STRING_INT_SOURCE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_SOURCE)
  750. #define DUK_HTHREAD_STRING_INT_SOURCE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_SOURCE)
  751. #define DUK_HEAP_STRING_INT_VARENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_VARENV)
  752. #define DUK_HTHREAD_STRING_INT_VARENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_VARENV)
  753. #define DUK_HEAP_STRING_INT_LEXENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_LEXENV)
  754. #define DUK_HTHREAD_STRING_INT_LEXENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_LEXENV)
  755. #define DUK_HEAP_STRING_INT_VARMAP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_VARMAP)
  756. #define DUK_HTHREAD_STRING_INT_VARMAP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_VARMAP)
  757. #define DUK_HEAP_STRING_INT_FORMALS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_FORMALS)
  758. #define DUK_HTHREAD_STRING_INT_FORMALS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_FORMALS)
  759. #define DUK_HEAP_STRING_INT_BYTECODE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_BYTECODE)
  760. #define DUK_HTHREAD_STRING_INT_BYTECODE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_BYTECODE)
  761. #define DUK_HEAP_STRING_INT_NEXT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_NEXT)
  762. #define DUK_HTHREAD_STRING_INT_NEXT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_NEXT)
  763. #define DUK_HEAP_STRING_INT_TARGET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_TARGET)
  764. #define DUK_HTHREAD_STRING_INT_TARGET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_TARGET)
  765. #define DUK_HEAP_STRING_INT_VALUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_VALUE)
  766. #define DUK_HTHREAD_STRING_INT_VALUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_VALUE)
  767. #define DUK_HEAP_STRING_LC_POINTER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_POINTER)
  768. #define DUK_HTHREAD_STRING_LC_POINTER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_POINTER)
  769. #define DUK_HEAP_STRING_LC_BUFFER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_BUFFER)
  770. #define DUK_HTHREAD_STRING_LC_BUFFER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_BUFFER)
  771. #define DUK_HEAP_STRING_INT_TRACEDATA(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_TRACEDATA)
  772. #define DUK_HTHREAD_STRING_INT_TRACEDATA(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_TRACEDATA)
  773. #define DUK_HEAP_STRING_LINE_NUMBER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LINE_NUMBER)
  774. #define DUK_HTHREAD_STRING_LINE_NUMBER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LINE_NUMBER)
  775. #define DUK_HEAP_STRING_FILE_NAME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FILE_NAME)
  776. #define DUK_HTHREAD_STRING_FILE_NAME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FILE_NAME)
  777. #define DUK_HEAP_STRING_PC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PC)
  778. #define DUK_HTHREAD_STRING_PC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PC)
  779. #define DUK_HEAP_STRING_STACK(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_STACK)
  780. #define DUK_HTHREAD_STRING_STACK(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_STACK)
  781. #define DUK_HEAP_STRING_THROW_TYPE_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_THROW_TYPE_ERROR)
  782. #define DUK_HTHREAD_STRING_THROW_TYPE_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_THROW_TYPE_ERROR)
  783. #define DUK_HEAP_STRING_DUKTAPE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DUKTAPE)
  784. #define DUK_HTHREAD_STRING_DUKTAPE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DUKTAPE)
  785. #define DUK_HEAP_STRING_ID(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ID)
  786. #define DUK_HTHREAD_STRING_ID(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ID)
  787. #define DUK_HEAP_STRING_REQUIRE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REQUIRE)
  788. #define DUK_HTHREAD_STRING_REQUIRE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REQUIRE)
  789. #define DUK_HEAP_STRING___PROTO__(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX___PROTO__)
  790. #define DUK_HTHREAD_STRING___PROTO__(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX___PROTO__)
  791. #define DUK_HEAP_STRING_SET_PROTOTYPE_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_PROTOTYPE_OF)
  792. #define DUK_HTHREAD_STRING_SET_PROTOTYPE_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_PROTOTYPE_OF)
  793. #define DUK_HEAP_STRING_OWN_KEYS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_OWN_KEYS)
  794. #define DUK_HTHREAD_STRING_OWN_KEYS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_OWN_KEYS)
  795. #define DUK_HEAP_STRING_ENUMERATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENUMERATE)
  796. #define DUK_HTHREAD_STRING_ENUMERATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENUMERATE)
  797. #define DUK_HEAP_STRING_DELETE_PROPERTY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DELETE_PROPERTY)
  798. #define DUK_HTHREAD_STRING_DELETE_PROPERTY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DELETE_PROPERTY)
  799. #define DUK_HEAP_STRING_HAS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_HAS)
  800. #define DUK_HTHREAD_STRING_HAS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_HAS)
  801. #define DUK_HEAP_STRING_PROXY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PROXY)
  802. #define DUK_HTHREAD_STRING_PROXY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PROXY)
  803. #define DUK_HEAP_STRING_CALLEE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CALLEE)
  804. #define DUK_HTHREAD_STRING_CALLEE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CALLEE)
  805. #define DUK_HEAP_STRING_INVALID_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INVALID_DATE)
  806. #define DUK_HTHREAD_STRING_INVALID_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INVALID_DATE)
  807. #define DUK_HEAP_STRING_BRACKETED_ELLIPSIS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_BRACKETED_ELLIPSIS)
  808. #define DUK_HTHREAD_STRING_BRACKETED_ELLIPSIS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_BRACKETED_ELLIPSIS)
  809. #define DUK_HEAP_STRING_NEWLINE_TAB(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NEWLINE_TAB)
  810. #define DUK_HTHREAD_STRING_NEWLINE_TAB(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NEWLINE_TAB)
  811. #define DUK_HEAP_STRING_SPACE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SPACE)
  812. #define DUK_HTHREAD_STRING_SPACE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SPACE)
  813. #define DUK_HEAP_STRING_COMMA(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_COMMA)
  814. #define DUK_HTHREAD_STRING_COMMA(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_COMMA)
  815. #define DUK_HEAP_STRING_MINUS_ZERO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MINUS_ZERO)
  816. #define DUK_HTHREAD_STRING_MINUS_ZERO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MINUS_ZERO)
  817. #define DUK_HEAP_STRING_PLUS_ZERO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PLUS_ZERO)
  818. #define DUK_HTHREAD_STRING_PLUS_ZERO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PLUS_ZERO)
  819. #define DUK_HEAP_STRING_ZERO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ZERO)
  820. #define DUK_HTHREAD_STRING_ZERO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ZERO)
  821. #define DUK_HEAP_STRING_MINUS_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MINUS_INFINITY)
  822. #define DUK_HTHREAD_STRING_MINUS_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MINUS_INFINITY)
  823. #define DUK_HEAP_STRING_PLUS_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PLUS_INFINITY)
  824. #define DUK_HTHREAD_STRING_PLUS_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PLUS_INFINITY)
  825. #define DUK_HEAP_STRING_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INFINITY)
  826. #define DUK_HTHREAD_STRING_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INFINITY)
  827. #define DUK_HEAP_STRING_LC_OBJECT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_OBJECT)
  828. #define DUK_HTHREAD_STRING_LC_OBJECT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_OBJECT)
  829. #define DUK_HEAP_STRING_LC_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_STRING)
  830. #define DUK_HTHREAD_STRING_LC_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_STRING)
  831. #define DUK_HEAP_STRING_LC_NUMBER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_NUMBER)
  832. #define DUK_HTHREAD_STRING_LC_NUMBER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_NUMBER)
  833. #define DUK_HEAP_STRING_LC_BOOLEAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_BOOLEAN)
  834. #define DUK_HTHREAD_STRING_LC_BOOLEAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_BOOLEAN)
  835. #define DUK_HEAP_STRING_LC_UNDEFINED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_UNDEFINED)
  836. #define DUK_HTHREAD_STRING_LC_UNDEFINED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_UNDEFINED)
  837. #define DUK_HEAP_STRING_STRINGIFY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_STRINGIFY)
  838. #define DUK_HTHREAD_STRING_STRINGIFY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_STRINGIFY)
  839. #define DUK_HEAP_STRING_TAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TAN)
  840. #define DUK_HTHREAD_STRING_TAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TAN)
  841. #define DUK_HEAP_STRING_SQRT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SQRT)
  842. #define DUK_HTHREAD_STRING_SQRT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SQRT)
  843. #define DUK_HEAP_STRING_SIN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SIN)
  844. #define DUK_HTHREAD_STRING_SIN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SIN)
  845. #define DUK_HEAP_STRING_ROUND(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ROUND)
  846. #define DUK_HTHREAD_STRING_ROUND(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ROUND)
  847. #define DUK_HEAP_STRING_RANDOM(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_RANDOM)
  848. #define DUK_HTHREAD_STRING_RANDOM(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_RANDOM)
  849. #define DUK_HEAP_STRING_POW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_POW)
  850. #define DUK_HTHREAD_STRING_POW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_POW)
  851. #define DUK_HEAP_STRING_MIN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MIN)
  852. #define DUK_HTHREAD_STRING_MIN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MIN)
  853. #define DUK_HEAP_STRING_MAX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MAX)
  854. #define DUK_HTHREAD_STRING_MAX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MAX)
  855. #define DUK_HEAP_STRING_LOG(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LOG)
  856. #define DUK_HTHREAD_STRING_LOG(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LOG)
  857. #define DUK_HEAP_STRING_FLOOR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FLOOR)
  858. #define DUK_HTHREAD_STRING_FLOOR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FLOOR)
  859. #define DUK_HEAP_STRING_EXP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EXP)
  860. #define DUK_HTHREAD_STRING_EXP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EXP)
  861. #define DUK_HEAP_STRING_COS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_COS)
  862. #define DUK_HTHREAD_STRING_COS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_COS)
  863. #define DUK_HEAP_STRING_CEIL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CEIL)
  864. #define DUK_HTHREAD_STRING_CEIL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CEIL)
  865. #define DUK_HEAP_STRING_ATAN2(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ATAN2)
  866. #define DUK_HTHREAD_STRING_ATAN2(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ATAN2)
  867. #define DUK_HEAP_STRING_ATAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ATAN)
  868. #define DUK_HTHREAD_STRING_ATAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ATAN)
  869. #define DUK_HEAP_STRING_ASIN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ASIN)
  870. #define DUK_HTHREAD_STRING_ASIN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ASIN)
  871. #define DUK_HEAP_STRING_ACOS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ACOS)
  872. #define DUK_HTHREAD_STRING_ACOS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ACOS)
  873. #define DUK_HEAP_STRING_ABS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ABS)
  874. #define DUK_HTHREAD_STRING_ABS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ABS)
  875. #define DUK_HEAP_STRING_SQRT2(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SQRT2)
  876. #define DUK_HTHREAD_STRING_SQRT2(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SQRT2)
  877. #define DUK_HEAP_STRING_SQRT1_2(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SQRT1_2)
  878. #define DUK_HTHREAD_STRING_SQRT1_2(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SQRT1_2)
  879. #define DUK_HEAP_STRING_PI(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PI)
  880. #define DUK_HTHREAD_STRING_PI(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PI)
  881. #define DUK_HEAP_STRING_LOG10E(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LOG10E)
  882. #define DUK_HTHREAD_STRING_LOG10E(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LOG10E)
  883. #define DUK_HEAP_STRING_LOG2E(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LOG2E)
  884. #define DUK_HTHREAD_STRING_LOG2E(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LOG2E)
  885. #define DUK_HEAP_STRING_LN2(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LN2)
  886. #define DUK_HTHREAD_STRING_LN2(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LN2)
  887. #define DUK_HEAP_STRING_LN10(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LN10)
  888. #define DUK_HTHREAD_STRING_LN10(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LN10)
  889. #define DUK_HEAP_STRING_E(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_E)
  890. #define DUK_HTHREAD_STRING_E(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_E)
  891. #define DUK_HEAP_STRING_MESSAGE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MESSAGE)
  892. #define DUK_HTHREAD_STRING_MESSAGE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MESSAGE)
  893. #define DUK_HEAP_STRING_NAME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NAME)
  894. #define DUK_HTHREAD_STRING_NAME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NAME)
  895. #define DUK_HEAP_STRING_INPUT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INPUT)
  896. #define DUK_HTHREAD_STRING_INPUT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INPUT)
  897. #define DUK_HEAP_STRING_INDEX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INDEX)
  898. #define DUK_HTHREAD_STRING_INDEX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INDEX)
  899. #define DUK_HEAP_STRING_ESCAPED_EMPTY_REGEXP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ESCAPED_EMPTY_REGEXP)
  900. #define DUK_HTHREAD_STRING_ESCAPED_EMPTY_REGEXP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ESCAPED_EMPTY_REGEXP)
  901. #define DUK_HEAP_STRING_LAST_INDEX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LAST_INDEX)
  902. #define DUK_HTHREAD_STRING_LAST_INDEX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LAST_INDEX)
  903. #define DUK_HEAP_STRING_MULTILINE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MULTILINE)
  904. #define DUK_HTHREAD_STRING_MULTILINE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MULTILINE)
  905. #define DUK_HEAP_STRING_IGNORE_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IGNORE_CASE)
  906. #define DUK_HTHREAD_STRING_IGNORE_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IGNORE_CASE)
  907. #define DUK_HEAP_STRING_SOURCE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SOURCE)
  908. #define DUK_HTHREAD_STRING_SOURCE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SOURCE)
  909. #define DUK_HEAP_STRING_TEST(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TEST)
  910. #define DUK_HTHREAD_STRING_TEST(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TEST)
  911. #define DUK_HEAP_STRING_EXEC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EXEC)
  912. #define DUK_HTHREAD_STRING_EXEC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EXEC)
  913. #define DUK_HEAP_STRING_TO_GMT_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_GMT_STRING)
  914. #define DUK_HTHREAD_STRING_TO_GMT_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_GMT_STRING)
  915. #define DUK_HEAP_STRING_SET_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_YEAR)
  916. #define DUK_HTHREAD_STRING_SET_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_YEAR)
  917. #define DUK_HEAP_STRING_GET_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_YEAR)
  918. #define DUK_HTHREAD_STRING_GET_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_YEAR)
  919. #define DUK_HEAP_STRING_TO_JSON(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_JSON)
  920. #define DUK_HTHREAD_STRING_TO_JSON(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_JSON)
  921. #define DUK_HEAP_STRING_TO_ISO_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_ISO_STRING)
  922. #define DUK_HTHREAD_STRING_TO_ISO_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_ISO_STRING)
  923. #define DUK_HEAP_STRING_TO_UTC_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_UTC_STRING)
  924. #define DUK_HTHREAD_STRING_TO_UTC_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_UTC_STRING)
  925. #define DUK_HEAP_STRING_SET_UTC_FULL_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_FULL_YEAR)
  926. #define DUK_HTHREAD_STRING_SET_UTC_FULL_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_FULL_YEAR)
  927. #define DUK_HEAP_STRING_SET_FULL_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_FULL_YEAR)
  928. #define DUK_HTHREAD_STRING_SET_FULL_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_FULL_YEAR)
  929. #define DUK_HEAP_STRING_SET_UTC_MONTH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_MONTH)
  930. #define DUK_HTHREAD_STRING_SET_UTC_MONTH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_MONTH)
  931. #define DUK_HEAP_STRING_SET_MONTH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_MONTH)
  932. #define DUK_HTHREAD_STRING_SET_MONTH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_MONTH)
  933. #define DUK_HEAP_STRING_SET_UTC_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_DATE)
  934. #define DUK_HTHREAD_STRING_SET_UTC_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_DATE)
  935. #define DUK_HEAP_STRING_SET_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_DATE)
  936. #define DUK_HTHREAD_STRING_SET_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_DATE)
  937. #define DUK_HEAP_STRING_SET_UTC_HOURS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_HOURS)
  938. #define DUK_HTHREAD_STRING_SET_UTC_HOURS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_HOURS)
  939. #define DUK_HEAP_STRING_SET_HOURS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_HOURS)
  940. #define DUK_HTHREAD_STRING_SET_HOURS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_HOURS)
  941. #define DUK_HEAP_STRING_SET_UTC_MINUTES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_MINUTES)
  942. #define DUK_HTHREAD_STRING_SET_UTC_MINUTES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_MINUTES)
  943. #define DUK_HEAP_STRING_SET_MINUTES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_MINUTES)
  944. #define DUK_HTHREAD_STRING_SET_MINUTES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_MINUTES)
  945. #define DUK_HEAP_STRING_SET_UTC_SECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_SECONDS)
  946. #define DUK_HTHREAD_STRING_SET_UTC_SECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_SECONDS)
  947. #define DUK_HEAP_STRING_SET_SECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_SECONDS)
  948. #define DUK_HTHREAD_STRING_SET_SECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_SECONDS)
  949. #define DUK_HEAP_STRING_SET_UTC_MILLISECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_MILLISECONDS)
  950. #define DUK_HTHREAD_STRING_SET_UTC_MILLISECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_MILLISECONDS)
  951. #define DUK_HEAP_STRING_SET_MILLISECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_MILLISECONDS)
  952. #define DUK_HTHREAD_STRING_SET_MILLISECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_MILLISECONDS)
  953. #define DUK_HEAP_STRING_SET_TIME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_TIME)
  954. #define DUK_HTHREAD_STRING_SET_TIME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_TIME)
  955. #define DUK_HEAP_STRING_GET_TIMEZONE_OFFSET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_TIMEZONE_OFFSET)
  956. #define DUK_HTHREAD_STRING_GET_TIMEZONE_OFFSET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_TIMEZONE_OFFSET)
  957. #define DUK_HEAP_STRING_GET_UTC_MILLISECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_MILLISECONDS)
  958. #define DUK_HTHREAD_STRING_GET_UTC_MILLISECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_MILLISECONDS)
  959. #define DUK_HEAP_STRING_GET_MILLISECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_MILLISECONDS)
  960. #define DUK_HTHREAD_STRING_GET_MILLISECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_MILLISECONDS)
  961. #define DUK_HEAP_STRING_GET_UTC_SECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_SECONDS)
  962. #define DUK_HTHREAD_STRING_GET_UTC_SECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_SECONDS)
  963. #define DUK_HEAP_STRING_GET_SECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_SECONDS)
  964. #define DUK_HTHREAD_STRING_GET_SECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_SECONDS)
  965. #define DUK_HEAP_STRING_GET_UTC_MINUTES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_MINUTES)
  966. #define DUK_HTHREAD_STRING_GET_UTC_MINUTES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_MINUTES)
  967. #define DUK_HEAP_STRING_GET_MINUTES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_MINUTES)
  968. #define DUK_HTHREAD_STRING_GET_MINUTES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_MINUTES)
  969. #define DUK_HEAP_STRING_GET_UTC_HOURS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_HOURS)
  970. #define DUK_HTHREAD_STRING_GET_UTC_HOURS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_HOURS)
  971. #define DUK_HEAP_STRING_GET_HOURS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_HOURS)
  972. #define DUK_HTHREAD_STRING_GET_HOURS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_HOURS)
  973. #define DUK_HEAP_STRING_GET_UTC_DAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_DAY)
  974. #define DUK_HTHREAD_STRING_GET_UTC_DAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_DAY)
  975. #define DUK_HEAP_STRING_GET_DAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_DAY)
  976. #define DUK_HTHREAD_STRING_GET_DAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_DAY)
  977. #define DUK_HEAP_STRING_GET_UTC_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_DATE)
  978. #define DUK_HTHREAD_STRING_GET_UTC_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_DATE)
  979. #define DUK_HEAP_STRING_GET_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_DATE)
  980. #define DUK_HTHREAD_STRING_GET_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_DATE)
  981. #define DUK_HEAP_STRING_GET_UTC_MONTH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_MONTH)
  982. #define DUK_HTHREAD_STRING_GET_UTC_MONTH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_MONTH)
  983. #define DUK_HEAP_STRING_GET_MONTH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_MONTH)
  984. #define DUK_HTHREAD_STRING_GET_MONTH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_MONTH)
  985. #define DUK_HEAP_STRING_GET_UTC_FULL_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_FULL_YEAR)
  986. #define DUK_HTHREAD_STRING_GET_UTC_FULL_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_FULL_YEAR)
  987. #define DUK_HEAP_STRING_GET_FULL_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_FULL_YEAR)
  988. #define DUK_HTHREAD_STRING_GET_FULL_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_FULL_YEAR)
  989. #define DUK_HEAP_STRING_GET_TIME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_TIME)
  990. #define DUK_HTHREAD_STRING_GET_TIME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_TIME)
  991. #define DUK_HEAP_STRING_TO_LOCALE_TIME_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOCALE_TIME_STRING)
  992. #define DUK_HTHREAD_STRING_TO_LOCALE_TIME_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOCALE_TIME_STRING)
  993. #define DUK_HEAP_STRING_TO_LOCALE_DATE_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOCALE_DATE_STRING)
  994. #define DUK_HTHREAD_STRING_TO_LOCALE_DATE_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOCALE_DATE_STRING)
  995. #define DUK_HEAP_STRING_TO_TIME_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_TIME_STRING)
  996. #define DUK_HTHREAD_STRING_TO_TIME_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_TIME_STRING)
  997. #define DUK_HEAP_STRING_TO_DATE_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_DATE_STRING)
  998. #define DUK_HTHREAD_STRING_TO_DATE_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_DATE_STRING)
  999. #define DUK_HEAP_STRING_NOW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NOW)
  1000. #define DUK_HTHREAD_STRING_NOW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NOW)
  1001. #define DUK_HEAP_STRING_UTC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UTC)
  1002. #define DUK_HTHREAD_STRING_UTC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UTC)
  1003. #define DUK_HEAP_STRING_PARSE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PARSE)
  1004. #define DUK_HTHREAD_STRING_PARSE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PARSE)
  1005. #define DUK_HEAP_STRING_TO_PRECISION(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_PRECISION)
  1006. #define DUK_HTHREAD_STRING_TO_PRECISION(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_PRECISION)
  1007. #define DUK_HEAP_STRING_TO_EXPONENTIAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_EXPONENTIAL)
  1008. #define DUK_HTHREAD_STRING_TO_EXPONENTIAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_EXPONENTIAL)
  1009. #define DUK_HEAP_STRING_TO_FIXED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_FIXED)
  1010. #define DUK_HTHREAD_STRING_TO_FIXED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_FIXED)
  1011. #define DUK_HEAP_STRING_POSITIVE_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_POSITIVE_INFINITY)
  1012. #define DUK_HTHREAD_STRING_POSITIVE_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_POSITIVE_INFINITY)
  1013. #define DUK_HEAP_STRING_NEGATIVE_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NEGATIVE_INFINITY)
  1014. #define DUK_HTHREAD_STRING_NEGATIVE_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NEGATIVE_INFINITY)
  1015. #define DUK_HEAP_STRING_NAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NAN)
  1016. #define DUK_HTHREAD_STRING_NAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NAN)
  1017. #define DUK_HEAP_STRING_MIN_VALUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MIN_VALUE)
  1018. #define DUK_HTHREAD_STRING_MIN_VALUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MIN_VALUE)
  1019. #define DUK_HEAP_STRING_MAX_VALUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MAX_VALUE)
  1020. #define DUK_HTHREAD_STRING_MAX_VALUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MAX_VALUE)
  1021. #define DUK_HEAP_STRING_SUBSTR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SUBSTR)
  1022. #define DUK_HTHREAD_STRING_SUBSTR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SUBSTR)
  1023. #define DUK_HEAP_STRING_TRIM(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TRIM)
  1024. #define DUK_HTHREAD_STRING_TRIM(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TRIM)
  1025. #define DUK_HEAP_STRING_TO_LOCALE_UPPER_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOCALE_UPPER_CASE)
  1026. #define DUK_HTHREAD_STRING_TO_LOCALE_UPPER_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOCALE_UPPER_CASE)
  1027. #define DUK_HEAP_STRING_TO_UPPER_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_UPPER_CASE)
  1028. #define DUK_HTHREAD_STRING_TO_UPPER_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_UPPER_CASE)
  1029. #define DUK_HEAP_STRING_TO_LOCALE_LOWER_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOCALE_LOWER_CASE)
  1030. #define DUK_HTHREAD_STRING_TO_LOCALE_LOWER_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOCALE_LOWER_CASE)
  1031. #define DUK_HEAP_STRING_TO_LOWER_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOWER_CASE)
  1032. #define DUK_HTHREAD_STRING_TO_LOWER_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOWER_CASE)
  1033. #define DUK_HEAP_STRING_SUBSTRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SUBSTRING)
  1034. #define DUK_HTHREAD_STRING_SUBSTRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SUBSTRING)
  1035. #define DUK_HEAP_STRING_SPLIT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SPLIT)
  1036. #define DUK_HTHREAD_STRING_SPLIT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SPLIT)
  1037. #define DUK_HEAP_STRING_SEARCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SEARCH)
  1038. #define DUK_HTHREAD_STRING_SEARCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SEARCH)
  1039. #define DUK_HEAP_STRING_REPLACE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REPLACE)
  1040. #define DUK_HTHREAD_STRING_REPLACE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REPLACE)
  1041. #define DUK_HEAP_STRING_MATCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MATCH)
  1042. #define DUK_HTHREAD_STRING_MATCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MATCH)
  1043. #define DUK_HEAP_STRING_LOCALE_COMPARE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LOCALE_COMPARE)
  1044. #define DUK_HTHREAD_STRING_LOCALE_COMPARE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LOCALE_COMPARE)
  1045. #define DUK_HEAP_STRING_CHAR_CODE_AT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CHAR_CODE_AT)
  1046. #define DUK_HTHREAD_STRING_CHAR_CODE_AT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CHAR_CODE_AT)
  1047. #define DUK_HEAP_STRING_CHAR_AT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CHAR_AT)
  1048. #define DUK_HTHREAD_STRING_CHAR_AT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CHAR_AT)
  1049. #define DUK_HEAP_STRING_FROM_CHAR_CODE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FROM_CHAR_CODE)
  1050. #define DUK_HTHREAD_STRING_FROM_CHAR_CODE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FROM_CHAR_CODE)
  1051. #define DUK_HEAP_STRING_REDUCE_RIGHT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REDUCE_RIGHT)
  1052. #define DUK_HTHREAD_STRING_REDUCE_RIGHT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REDUCE_RIGHT)
  1053. #define DUK_HEAP_STRING_REDUCE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REDUCE)
  1054. #define DUK_HTHREAD_STRING_REDUCE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REDUCE)
  1055. #define DUK_HEAP_STRING_FILTER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FILTER)
  1056. #define DUK_HTHREAD_STRING_FILTER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FILTER)
  1057. #define DUK_HEAP_STRING_MAP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MAP)
  1058. #define DUK_HTHREAD_STRING_MAP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MAP)
  1059. #define DUK_HEAP_STRING_FOR_EACH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FOR_EACH)
  1060. #define DUK_HTHREAD_STRING_FOR_EACH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FOR_EACH)
  1061. #define DUK_HEAP_STRING_SOME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SOME)
  1062. #define DUK_HTHREAD_STRING_SOME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SOME)
  1063. #define DUK_HEAP_STRING_EVERY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EVERY)
  1064. #define DUK_HTHREAD_STRING_EVERY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EVERY)
  1065. #define DUK_HEAP_STRING_LAST_INDEX_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LAST_INDEX_OF)
  1066. #define DUK_HTHREAD_STRING_LAST_INDEX_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LAST_INDEX_OF)
  1067. #define DUK_HEAP_STRING_INDEX_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INDEX_OF)
  1068. #define DUK_HTHREAD_STRING_INDEX_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INDEX_OF)
  1069. #define DUK_HEAP_STRING_UNSHIFT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UNSHIFT)
  1070. #define DUK_HTHREAD_STRING_UNSHIFT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UNSHIFT)
  1071. #define DUK_HEAP_STRING_SPLICE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SPLICE)
  1072. #define DUK_HTHREAD_STRING_SPLICE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SPLICE)
  1073. #define DUK_HEAP_STRING_SORT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SORT)
  1074. #define DUK_HTHREAD_STRING_SORT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SORT)
  1075. #define DUK_HEAP_STRING_SLICE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SLICE)
  1076. #define DUK_HTHREAD_STRING_SLICE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SLICE)
  1077. #define DUK_HEAP_STRING_SHIFT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SHIFT)
  1078. #define DUK_HTHREAD_STRING_SHIFT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SHIFT)
  1079. #define DUK_HEAP_STRING_REVERSE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REVERSE)
  1080. #define DUK_HTHREAD_STRING_REVERSE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REVERSE)
  1081. #define DUK_HEAP_STRING_PUSH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PUSH)
  1082. #define DUK_HTHREAD_STRING_PUSH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PUSH)
  1083. #define DUK_HEAP_STRING_POP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_POP)
  1084. #define DUK_HTHREAD_STRING_POP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_POP)
  1085. #define DUK_HEAP_STRING_JOIN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JOIN)
  1086. #define DUK_HTHREAD_STRING_JOIN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JOIN)
  1087. #define DUK_HEAP_STRING_CONCAT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONCAT)
  1088. #define DUK_HTHREAD_STRING_CONCAT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONCAT)
  1089. #define DUK_HEAP_STRING_IS_ARRAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_ARRAY)
  1090. #define DUK_HTHREAD_STRING_IS_ARRAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_ARRAY)
  1091. #define DUK_HEAP_STRING_LC_ARGUMENTS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_ARGUMENTS)
  1092. #define DUK_HTHREAD_STRING_LC_ARGUMENTS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_ARGUMENTS)
  1093. #define DUK_HEAP_STRING_CALLER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CALLER)
  1094. #define DUK_HTHREAD_STRING_CALLER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CALLER)
  1095. #define DUK_HEAP_STRING_BIND(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_BIND)
  1096. #define DUK_HTHREAD_STRING_BIND(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_BIND)
  1097. #define DUK_HEAP_STRING_CALL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CALL)
  1098. #define DUK_HTHREAD_STRING_CALL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CALL)
  1099. #define DUK_HEAP_STRING_APPLY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_APPLY)
  1100. #define DUK_HTHREAD_STRING_APPLY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_APPLY)
  1101. #define DUK_HEAP_STRING_PROPERTY_IS_ENUMERABLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PROPERTY_IS_ENUMERABLE)
  1102. #define DUK_HTHREAD_STRING_PROPERTY_IS_ENUMERABLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PROPERTY_IS_ENUMERABLE)
  1103. #define DUK_HEAP_STRING_IS_PROTOTYPE_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_PROTOTYPE_OF)
  1104. #define DUK_HTHREAD_STRING_IS_PROTOTYPE_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_PROTOTYPE_OF)
  1105. #define DUK_HEAP_STRING_HAS_OWN_PROPERTY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_HAS_OWN_PROPERTY)
  1106. #define DUK_HTHREAD_STRING_HAS_OWN_PROPERTY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_HAS_OWN_PROPERTY)
  1107. #define DUK_HEAP_STRING_VALUE_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VALUE_OF)
  1108. #define DUK_HTHREAD_STRING_VALUE_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VALUE_OF)
  1109. #define DUK_HEAP_STRING_TO_LOCALE_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOCALE_STRING)
  1110. #define DUK_HTHREAD_STRING_TO_LOCALE_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOCALE_STRING)
  1111. #define DUK_HEAP_STRING_TO_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_STRING)
  1112. #define DUK_HTHREAD_STRING_TO_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_STRING)
  1113. #define DUK_HEAP_STRING_CONSTRUCTOR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONSTRUCTOR)
  1114. #define DUK_HTHREAD_STRING_CONSTRUCTOR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONSTRUCTOR)
  1115. #define DUK_HEAP_STRING_SET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET)
  1116. #define DUK_HTHREAD_STRING_SET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET)
  1117. #define DUK_HEAP_STRING_GET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET)
  1118. #define DUK_HTHREAD_STRING_GET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET)
  1119. #define DUK_HEAP_STRING_ENUMERABLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENUMERABLE)
  1120. #define DUK_HTHREAD_STRING_ENUMERABLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENUMERABLE)
  1121. #define DUK_HEAP_STRING_CONFIGURABLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONFIGURABLE)
  1122. #define DUK_HTHREAD_STRING_CONFIGURABLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONFIGURABLE)
  1123. #define DUK_HEAP_STRING_WRITABLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_WRITABLE)
  1124. #define DUK_HTHREAD_STRING_WRITABLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_WRITABLE)
  1125. #define DUK_HEAP_STRING_VALUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VALUE)
  1126. #define DUK_HTHREAD_STRING_VALUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VALUE)
  1127. #define DUK_HEAP_STRING_KEYS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_KEYS)
  1128. #define DUK_HTHREAD_STRING_KEYS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_KEYS)
  1129. #define DUK_HEAP_STRING_IS_EXTENSIBLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_EXTENSIBLE)
  1130. #define DUK_HTHREAD_STRING_IS_EXTENSIBLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_EXTENSIBLE)
  1131. #define DUK_HEAP_STRING_IS_FROZEN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_FROZEN)
  1132. #define DUK_HTHREAD_STRING_IS_FROZEN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_FROZEN)
  1133. #define DUK_HEAP_STRING_IS_SEALED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_SEALED)
  1134. #define DUK_HTHREAD_STRING_IS_SEALED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_SEALED)
  1135. #define DUK_HEAP_STRING_PREVENT_EXTENSIONS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PREVENT_EXTENSIONS)
  1136. #define DUK_HTHREAD_STRING_PREVENT_EXTENSIONS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PREVENT_EXTENSIONS)
  1137. #define DUK_HEAP_STRING_FREEZE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FREEZE)
  1138. #define DUK_HTHREAD_STRING_FREEZE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FREEZE)
  1139. #define DUK_HEAP_STRING_SEAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SEAL)
  1140. #define DUK_HTHREAD_STRING_SEAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SEAL)
  1141. #define DUK_HEAP_STRING_DEFINE_PROPERTIES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEFINE_PROPERTIES)
  1142. #define DUK_HTHREAD_STRING_DEFINE_PROPERTIES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEFINE_PROPERTIES)
  1143. #define DUK_HEAP_STRING_DEFINE_PROPERTY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEFINE_PROPERTY)
  1144. #define DUK_HTHREAD_STRING_DEFINE_PROPERTY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEFINE_PROPERTY)
  1145. #define DUK_HEAP_STRING_CREATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CREATE)
  1146. #define DUK_HTHREAD_STRING_CREATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CREATE)
  1147. #define DUK_HEAP_STRING_GET_OWN_PROPERTY_NAMES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_OWN_PROPERTY_NAMES)
  1148. #define DUK_HTHREAD_STRING_GET_OWN_PROPERTY_NAMES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_OWN_PROPERTY_NAMES)
  1149. #define DUK_HEAP_STRING_GET_OWN_PROPERTY_DESCRIPTOR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_OWN_PROPERTY_DESCRIPTOR)
  1150. #define DUK_HTHREAD_STRING_GET_OWN_PROPERTY_DESCRIPTOR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_OWN_PROPERTY_DESCRIPTOR)
  1151. #define DUK_HEAP_STRING_GET_PROTOTYPE_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_PROTOTYPE_OF)
  1152. #define DUK_HTHREAD_STRING_GET_PROTOTYPE_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_PROTOTYPE_OF)
  1153. #define DUK_HEAP_STRING_PROTOTYPE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PROTOTYPE)
  1154. #define DUK_HTHREAD_STRING_PROTOTYPE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PROTOTYPE)
  1155. #define DUK_HEAP_STRING_LENGTH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LENGTH)
  1156. #define DUK_HTHREAD_STRING_LENGTH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LENGTH)
  1157. #define DUK_HEAP_STRING_ALERT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ALERT)
  1158. #define DUK_HTHREAD_STRING_ALERT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ALERT)
  1159. #define DUK_HEAP_STRING_PRINT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PRINT)
  1160. #define DUK_HTHREAD_STRING_PRINT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PRINT)
  1161. #define DUK_HEAP_STRING_UNESCAPE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UNESCAPE)
  1162. #define DUK_HTHREAD_STRING_UNESCAPE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UNESCAPE)
  1163. #define DUK_HEAP_STRING_ESCAPE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ESCAPE)
  1164. #define DUK_HTHREAD_STRING_ESCAPE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ESCAPE)
  1165. #define DUK_HEAP_STRING_ENCODE_URI_COMPONENT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENCODE_URI_COMPONENT)
  1166. #define DUK_HTHREAD_STRING_ENCODE_URI_COMPONENT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENCODE_URI_COMPONENT)
  1167. #define DUK_HEAP_STRING_ENCODE_URI(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENCODE_URI)
  1168. #define DUK_HTHREAD_STRING_ENCODE_URI(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENCODE_URI)
  1169. #define DUK_HEAP_STRING_DECODE_URI_COMPONENT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DECODE_URI_COMPONENT)
  1170. #define DUK_HTHREAD_STRING_DECODE_URI_COMPONENT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DECODE_URI_COMPONENT)
  1171. #define DUK_HEAP_STRING_DECODE_URI(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DECODE_URI)
  1172. #define DUK_HTHREAD_STRING_DECODE_URI(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DECODE_URI)
  1173. #define DUK_HEAP_STRING_IS_FINITE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_FINITE)
  1174. #define DUK_HTHREAD_STRING_IS_FINITE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_FINITE)
  1175. #define DUK_HEAP_STRING_IS_NAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_NAN)
  1176. #define DUK_HTHREAD_STRING_IS_NAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_NAN)
  1177. #define DUK_HEAP_STRING_PARSE_FLOAT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PARSE_FLOAT)
  1178. #define DUK_HTHREAD_STRING_PARSE_FLOAT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PARSE_FLOAT)
  1179. #define DUK_HEAP_STRING_PARSE_INT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PARSE_INT)
  1180. #define DUK_HTHREAD_STRING_PARSE_INT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PARSE_INT)
  1181. #define DUK_HEAP_STRING_EVAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EVAL)
  1182. #define DUK_HTHREAD_STRING_EVAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EVAL)
  1183. #define DUK_HEAP_STRING_URI_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_URI_ERROR)
  1184. #define DUK_HTHREAD_STRING_URI_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_URI_ERROR)
  1185. #define DUK_HEAP_STRING_TYPE_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TYPE_ERROR)
  1186. #define DUK_HTHREAD_STRING_TYPE_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TYPE_ERROR)
  1187. #define DUK_HEAP_STRING_SYNTAX_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SYNTAX_ERROR)
  1188. #define DUK_HTHREAD_STRING_SYNTAX_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SYNTAX_ERROR)
  1189. #define DUK_HEAP_STRING_REFERENCE_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REFERENCE_ERROR)
  1190. #define DUK_HTHREAD_STRING_REFERENCE_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REFERENCE_ERROR)
  1191. #define DUK_HEAP_STRING_RANGE_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_RANGE_ERROR)
  1192. #define DUK_HTHREAD_STRING_RANGE_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_RANGE_ERROR)
  1193. #define DUK_HEAP_STRING_EVAL_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EVAL_ERROR)
  1194. #define DUK_HTHREAD_STRING_EVAL_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EVAL_ERROR)
  1195. #define DUK_HEAP_STRING_BREAK(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_BREAK)
  1196. #define DUK_HTHREAD_STRING_BREAK(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_BREAK)
  1197. #define DUK_HEAP_STRING_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CASE)
  1198. #define DUK_HTHREAD_STRING_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CASE)
  1199. #define DUK_HEAP_STRING_CATCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CATCH)
  1200. #define DUK_HTHREAD_STRING_CATCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CATCH)
  1201. #define DUK_HEAP_STRING_CONTINUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONTINUE)
  1202. #define DUK_HTHREAD_STRING_CONTINUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONTINUE)
  1203. #define DUK_HEAP_STRING_DEBUGGER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEBUGGER)
  1204. #define DUK_HTHREAD_STRING_DEBUGGER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEBUGGER)
  1205. #define DUK_HEAP_STRING_DEFAULT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEFAULT)
  1206. #define DUK_HTHREAD_STRING_DEFAULT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEFAULT)
  1207. #define DUK_HEAP_STRING_DELETE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DELETE)
  1208. #define DUK_HTHREAD_STRING_DELETE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DELETE)
  1209. #define DUK_HEAP_STRING_DO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DO)
  1210. #define DUK_HTHREAD_STRING_DO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DO)
  1211. #define DUK_HEAP_STRING_ELSE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ELSE)
  1212. #define DUK_HTHREAD_STRING_ELSE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ELSE)
  1213. #define DUK_HEAP_STRING_FINALLY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FINALLY)
  1214. #define DUK_HTHREAD_STRING_FINALLY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FINALLY)
  1215. #define DUK_HEAP_STRING_FOR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FOR)
  1216. #define DUK_HTHREAD_STRING_FOR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FOR)
  1217. #define DUK_HEAP_STRING_LC_FUNCTION(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_FUNCTION)
  1218. #define DUK_HTHREAD_STRING_LC_FUNCTION(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_FUNCTION)
  1219. #define DUK_HEAP_STRING_IF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IF)
  1220. #define DUK_HTHREAD_STRING_IF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IF)
  1221. #define DUK_HEAP_STRING_IN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IN)
  1222. #define DUK_HTHREAD_STRING_IN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IN)
  1223. #define DUK_HEAP_STRING_INSTANCEOF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INSTANCEOF)
  1224. #define DUK_HTHREAD_STRING_INSTANCEOF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INSTANCEOF)
  1225. #define DUK_HEAP_STRING_NEW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NEW)
  1226. #define DUK_HTHREAD_STRING_NEW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NEW)
  1227. #define DUK_HEAP_STRING_RETURN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_RETURN)
  1228. #define DUK_HTHREAD_STRING_RETURN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_RETURN)
  1229. #define DUK_HEAP_STRING_SWITCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SWITCH)
  1230. #define DUK_HTHREAD_STRING_SWITCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SWITCH)
  1231. #define DUK_HEAP_STRING_THIS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_THIS)
  1232. #define DUK_HTHREAD_STRING_THIS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_THIS)
  1233. #define DUK_HEAP_STRING_THROW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_THROW)
  1234. #define DUK_HTHREAD_STRING_THROW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_THROW)
  1235. #define DUK_HEAP_STRING_TRY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TRY)
  1236. #define DUK_HTHREAD_STRING_TRY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TRY)
  1237. #define DUK_HEAP_STRING_TYPEOF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TYPEOF)
  1238. #define DUK_HTHREAD_STRING_TYPEOF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TYPEOF)
  1239. #define DUK_HEAP_STRING_VAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VAR)
  1240. #define DUK_HTHREAD_STRING_VAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VAR)
  1241. #define DUK_HEAP_STRING_VOID(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VOID)
  1242. #define DUK_HTHREAD_STRING_VOID(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VOID)
  1243. #define DUK_HEAP_STRING_WHILE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_WHILE)
  1244. #define DUK_HTHREAD_STRING_WHILE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_WHILE)
  1245. #define DUK_HEAP_STRING_WITH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_WITH)
  1246. #define DUK_HTHREAD_STRING_WITH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_WITH)
  1247. #define DUK_HEAP_STRING_CLASS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CLASS)
  1248. #define DUK_HTHREAD_STRING_CLASS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CLASS)
  1249. #define DUK_HEAP_STRING_CONST(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONST)
  1250. #define DUK_HTHREAD_STRING_CONST(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONST)
  1251. #define DUK_HEAP_STRING_ENUM(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENUM)
  1252. #define DUK_HTHREAD_STRING_ENUM(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENUM)
  1253. #define DUK_HEAP_STRING_EXPORT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EXPORT)
  1254. #define DUK_HTHREAD_STRING_EXPORT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EXPORT)
  1255. #define DUK_HEAP_STRING_EXTENDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EXTENDS)
  1256. #define DUK_HTHREAD_STRING_EXTENDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EXTENDS)
  1257. #define DUK_HEAP_STRING_IMPORT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IMPORT)
  1258. #define DUK_HTHREAD_STRING_IMPORT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IMPORT)
  1259. #define DUK_HEAP_STRING_SUPER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SUPER)
  1260. #define DUK_HTHREAD_STRING_SUPER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SUPER)
  1261. #define DUK_HEAP_STRING_LC_NULL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_NULL)
  1262. #define DUK_HTHREAD_STRING_LC_NULL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_NULL)
  1263. #define DUK_HEAP_STRING_TRUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TRUE)
  1264. #define DUK_HTHREAD_STRING_TRUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TRUE)
  1265. #define DUK_HEAP_STRING_FALSE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FALSE)
  1266. #define DUK_HTHREAD_STRING_FALSE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FALSE)
  1267. #define DUK_HEAP_STRING_IMPLEMENTS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IMPLEMENTS)
  1268. #define DUK_HTHREAD_STRING_IMPLEMENTS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IMPLEMENTS)
  1269. #define DUK_HEAP_STRING_INTERFACE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INTERFACE)
  1270. #define DUK_HTHREAD_STRING_INTERFACE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INTERFACE)
  1271. #define DUK_HEAP_STRING_LET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LET)
  1272. #define DUK_HTHREAD_STRING_LET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LET)
  1273. #define DUK_HEAP_STRING_PACKAGE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PACKAGE)
  1274. #define DUK_HTHREAD_STRING_PACKAGE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PACKAGE)
  1275. #define DUK_HEAP_STRING_PRIVATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PRIVATE)
  1276. #define DUK_HTHREAD_STRING_PRIVATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PRIVATE)
  1277. #define DUK_HEAP_STRING_PROTECTED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PROTECTED)
  1278. #define DUK_HTHREAD_STRING_PROTECTED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PROTECTED)
  1279. #define DUK_HEAP_STRING_PUBLIC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PUBLIC)
  1280. #define DUK_HTHREAD_STRING_PUBLIC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PUBLIC)
  1281. #define DUK_HEAP_STRING_STATIC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_STATIC)
  1282. #define DUK_HTHREAD_STRING_STATIC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_STATIC)
  1283. #define DUK_HEAP_STRING_YIELD(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_YIELD)
  1284. #define DUK_HTHREAD_STRING_YIELD(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_YIELD)
  1285. #define DUK_HEAP_NUM_STRINGS 336
  1286. #define DUK_STRIDX_START_RESERVED 291
  1287. #define DUK_STRIDX_START_STRICT_RESERVED 327
  1288. #define DUK_STRIDX_END_RESERVED 336 /* exclusive endpoint */
  1289. #if !defined(DUK_SINGLE_FILE)
  1290. DUK_INTERNAL_DECL const duk_c_function duk_bi_native_functions[128];
  1291. DUK_INTERNAL_DECL const duk_uint8_t duk_builtins_data[1341];
  1292. #ifdef DUK_USE_BUILTIN_INITJS
  1293. DUK_INTERNAL_DECL const duk_uint8_t duk_initjs_data[187];
  1294. #endif /* DUK_USE_BUILTIN_INITJS */
  1295. #endif /* !DUK_SINGLE_FILE */
  1296. #define DUK_BUILTINS_DATA_LENGTH 1341
  1297. #ifdef DUK_USE_BUILTIN_INITJS
  1298. #define DUK_BUILTIN_INITJS_DATA_LENGTH 187
  1299. #endif /* DUK_USE_BUILTIN_INITJS */
  1300. #define DUK_BIDX_GLOBAL 0
  1301. #define DUK_BIDX_GLOBAL_ENV 1
  1302. #define DUK_BIDX_OBJECT_CONSTRUCTOR 2
  1303. #define DUK_BIDX_OBJECT_PROTOTYPE 3
  1304. #define DUK_BIDX_FUNCTION_CONSTRUCTOR 4
  1305. #define DUK_BIDX_FUNCTION_PROTOTYPE 5
  1306. #define DUK_BIDX_ARRAY_CONSTRUCTOR 6
  1307. #define DUK_BIDX_ARRAY_PROTOTYPE 7
  1308. #define DUK_BIDX_STRING_CONSTRUCTOR 8
  1309. #define DUK_BIDX_STRING_PROTOTYPE 9
  1310. #define DUK_BIDX_BOOLEAN_CONSTRUCTOR 10
  1311. #define DUK_BIDX_BOOLEAN_PROTOTYPE 11
  1312. #define DUK_BIDX_NUMBER_CONSTRUCTOR 12
  1313. #define DUK_BIDX_NUMBER_PROTOTYPE 13
  1314. #define DUK_BIDX_DATE_CONSTRUCTOR 14
  1315. #define DUK_BIDX_DATE_PROTOTYPE 15
  1316. #define DUK_BIDX_REGEXP_CONSTRUCTOR 16
  1317. #define DUK_BIDX_REGEXP_PROTOTYPE 17
  1318. #define DUK_BIDX_ERROR_CONSTRUCTOR 18
  1319. #define DUK_BIDX_ERROR_PROTOTYPE 19
  1320. #define DUK_BIDX_EVAL_ERROR_CONSTRUCTOR 20
  1321. #define DUK_BIDX_EVAL_ERROR_PROTOTYPE 21
  1322. #define DUK_BIDX_RANGE_ERROR_CONSTRUCTOR 22
  1323. #define DUK_BIDX_RANGE_ERROR_PROTOTYPE 23
  1324. #define DUK_BIDX_REFERENCE_ERROR_CONSTRUCTOR 24
  1325. #define DUK_BIDX_REFERENCE_ERROR_PROTOTYPE 25
  1326. #define DUK_BIDX_SYNTAX_ERROR_CONSTRUCTOR 26
  1327. #define DUK_BIDX_SYNTAX_ERROR_PROTOTYPE 27
  1328. #define DUK_BIDX_TYPE_ERROR_CONSTRUCTOR 28
  1329. #define DUK_BIDX_TYPE_ERROR_PROTOTYPE 29
  1330. #define DUK_BIDX_URI_ERROR_CONSTRUCTOR 30
  1331. #define DUK_BIDX_URI_ERROR_PROTOTYPE 31
  1332. #define DUK_BIDX_MATH 32
  1333. #define DUK_BIDX_JSON 33
  1334. #define DUK_BIDX_TYPE_ERROR_THROWER 34
  1335. #define DUK_BIDX_PROXY_CONSTRUCTOR 35
  1336. #define DUK_BIDX_DUKTAPE 36
  1337. #define DUK_BIDX_THREAD_CONSTRUCTOR 37
  1338. #define DUK_BIDX_THREAD_PROTOTYPE 38
  1339. #define DUK_BIDX_BUFFER_CONSTRUCTOR 39
  1340. #define DUK_BIDX_BUFFER_PROTOTYPE 40
  1341. #define DUK_BIDX_POINTER_CONSTRUCTOR 41
  1342. #define DUK_BIDX_POINTER_PROTOTYPE 42
  1343. #define DUK_BIDX_LOGGER_CONSTRUCTOR 43
  1344. #define DUK_BIDX_LOGGER_PROTOTYPE 44
  1345. #define DUK_BIDX_DOUBLE_ERROR 45
  1346. #define DUK_NUM_BUILTINS 46
  1347. #elif defined(DUK_USE_DOUBLE_BE)
  1348. #if !defined(DUK_SINGLE_FILE)
  1349. DUK_INTERNAL_DECL const duk_uint8_t duk_strings_data[1943];
  1350. #endif /* !DUK_SINGLE_FILE */
  1351. #define DUK_STRDATA_DATA_LENGTH 1943
  1352. #define DUK_STRDATA_MAX_STRLEN 24
  1353. #define DUK_STRIDX_UC_LOGGER 0 /* 'Logger' */
  1354. #define DUK_STRIDX_UC_THREAD 1 /* 'Thread' */
  1355. #define DUK_STRIDX_UC_POINTER 2 /* 'Pointer' */
  1356. #define DUK_STRIDX_UC_BUFFER 3 /* 'Buffer' */
  1357. #define DUK_STRIDX_DEC_ENV 4 /* 'DecEnv' */
  1358. #define DUK_STRIDX_OBJ_ENV 5 /* 'ObjEnv' */
  1359. #define DUK_STRIDX_EMPTY_STRING 6 /* '' */
  1360. #define DUK_STRIDX_GLOBAL 7 /* 'global' */
  1361. #define DUK_STRIDX_UC_ARGUMENTS 8 /* 'Arguments' */
  1362. #define DUK_STRIDX_JSON 9 /* 'JSON' */
  1363. #define DUK_STRIDX_MATH 10 /* 'Math' */
  1364. #define DUK_STRIDX_UC_ERROR 11 /* 'Error' */
  1365. #define DUK_STRIDX_REG_EXP 12 /* 'RegExp' */
  1366. #define DUK_STRIDX_DATE 13 /* 'Date' */
  1367. #define DUK_STRIDX_UC_NUMBER 14 /* 'Number' */
  1368. #define DUK_STRIDX_UC_BOOLEAN 15 /* 'Boolean' */
  1369. #define DUK_STRIDX_UC_STRING 16 /* 'String' */
  1370. #define DUK_STRIDX_ARRAY 17 /* 'Array' */
  1371. #define DUK_STRIDX_UC_FUNCTION 18 /* 'Function' */
  1372. #define DUK_STRIDX_UC_OBJECT 19 /* 'Object' */
  1373. #define DUK_STRIDX_UC_NULL 20 /* 'Null' */
  1374. #define DUK_STRIDX_UC_UNDEFINED 21 /* 'Undefined' */
  1375. #define DUK_STRIDX_JSON_EXT_FUNCTION2 22 /* '{_func:true}' */
  1376. #define DUK_STRIDX_JSON_EXT_FUNCTION1 23 /* '{"_func":true}' */
  1377. #define DUK_STRIDX_JSON_EXT_NEGINF 24 /* '{"_ninf":true}' */
  1378. #define DUK_STRIDX_JSON_EXT_POSINF 25 /* '{"_inf":true}' */
  1379. #define DUK_STRIDX_JSON_EXT_NAN 26 /* '{"_nan":true}' */
  1380. #define DUK_STRIDX_JSON_EXT_UNDEFINED 27 /* '{"_undef":true}' */
  1381. #define DUK_STRIDX_TO_LOG_STRING 28 /* 'toLogString' */
  1382. #define DUK_STRIDX_CLOG 29 /* 'clog' */
  1383. #define DUK_STRIDX_LC_L 30 /* 'l' */
  1384. #define DUK_STRIDX_LC_N 31 /* 'n' */
  1385. #define DUK_STRIDX_LC_FATAL 32 /* 'fatal' */
  1386. #define DUK_STRIDX_LC_ERROR 33 /* 'error' */
  1387. #define DUK_STRIDX_LC_WARN 34 /* 'warn' */
  1388. #define DUK_STRIDX_LC_DEBUG 35 /* 'debug' */
  1389. #define DUK_STRIDX_LC_TRACE 36 /* 'trace' */
  1390. #define DUK_STRIDX_RAW 37 /* 'raw' */
  1391. #define DUK_STRIDX_FMT 38 /* 'fmt' */
  1392. #define DUK_STRIDX_CURRENT 39 /* 'current' */
  1393. #define DUK_STRIDX_RESUME 40 /* 'resume' */
  1394. #define DUK_STRIDX_COMPACT 41 /* 'compact' */
  1395. #define DUK_STRIDX_JC 42 /* 'jc' */
  1396. #define DUK_STRIDX_JX 43 /* 'jx' */
  1397. #define DUK_STRIDX_BASE64 44 /* 'base64' */
  1398. #define DUK_STRIDX_HEX 45 /* 'hex' */
  1399. #define DUK_STRIDX_DEC 46 /* 'dec' */
  1400. #define DUK_STRIDX_ENC 47 /* 'enc' */
  1401. #define DUK_STRIDX_FIN 48 /* 'fin' */
  1402. #define DUK_STRIDX_GC 49 /* 'gc' */
  1403. #define DUK_STRIDX_ACT 50 /* 'act' */
  1404. #define DUK_STRIDX_LC_INFO 51 /* 'info' */
  1405. #define DUK_STRIDX_VERSION 52 /* 'version' */
  1406. #define DUK_STRIDX_ENV 53 /* 'env' */
  1407. #define DUK_STRIDX_MOD_LOADED 54 /* 'modLoaded' */
  1408. #define DUK_STRIDX_MOD_SEARCH 55 /* 'modSearch' */
  1409. #define DUK_STRIDX_ERR_THROW 56 /* 'errThrow' */
  1410. #define DUK_STRIDX_ERR_CREATE 57 /* 'errCreate' */
  1411. #define DUK_STRIDX_COMPILE 58 /* 'compile' */
  1412. #define DUK_STRIDX_INT_REGBASE 59 /* '\x00Regbase' */
  1413. #define DUK_STRIDX_INT_THREAD 60 /* '\x00Thread' */
  1414. #define DUK_STRIDX_INT_HANDLER 61 /* '\x00Handler' */
  1415. #define DUK_STRIDX_INT_FINALIZER 62 /* '\x00Finalizer' */
  1416. #define DUK_STRIDX_INT_CALLEE 63 /* '\x00Callee' */
  1417. #define DUK_STRIDX_INT_MAP 64 /* '\x00Map' */
  1418. #define DUK_STRIDX_INT_ARGS 65 /* '\x00Args' */
  1419. #define DUK_STRIDX_INT_THIS 66 /* '\x00This' */
  1420. #define DUK_STRIDX_INT_PC2LINE 67 /* '\x00Pc2line' */
  1421. #define DUK_STRIDX_INT_SOURCE 68 /* '\x00Source' */
  1422. #define DUK_STRIDX_INT_VARENV 69 /* '\x00Varenv' */
  1423. #define DUK_STRIDX_INT_LEXENV 70 /* '\x00Lexenv' */
  1424. #define DUK_STRIDX_INT_VARMAP 71 /* '\x00Varmap' */
  1425. #define DUK_STRIDX_INT_FORMALS 72 /* '\x00Formals' */
  1426. #define DUK_STRIDX_INT_BYTECODE 73 /* '\x00Bytecode' */
  1427. #define DUK_STRIDX_INT_NEXT 74 /* '\x00Next' */
  1428. #define DUK_STRIDX_INT_TARGET 75 /* '\x00Target' */
  1429. #define DUK_STRIDX_INT_VALUE 76 /* '\x00Value' */
  1430. #define DUK_STRIDX_LC_POINTER 77 /* 'pointer' */
  1431. #define DUK_STRIDX_LC_BUFFER 78 /* 'buffer' */
  1432. #define DUK_STRIDX_INT_TRACEDATA 79 /* '\x00Tracedata' */
  1433. #define DUK_STRIDX_LINE_NUMBER 80 /* 'lineNumber' */
  1434. #define DUK_STRIDX_FILE_NAME 81 /* 'fileName' */
  1435. #define DUK_STRIDX_PC 82 /* 'pc' */
  1436. #define DUK_STRIDX_STACK 83 /* 'stack' */
  1437. #define DUK_STRIDX_THROW_TYPE_ERROR 84 /* 'ThrowTypeError' */
  1438. #define DUK_STRIDX_DUKTAPE 85 /* 'Duktape' */
  1439. #define DUK_STRIDX_ID 86 /* 'id' */
  1440. #define DUK_STRIDX_REQUIRE 87 /* 'require' */
  1441. #define DUK_STRIDX___PROTO__ 88 /* '__proto__' */
  1442. #define DUK_STRIDX_SET_PROTOTYPE_OF 89 /* 'setPrototypeOf' */
  1443. #define DUK_STRIDX_OWN_KEYS 90 /* 'ownKeys' */
  1444. #define DUK_STRIDX_ENUMERATE 91 /* 'enumerate' */
  1445. #define DUK_STRIDX_DELETE_PROPERTY 92 /* 'deleteProperty' */
  1446. #define DUK_STRIDX_HAS 93 /* 'has' */
  1447. #define DUK_STRIDX_PROXY 94 /* 'Proxy' */
  1448. #define DUK_STRIDX_CALLEE 95 /* 'callee' */
  1449. #define DUK_STRIDX_INVALID_DATE 96 /* 'Invalid Date' */
  1450. #define DUK_STRIDX_BRACKETED_ELLIPSIS 97 /* '[...]' */
  1451. #define DUK_STRIDX_NEWLINE_TAB 98 /* '\n\t' */
  1452. #define DUK_STRIDX_SPACE 99 /* ' ' */
  1453. #define DUK_STRIDX_COMMA 100 /* ',' */
  1454. #define DUK_STRIDX_MINUS_ZERO 101 /* '-0' */
  1455. #define DUK_STRIDX_PLUS_ZERO 102 /* '+0' */
  1456. #define DUK_STRIDX_ZERO 103 /* '0' */
  1457. #define DUK_STRIDX_MINUS_INFINITY 104 /* '-Infinity' */
  1458. #define DUK_STRIDX_PLUS_INFINITY 105 /* '+Infinity' */
  1459. #define DUK_STRIDX_INFINITY 106 /* 'Infinity' */
  1460. #define DUK_STRIDX_LC_OBJECT 107 /* 'object' */
  1461. #define DUK_STRIDX_LC_STRING 108 /* 'string' */
  1462. #define DUK_STRIDX_LC_NUMBER 109 /* 'number' */
  1463. #define DUK_STRIDX_LC_BOOLEAN 110 /* 'boolean' */
  1464. #define DUK_STRIDX_LC_UNDEFINED 111 /* 'undefined' */
  1465. #define DUK_STRIDX_STRINGIFY 112 /* 'stringify' */
  1466. #define DUK_STRIDX_TAN 113 /* 'tan' */
  1467. #define DUK_STRIDX_SQRT 114 /* 'sqrt' */
  1468. #define DUK_STRIDX_SIN 115 /* 'sin' */
  1469. #define DUK_STRIDX_ROUND 116 /* 'round' */
  1470. #define DUK_STRIDX_RANDOM 117 /* 'random' */
  1471. #define DUK_STRIDX_POW 118 /* 'pow' */
  1472. #define DUK_STRIDX_MIN 119 /* 'min' */
  1473. #define DUK_STRIDX_MAX 120 /* 'max' */
  1474. #define DUK_STRIDX_LOG 121 /* 'log' */
  1475. #define DUK_STRIDX_FLOOR 122 /* 'floor' */
  1476. #define DUK_STRIDX_EXP 123 /* 'exp' */
  1477. #define DUK_STRIDX_COS 124 /* 'cos' */
  1478. #define DUK_STRIDX_CEIL 125 /* 'ceil' */
  1479. #define DUK_STRIDX_ATAN2 126 /* 'atan2' */
  1480. #define DUK_STRIDX_ATAN 127 /* 'atan' */
  1481. #define DUK_STRIDX_ASIN 128 /* 'asin' */
  1482. #define DUK_STRIDX_ACOS 129 /* 'acos' */
  1483. #define DUK_STRIDX_ABS 130 /* 'abs' */
  1484. #define DUK_STRIDX_SQRT2 131 /* 'SQRT2' */
  1485. #define DUK_STRIDX_SQRT1_2 132 /* 'SQRT1_2' */
  1486. #define DUK_STRIDX_PI 133 /* 'PI' */
  1487. #define DUK_STRIDX_LOG10E 134 /* 'LOG10E' */
  1488. #define DUK_STRIDX_LOG2E 135 /* 'LOG2E' */
  1489. #define DUK_STRIDX_LN2 136 /* 'LN2' */
  1490. #define DUK_STRIDX_LN10 137 /* 'LN10' */
  1491. #define DUK_STRIDX_E 138 /* 'E' */
  1492. #define DUK_STRIDX_MESSAGE 139 /* 'message' */
  1493. #define DUK_STRIDX_NAME 140 /* 'name' */
  1494. #define DUK_STRIDX_INPUT 141 /* 'input' */
  1495. #define DUK_STRIDX_INDEX 142 /* 'index' */
  1496. #define DUK_STRIDX_ESCAPED_EMPTY_REGEXP 143 /* '(?:)' */
  1497. #define DUK_STRIDX_LAST_INDEX 144 /* 'lastIndex' */
  1498. #define DUK_STRIDX_MULTILINE 145 /* 'multiline' */
  1499. #define DUK_STRIDX_IGNORE_CASE 146 /* 'ignoreCase' */
  1500. #define DUK_STRIDX_SOURCE 147 /* 'source' */
  1501. #define DUK_STRIDX_TEST 148 /* 'test' */
  1502. #define DUK_STRIDX_EXEC 149 /* 'exec' */
  1503. #define DUK_STRIDX_TO_GMT_STRING 150 /* 'toGMTString' */
  1504. #define DUK_STRIDX_SET_YEAR 151 /* 'setYear' */
  1505. #define DUK_STRIDX_GET_YEAR 152 /* 'getYear' */
  1506. #define DUK_STRIDX_TO_JSON 153 /* 'toJSON' */
  1507. #define DUK_STRIDX_TO_ISO_STRING 154 /* 'toISOString' */
  1508. #define DUK_STRIDX_TO_UTC_STRING 155 /* 'toUTCString' */
  1509. #define DUK_STRIDX_SET_UTC_FULL_YEAR 156 /* 'setUTCFullYear' */
  1510. #define DUK_STRIDX_SET_FULL_YEAR 157 /* 'setFullYear' */
  1511. #define DUK_STRIDX_SET_UTC_MONTH 158 /* 'setUTCMonth' */
  1512. #define DUK_STRIDX_SET_MONTH 159 /* 'setMonth' */
  1513. #define DUK_STRIDX_SET_UTC_DATE 160 /* 'setUTCDate' */
  1514. #define DUK_STRIDX_SET_DATE 161 /* 'setDate' */
  1515. #define DUK_STRIDX_SET_UTC_HOURS 162 /* 'setUTCHours' */
  1516. #define DUK_STRIDX_SET_HOURS 163 /* 'setHours' */
  1517. #define DUK_STRIDX_SET_UTC_MINUTES 164 /* 'setUTCMinutes' */
  1518. #define DUK_STRIDX_SET_MINUTES 165 /* 'setMinutes' */
  1519. #define DUK_STRIDX_SET_UTC_SECONDS 166 /* 'setUTCSeconds' */
  1520. #define DUK_STRIDX_SET_SECONDS 167 /* 'setSeconds' */
  1521. #define DUK_STRIDX_SET_UTC_MILLISECONDS 168 /* 'setUTCMilliseconds' */
  1522. #define DUK_STRIDX_SET_MILLISECONDS 169 /* 'setMilliseconds' */
  1523. #define DUK_STRIDX_SET_TIME 170 /* 'setTime' */
  1524. #define DUK_STRIDX_GET_TIMEZONE_OFFSET 171 /* 'getTimezoneOffset' */
  1525. #define DUK_STRIDX_GET_UTC_MILLISECONDS 172 /* 'getUTCMilliseconds' */
  1526. #define DUK_STRIDX_GET_MILLISECONDS 173 /* 'getMilliseconds' */
  1527. #define DUK_STRIDX_GET_UTC_SECONDS 174 /* 'getUTCSeconds' */
  1528. #define DUK_STRIDX_GET_SECONDS 175 /* 'getSeconds' */
  1529. #define DUK_STRIDX_GET_UTC_MINUTES 176 /* 'getUTCMinutes' */
  1530. #define DUK_STRIDX_GET_MINUTES 177 /* 'getMinutes' */
  1531. #define DUK_STRIDX_GET_UTC_HOURS 178 /* 'getUTCHours' */
  1532. #define DUK_STRIDX_GET_HOURS 179 /* 'getHours' */
  1533. #define DUK_STRIDX_GET_UTC_DAY 180 /* 'getUTCDay' */
  1534. #define DUK_STRIDX_GET_DAY 181 /* 'getDay' */
  1535. #define DUK_STRIDX_GET_UTC_DATE 182 /* 'getUTCDate' */
  1536. #define DUK_STRIDX_GET_DATE 183 /* 'getDate' */
  1537. #define DUK_STRIDX_GET_UTC_MONTH 184 /* 'getUTCMonth' */
  1538. #define DUK_STRIDX_GET_MONTH 185 /* 'getMonth' */
  1539. #define DUK_STRIDX_GET_UTC_FULL_YEAR 186 /* 'getUTCFullYear' */
  1540. #define DUK_STRIDX_GET_FULL_YEAR 187 /* 'getFullYear' */
  1541. #define DUK_STRIDX_GET_TIME 188 /* 'getTime' */
  1542. #define DUK_STRIDX_TO_LOCALE_TIME_STRING 189 /* 'toLocaleTimeString' */
  1543. #define DUK_STRIDX_TO_LOCALE_DATE_STRING 190 /* 'toLocaleDateString' */
  1544. #define DUK_STRIDX_TO_TIME_STRING 191 /* 'toTimeString' */
  1545. #define DUK_STRIDX_TO_DATE_STRING 192 /* 'toDateString' */
  1546. #define DUK_STRIDX_NOW 193 /* 'now' */
  1547. #define DUK_STRIDX_UTC 194 /* 'UTC' */
  1548. #define DUK_STRIDX_PARSE 195 /* 'parse' */
  1549. #define DUK_STRIDX_TO_PRECISION 196 /* 'toPrecision' */
  1550. #define DUK_STRIDX_TO_EXPONENTIAL 197 /* 'toExponential' */
  1551. #define DUK_STRIDX_TO_FIXED 198 /* 'toFixed' */
  1552. #define DUK_STRIDX_POSITIVE_INFINITY 199 /* 'POSITIVE_INFINITY' */
  1553. #define DUK_STRIDX_NEGATIVE_INFINITY 200 /* 'NEGATIVE_INFINITY' */
  1554. #define DUK_STRIDX_NAN 201 /* 'NaN' */
  1555. #define DUK_STRIDX_MIN_VALUE 202 /* 'MIN_VALUE' */
  1556. #define DUK_STRIDX_MAX_VALUE 203 /* 'MAX_VALUE' */
  1557. #define DUK_STRIDX_SUBSTR 204 /* 'substr' */
  1558. #define DUK_STRIDX_TRIM 205 /* 'trim' */
  1559. #define DUK_STRIDX_TO_LOCALE_UPPER_CASE 206 /* 'toLocaleUpperCase' */
  1560. #define DUK_STRIDX_TO_UPPER_CASE 207 /* 'toUpperCase' */
  1561. #define DUK_STRIDX_TO_LOCALE_LOWER_CASE 208 /* 'toLocaleLowerCase' */
  1562. #define DUK_STRIDX_TO_LOWER_CASE 209 /* 'toLowerCase' */
  1563. #define DUK_STRIDX_SUBSTRING 210 /* 'substring' */
  1564. #define DUK_STRIDX_SPLIT 211 /* 'split' */
  1565. #define DUK_STRIDX_SEARCH 212 /* 'search' */
  1566. #define DUK_STRIDX_REPLACE 213 /* 'replace' */
  1567. #define DUK_STRIDX_MATCH 214 /* 'match' */
  1568. #define DUK_STRIDX_LOCALE_COMPARE 215 /* 'localeCompare' */
  1569. #define DUK_STRIDX_CHAR_CODE_AT 216 /* 'charCodeAt' */
  1570. #define DUK_STRIDX_CHAR_AT 217 /* 'charAt' */
  1571. #define DUK_STRIDX_FROM_CHAR_CODE 218 /* 'fromCharCode' */
  1572. #define DUK_STRIDX_REDUCE_RIGHT 219 /* 'reduceRight' */
  1573. #define DUK_STRIDX_REDUCE 220 /* 'reduce' */
  1574. #define DUK_STRIDX_FILTER 221 /* 'filter' */
  1575. #define DUK_STRIDX_MAP 222 /* 'map' */
  1576. #define DUK_STRIDX_FOR_EACH 223 /* 'forEach' */
  1577. #define DUK_STRIDX_SOME 224 /* 'some' */
  1578. #define DUK_STRIDX_EVERY 225 /* 'every' */
  1579. #define DUK_STRIDX_LAST_INDEX_OF 226 /* 'lastIndexOf' */
  1580. #define DUK_STRIDX_INDEX_OF 227 /* 'indexOf' */
  1581. #define DUK_STRIDX_UNSHIFT 228 /* 'unshift' */
  1582. #define DUK_STRIDX_SPLICE 229 /* 'splice' */
  1583. #define DUK_STRIDX_SORT 230 /* 'sort' */
  1584. #define DUK_STRIDX_SLICE 231 /* 'slice' */
  1585. #define DUK_STRIDX_SHIFT 232 /* 'shift' */
  1586. #define DUK_STRIDX_REVERSE 233 /* 'reverse' */
  1587. #define DUK_STRIDX_PUSH 234 /* 'push' */
  1588. #define DUK_STRIDX_POP 235 /* 'pop' */
  1589. #define DUK_STRIDX_JOIN 236 /* 'join' */
  1590. #define DUK_STRIDX_CONCAT 237 /* 'concat' */
  1591. #define DUK_STRIDX_IS_ARRAY 238 /* 'isArray' */
  1592. #define DUK_STRIDX_LC_ARGUMENTS 239 /* 'arguments' */
  1593. #define DUK_STRIDX_CALLER 240 /* 'caller' */
  1594. #define DUK_STRIDX_BIND 241 /* 'bind' */
  1595. #define DUK_STRIDX_CALL 242 /* 'call' */
  1596. #define DUK_STRIDX_APPLY 243 /* 'apply' */
  1597. #define DUK_STRIDX_PROPERTY_IS_ENUMERABLE 244 /* 'propertyIsEnumerable' */
  1598. #define DUK_STRIDX_IS_PROTOTYPE_OF 245 /* 'isPrototypeOf' */
  1599. #define DUK_STRIDX_HAS_OWN_PROPERTY 246 /* 'hasOwnProperty' */
  1600. #define DUK_STRIDX_VALUE_OF 247 /* 'valueOf' */
  1601. #define DUK_STRIDX_TO_LOCALE_STRING 248 /* 'toLocaleString' */
  1602. #define DUK_STRIDX_TO_STRING 249 /* 'toString' */
  1603. #define DUK_STRIDX_CONSTRUCTOR 250 /* 'constructor' */
  1604. #define DUK_STRIDX_SET 251 /* 'set' */
  1605. #define DUK_STRIDX_GET 252 /* 'get' */
  1606. #define DUK_STRIDX_ENUMERABLE 253 /* 'enumerable' */
  1607. #define DUK_STRIDX_CONFIGURABLE 254 /* 'configurable' */
  1608. #define DUK_STRIDX_WRITABLE 255 /* 'writable' */
  1609. #define DUK_STRIDX_VALUE 256 /* 'value' */
  1610. #define DUK_STRIDX_KEYS 257 /* 'keys' */
  1611. #define DUK_STRIDX_IS_EXTENSIBLE 258 /* 'isExtensible' */
  1612. #define DUK_STRIDX_IS_FROZEN 259 /* 'isFrozen' */
  1613. #define DUK_STRIDX_IS_SEALED 260 /* 'isSealed' */
  1614. #define DUK_STRIDX_PREVENT_EXTENSIONS 261 /* 'preventExtensions' */
  1615. #define DUK_STRIDX_FREEZE 262 /* 'freeze' */
  1616. #define DUK_STRIDX_SEAL 263 /* 'seal' */
  1617. #define DUK_STRIDX_DEFINE_PROPERTIES 264 /* 'defineProperties' */
  1618. #define DUK_STRIDX_DEFINE_PROPERTY 265 /* 'defineProperty' */
  1619. #define DUK_STRIDX_CREATE 266 /* 'create' */
  1620. #define DUK_STRIDX_GET_OWN_PROPERTY_NAMES 267 /* 'getOwnPropertyNames' */
  1621. #define DUK_STRIDX_GET_OWN_PROPERTY_DESCRIPTOR 268 /* 'getOwnPropertyDescriptor' */
  1622. #define DUK_STRIDX_GET_PROTOTYPE_OF 269 /* 'getPrototypeOf' */
  1623. #define DUK_STRIDX_PROTOTYPE 270 /* 'prototype' */
  1624. #define DUK_STRIDX_LENGTH 271 /* 'length' */
  1625. #define DUK_STRIDX_ALERT 272 /* 'alert' */
  1626. #define DUK_STRIDX_PRINT 273 /* 'print' */
  1627. #define DUK_STRIDX_UNESCAPE 274 /* 'unescape' */
  1628. #define DUK_STRIDX_ESCAPE 275 /* 'escape' */
  1629. #define DUK_STRIDX_ENCODE_URI_COMPONENT 276 /* 'encodeURIComponent' */
  1630. #define DUK_STRIDX_ENCODE_URI 277 /* 'encodeURI' */
  1631. #define DUK_STRIDX_DECODE_URI_COMPONENT 278 /* 'decodeURIComponent' */
  1632. #define DUK_STRIDX_DECODE_URI 279 /* 'decodeURI' */
  1633. #define DUK_STRIDX_IS_FINITE 280 /* 'isFinite' */
  1634. #define DUK_STRIDX_IS_NAN 281 /* 'isNaN' */
  1635. #define DUK_STRIDX_PARSE_FLOAT 282 /* 'parseFloat' */
  1636. #define DUK_STRIDX_PARSE_INT 283 /* 'parseInt' */
  1637. #define DUK_STRIDX_EVAL 284 /* 'eval' */
  1638. #define DUK_STRIDX_URI_ERROR 285 /* 'URIError' */
  1639. #define DUK_STRIDX_TYPE_ERROR 286 /* 'TypeError' */
  1640. #define DUK_STRIDX_SYNTAX_ERROR 287 /* 'SyntaxError' */
  1641. #define DUK_STRIDX_REFERENCE_ERROR 288 /* 'ReferenceError' */
  1642. #define DUK_STRIDX_RANGE_ERROR 289 /* 'RangeError' */
  1643. #define DUK_STRIDX_EVAL_ERROR 290 /* 'EvalError' */
  1644. #define DUK_STRIDX_BREAK 291 /* 'break' */
  1645. #define DUK_STRIDX_CASE 292 /* 'case' */
  1646. #define DUK_STRIDX_CATCH 293 /* 'catch' */
  1647. #define DUK_STRIDX_CONTINUE 294 /* 'continue' */
  1648. #define DUK_STRIDX_DEBUGGER 295 /* 'debugger' */
  1649. #define DUK_STRIDX_DEFAULT 296 /* 'default' */
  1650. #define DUK_STRIDX_DELETE 297 /* 'delete' */
  1651. #define DUK_STRIDX_DO 298 /* 'do' */
  1652. #define DUK_STRIDX_ELSE 299 /* 'else' */
  1653. #define DUK_STRIDX_FINALLY 300 /* 'finally' */
  1654. #define DUK_STRIDX_FOR 301 /* 'for' */
  1655. #define DUK_STRIDX_LC_FUNCTION 302 /* 'function' */
  1656. #define DUK_STRIDX_IF 303 /* 'if' */
  1657. #define DUK_STRIDX_IN 304 /* 'in' */
  1658. #define DUK_STRIDX_INSTANCEOF 305 /* 'instanceof' */
  1659. #define DUK_STRIDX_NEW 306 /* 'new' */
  1660. #define DUK_STRIDX_RETURN 307 /* 'return' */
  1661. #define DUK_STRIDX_SWITCH 308 /* 'switch' */
  1662. #define DUK_STRIDX_THIS 309 /* 'this' */
  1663. #define DUK_STRIDX_THROW 310 /* 'throw' */
  1664. #define DUK_STRIDX_TRY 311 /* 'try' */
  1665. #define DUK_STRIDX_TYPEOF 312 /* 'typeof' */
  1666. #define DUK_STRIDX_VAR 313 /* 'var' */
  1667. #define DUK_STRIDX_VOID 314 /* 'void' */
  1668. #define DUK_STRIDX_WHILE 315 /* 'while' */
  1669. #define DUK_STRIDX_WITH 316 /* 'with' */
  1670. #define DUK_STRIDX_CLASS 317 /* 'class' */
  1671. #define DUK_STRIDX_CONST 318 /* 'const' */
  1672. #define DUK_STRIDX_ENUM 319 /* 'enum' */
  1673. #define DUK_STRIDX_EXPORT 320 /* 'export' */
  1674. #define DUK_STRIDX_EXTENDS 321 /* 'extends' */
  1675. #define DUK_STRIDX_IMPORT 322 /* 'import' */
  1676. #define DUK_STRIDX_SUPER 323 /* 'super' */
  1677. #define DUK_STRIDX_LC_NULL 324 /* 'null' */
  1678. #define DUK_STRIDX_TRUE 325 /* 'true' */
  1679. #define DUK_STRIDX_FALSE 326 /* 'false' */
  1680. #define DUK_STRIDX_IMPLEMENTS 327 /* 'implements' */
  1681. #define DUK_STRIDX_INTERFACE 328 /* 'interface' */
  1682. #define DUK_STRIDX_LET 329 /* 'let' */
  1683. #define DUK_STRIDX_PACKAGE 330 /* 'package' */
  1684. #define DUK_STRIDX_PRIVATE 331 /* 'private' */
  1685. #define DUK_STRIDX_PROTECTED 332 /* 'protected' */
  1686. #define DUK_STRIDX_PUBLIC 333 /* 'public' */
  1687. #define DUK_STRIDX_STATIC 334 /* 'static' */
  1688. #define DUK_STRIDX_YIELD 335 /* 'yield' */
  1689. #define DUK_HEAP_STRING_UC_LOGGER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_LOGGER)
  1690. #define DUK_HTHREAD_STRING_UC_LOGGER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_LOGGER)
  1691. #define DUK_HEAP_STRING_UC_THREAD(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_THREAD)
  1692. #define DUK_HTHREAD_STRING_UC_THREAD(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_THREAD)
  1693. #define DUK_HEAP_STRING_UC_POINTER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_POINTER)
  1694. #define DUK_HTHREAD_STRING_UC_POINTER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_POINTER)
  1695. #define DUK_HEAP_STRING_UC_BUFFER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_BUFFER)
  1696. #define DUK_HTHREAD_STRING_UC_BUFFER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_BUFFER)
  1697. #define DUK_HEAP_STRING_DEC_ENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEC_ENV)
  1698. #define DUK_HTHREAD_STRING_DEC_ENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEC_ENV)
  1699. #define DUK_HEAP_STRING_OBJ_ENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_OBJ_ENV)
  1700. #define DUK_HTHREAD_STRING_OBJ_ENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_OBJ_ENV)
  1701. #define DUK_HEAP_STRING_EMPTY_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EMPTY_STRING)
  1702. #define DUK_HTHREAD_STRING_EMPTY_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EMPTY_STRING)
  1703. #define DUK_HEAP_STRING_GLOBAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GLOBAL)
  1704. #define DUK_HTHREAD_STRING_GLOBAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GLOBAL)
  1705. #define DUK_HEAP_STRING_UC_ARGUMENTS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_ARGUMENTS)
  1706. #define DUK_HTHREAD_STRING_UC_ARGUMENTS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_ARGUMENTS)
  1707. #define DUK_HEAP_STRING_JSON(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON)
  1708. #define DUK_HTHREAD_STRING_JSON(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON)
  1709. #define DUK_HEAP_STRING_MATH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MATH)
  1710. #define DUK_HTHREAD_STRING_MATH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MATH)
  1711. #define DUK_HEAP_STRING_UC_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_ERROR)
  1712. #define DUK_HTHREAD_STRING_UC_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_ERROR)
  1713. #define DUK_HEAP_STRING_REG_EXP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REG_EXP)
  1714. #define DUK_HTHREAD_STRING_REG_EXP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REG_EXP)
  1715. #define DUK_HEAP_STRING_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DATE)
  1716. #define DUK_HTHREAD_STRING_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DATE)
  1717. #define DUK_HEAP_STRING_UC_NUMBER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_NUMBER)
  1718. #define DUK_HTHREAD_STRING_UC_NUMBER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_NUMBER)
  1719. #define DUK_HEAP_STRING_UC_BOOLEAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_BOOLEAN)
  1720. #define DUK_HTHREAD_STRING_UC_BOOLEAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_BOOLEAN)
  1721. #define DUK_HEAP_STRING_UC_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_STRING)
  1722. #define DUK_HTHREAD_STRING_UC_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_STRING)
  1723. #define DUK_HEAP_STRING_ARRAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ARRAY)
  1724. #define DUK_HTHREAD_STRING_ARRAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ARRAY)
  1725. #define DUK_HEAP_STRING_UC_FUNCTION(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_FUNCTION)
  1726. #define DUK_HTHREAD_STRING_UC_FUNCTION(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_FUNCTION)
  1727. #define DUK_HEAP_STRING_UC_OBJECT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_OBJECT)
  1728. #define DUK_HTHREAD_STRING_UC_OBJECT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_OBJECT)
  1729. #define DUK_HEAP_STRING_UC_NULL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_NULL)
  1730. #define DUK_HTHREAD_STRING_UC_NULL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_NULL)
  1731. #define DUK_HEAP_STRING_UC_UNDEFINED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_UNDEFINED)
  1732. #define DUK_HTHREAD_STRING_UC_UNDEFINED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_UNDEFINED)
  1733. #define DUK_HEAP_STRING_JSON_EXT_FUNCTION2(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_FUNCTION2)
  1734. #define DUK_HTHREAD_STRING_JSON_EXT_FUNCTION2(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_FUNCTION2)
  1735. #define DUK_HEAP_STRING_JSON_EXT_FUNCTION1(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_FUNCTION1)
  1736. #define DUK_HTHREAD_STRING_JSON_EXT_FUNCTION1(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_FUNCTION1)
  1737. #define DUK_HEAP_STRING_JSON_EXT_NEGINF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_NEGINF)
  1738. #define DUK_HTHREAD_STRING_JSON_EXT_NEGINF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_NEGINF)
  1739. #define DUK_HEAP_STRING_JSON_EXT_POSINF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_POSINF)
  1740. #define DUK_HTHREAD_STRING_JSON_EXT_POSINF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_POSINF)
  1741. #define DUK_HEAP_STRING_JSON_EXT_NAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_NAN)
  1742. #define DUK_HTHREAD_STRING_JSON_EXT_NAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_NAN)
  1743. #define DUK_HEAP_STRING_JSON_EXT_UNDEFINED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_UNDEFINED)
  1744. #define DUK_HTHREAD_STRING_JSON_EXT_UNDEFINED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_UNDEFINED)
  1745. #define DUK_HEAP_STRING_TO_LOG_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOG_STRING)
  1746. #define DUK_HTHREAD_STRING_TO_LOG_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOG_STRING)
  1747. #define DUK_HEAP_STRING_CLOG(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CLOG)
  1748. #define DUK_HTHREAD_STRING_CLOG(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CLOG)
  1749. #define DUK_HEAP_STRING_LC_L(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_L)
  1750. #define DUK_HTHREAD_STRING_LC_L(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_L)
  1751. #define DUK_HEAP_STRING_LC_N(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_N)
  1752. #define DUK_HTHREAD_STRING_LC_N(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_N)
  1753. #define DUK_HEAP_STRING_LC_FATAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_FATAL)
  1754. #define DUK_HTHREAD_STRING_LC_FATAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_FATAL)
  1755. #define DUK_HEAP_STRING_LC_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_ERROR)
  1756. #define DUK_HTHREAD_STRING_LC_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_ERROR)
  1757. #define DUK_HEAP_STRING_LC_WARN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_WARN)
  1758. #define DUK_HTHREAD_STRING_LC_WARN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_WARN)
  1759. #define DUK_HEAP_STRING_LC_DEBUG(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_DEBUG)
  1760. #define DUK_HTHREAD_STRING_LC_DEBUG(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_DEBUG)
  1761. #define DUK_HEAP_STRING_LC_TRACE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_TRACE)
  1762. #define DUK_HTHREAD_STRING_LC_TRACE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_TRACE)
  1763. #define DUK_HEAP_STRING_RAW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_RAW)
  1764. #define DUK_HTHREAD_STRING_RAW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_RAW)
  1765. #define DUK_HEAP_STRING_FMT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FMT)
  1766. #define DUK_HTHREAD_STRING_FMT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FMT)
  1767. #define DUK_HEAP_STRING_CURRENT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CURRENT)
  1768. #define DUK_HTHREAD_STRING_CURRENT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CURRENT)
  1769. #define DUK_HEAP_STRING_RESUME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_RESUME)
  1770. #define DUK_HTHREAD_STRING_RESUME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_RESUME)
  1771. #define DUK_HEAP_STRING_COMPACT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_COMPACT)
  1772. #define DUK_HTHREAD_STRING_COMPACT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_COMPACT)
  1773. #define DUK_HEAP_STRING_JC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JC)
  1774. #define DUK_HTHREAD_STRING_JC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JC)
  1775. #define DUK_HEAP_STRING_JX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JX)
  1776. #define DUK_HTHREAD_STRING_JX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JX)
  1777. #define DUK_HEAP_STRING_BASE64(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_BASE64)
  1778. #define DUK_HTHREAD_STRING_BASE64(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_BASE64)
  1779. #define DUK_HEAP_STRING_HEX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_HEX)
  1780. #define DUK_HTHREAD_STRING_HEX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_HEX)
  1781. #define DUK_HEAP_STRING_DEC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEC)
  1782. #define DUK_HTHREAD_STRING_DEC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEC)
  1783. #define DUK_HEAP_STRING_ENC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENC)
  1784. #define DUK_HTHREAD_STRING_ENC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENC)
  1785. #define DUK_HEAP_STRING_FIN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FIN)
  1786. #define DUK_HTHREAD_STRING_FIN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FIN)
  1787. #define DUK_HEAP_STRING_GC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GC)
  1788. #define DUK_HTHREAD_STRING_GC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GC)
  1789. #define DUK_HEAP_STRING_ACT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ACT)
  1790. #define DUK_HTHREAD_STRING_ACT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ACT)
  1791. #define DUK_HEAP_STRING_LC_INFO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_INFO)
  1792. #define DUK_HTHREAD_STRING_LC_INFO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_INFO)
  1793. #define DUK_HEAP_STRING_VERSION(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VERSION)
  1794. #define DUK_HTHREAD_STRING_VERSION(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VERSION)
  1795. #define DUK_HEAP_STRING_ENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENV)
  1796. #define DUK_HTHREAD_STRING_ENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENV)
  1797. #define DUK_HEAP_STRING_MOD_LOADED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MOD_LOADED)
  1798. #define DUK_HTHREAD_STRING_MOD_LOADED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MOD_LOADED)
  1799. #define DUK_HEAP_STRING_MOD_SEARCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MOD_SEARCH)
  1800. #define DUK_HTHREAD_STRING_MOD_SEARCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MOD_SEARCH)
  1801. #define DUK_HEAP_STRING_ERR_THROW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ERR_THROW)
  1802. #define DUK_HTHREAD_STRING_ERR_THROW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ERR_THROW)
  1803. #define DUK_HEAP_STRING_ERR_CREATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ERR_CREATE)
  1804. #define DUK_HTHREAD_STRING_ERR_CREATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ERR_CREATE)
  1805. #define DUK_HEAP_STRING_COMPILE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_COMPILE)
  1806. #define DUK_HTHREAD_STRING_COMPILE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_COMPILE)
  1807. #define DUK_HEAP_STRING_INT_REGBASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_REGBASE)
  1808. #define DUK_HTHREAD_STRING_INT_REGBASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_REGBASE)
  1809. #define DUK_HEAP_STRING_INT_THREAD(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_THREAD)
  1810. #define DUK_HTHREAD_STRING_INT_THREAD(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_THREAD)
  1811. #define DUK_HEAP_STRING_INT_HANDLER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_HANDLER)
  1812. #define DUK_HTHREAD_STRING_INT_HANDLER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_HANDLER)
  1813. #define DUK_HEAP_STRING_INT_FINALIZER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_FINALIZER)
  1814. #define DUK_HTHREAD_STRING_INT_FINALIZER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_FINALIZER)
  1815. #define DUK_HEAP_STRING_INT_CALLEE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_CALLEE)
  1816. #define DUK_HTHREAD_STRING_INT_CALLEE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_CALLEE)
  1817. #define DUK_HEAP_STRING_INT_MAP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_MAP)
  1818. #define DUK_HTHREAD_STRING_INT_MAP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_MAP)
  1819. #define DUK_HEAP_STRING_INT_ARGS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_ARGS)
  1820. #define DUK_HTHREAD_STRING_INT_ARGS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_ARGS)
  1821. #define DUK_HEAP_STRING_INT_THIS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_THIS)
  1822. #define DUK_HTHREAD_STRING_INT_THIS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_THIS)
  1823. #define DUK_HEAP_STRING_INT_PC2LINE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_PC2LINE)
  1824. #define DUK_HTHREAD_STRING_INT_PC2LINE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_PC2LINE)
  1825. #define DUK_HEAP_STRING_INT_SOURCE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_SOURCE)
  1826. #define DUK_HTHREAD_STRING_INT_SOURCE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_SOURCE)
  1827. #define DUK_HEAP_STRING_INT_VARENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_VARENV)
  1828. #define DUK_HTHREAD_STRING_INT_VARENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_VARENV)
  1829. #define DUK_HEAP_STRING_INT_LEXENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_LEXENV)
  1830. #define DUK_HTHREAD_STRING_INT_LEXENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_LEXENV)
  1831. #define DUK_HEAP_STRING_INT_VARMAP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_VARMAP)
  1832. #define DUK_HTHREAD_STRING_INT_VARMAP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_VARMAP)
  1833. #define DUK_HEAP_STRING_INT_FORMALS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_FORMALS)
  1834. #define DUK_HTHREAD_STRING_INT_FORMALS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_FORMALS)
  1835. #define DUK_HEAP_STRING_INT_BYTECODE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_BYTECODE)
  1836. #define DUK_HTHREAD_STRING_INT_BYTECODE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_BYTECODE)
  1837. #define DUK_HEAP_STRING_INT_NEXT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_NEXT)
  1838. #define DUK_HTHREAD_STRING_INT_NEXT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_NEXT)
  1839. #define DUK_HEAP_STRING_INT_TARGET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_TARGET)
  1840. #define DUK_HTHREAD_STRING_INT_TARGET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_TARGET)
  1841. #define DUK_HEAP_STRING_INT_VALUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_VALUE)
  1842. #define DUK_HTHREAD_STRING_INT_VALUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_VALUE)
  1843. #define DUK_HEAP_STRING_LC_POINTER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_POINTER)
  1844. #define DUK_HTHREAD_STRING_LC_POINTER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_POINTER)
  1845. #define DUK_HEAP_STRING_LC_BUFFER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_BUFFER)
  1846. #define DUK_HTHREAD_STRING_LC_BUFFER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_BUFFER)
  1847. #define DUK_HEAP_STRING_INT_TRACEDATA(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_TRACEDATA)
  1848. #define DUK_HTHREAD_STRING_INT_TRACEDATA(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_TRACEDATA)
  1849. #define DUK_HEAP_STRING_LINE_NUMBER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LINE_NUMBER)
  1850. #define DUK_HTHREAD_STRING_LINE_NUMBER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LINE_NUMBER)
  1851. #define DUK_HEAP_STRING_FILE_NAME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FILE_NAME)
  1852. #define DUK_HTHREAD_STRING_FILE_NAME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FILE_NAME)
  1853. #define DUK_HEAP_STRING_PC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PC)
  1854. #define DUK_HTHREAD_STRING_PC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PC)
  1855. #define DUK_HEAP_STRING_STACK(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_STACK)
  1856. #define DUK_HTHREAD_STRING_STACK(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_STACK)
  1857. #define DUK_HEAP_STRING_THROW_TYPE_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_THROW_TYPE_ERROR)
  1858. #define DUK_HTHREAD_STRING_THROW_TYPE_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_THROW_TYPE_ERROR)
  1859. #define DUK_HEAP_STRING_DUKTAPE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DUKTAPE)
  1860. #define DUK_HTHREAD_STRING_DUKTAPE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DUKTAPE)
  1861. #define DUK_HEAP_STRING_ID(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ID)
  1862. #define DUK_HTHREAD_STRING_ID(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ID)
  1863. #define DUK_HEAP_STRING_REQUIRE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REQUIRE)
  1864. #define DUK_HTHREAD_STRING_REQUIRE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REQUIRE)
  1865. #define DUK_HEAP_STRING___PROTO__(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX___PROTO__)
  1866. #define DUK_HTHREAD_STRING___PROTO__(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX___PROTO__)
  1867. #define DUK_HEAP_STRING_SET_PROTOTYPE_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_PROTOTYPE_OF)
  1868. #define DUK_HTHREAD_STRING_SET_PROTOTYPE_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_PROTOTYPE_OF)
  1869. #define DUK_HEAP_STRING_OWN_KEYS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_OWN_KEYS)
  1870. #define DUK_HTHREAD_STRING_OWN_KEYS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_OWN_KEYS)
  1871. #define DUK_HEAP_STRING_ENUMERATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENUMERATE)
  1872. #define DUK_HTHREAD_STRING_ENUMERATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENUMERATE)
  1873. #define DUK_HEAP_STRING_DELETE_PROPERTY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DELETE_PROPERTY)
  1874. #define DUK_HTHREAD_STRING_DELETE_PROPERTY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DELETE_PROPERTY)
  1875. #define DUK_HEAP_STRING_HAS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_HAS)
  1876. #define DUK_HTHREAD_STRING_HAS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_HAS)
  1877. #define DUK_HEAP_STRING_PROXY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PROXY)
  1878. #define DUK_HTHREAD_STRING_PROXY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PROXY)
  1879. #define DUK_HEAP_STRING_CALLEE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CALLEE)
  1880. #define DUK_HTHREAD_STRING_CALLEE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CALLEE)
  1881. #define DUK_HEAP_STRING_INVALID_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INVALID_DATE)
  1882. #define DUK_HTHREAD_STRING_INVALID_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INVALID_DATE)
  1883. #define DUK_HEAP_STRING_BRACKETED_ELLIPSIS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_BRACKETED_ELLIPSIS)
  1884. #define DUK_HTHREAD_STRING_BRACKETED_ELLIPSIS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_BRACKETED_ELLIPSIS)
  1885. #define DUK_HEAP_STRING_NEWLINE_TAB(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NEWLINE_TAB)
  1886. #define DUK_HTHREAD_STRING_NEWLINE_TAB(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NEWLINE_TAB)
  1887. #define DUK_HEAP_STRING_SPACE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SPACE)
  1888. #define DUK_HTHREAD_STRING_SPACE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SPACE)
  1889. #define DUK_HEAP_STRING_COMMA(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_COMMA)
  1890. #define DUK_HTHREAD_STRING_COMMA(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_COMMA)
  1891. #define DUK_HEAP_STRING_MINUS_ZERO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MINUS_ZERO)
  1892. #define DUK_HTHREAD_STRING_MINUS_ZERO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MINUS_ZERO)
  1893. #define DUK_HEAP_STRING_PLUS_ZERO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PLUS_ZERO)
  1894. #define DUK_HTHREAD_STRING_PLUS_ZERO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PLUS_ZERO)
  1895. #define DUK_HEAP_STRING_ZERO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ZERO)
  1896. #define DUK_HTHREAD_STRING_ZERO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ZERO)
  1897. #define DUK_HEAP_STRING_MINUS_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MINUS_INFINITY)
  1898. #define DUK_HTHREAD_STRING_MINUS_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MINUS_INFINITY)
  1899. #define DUK_HEAP_STRING_PLUS_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PLUS_INFINITY)
  1900. #define DUK_HTHREAD_STRING_PLUS_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PLUS_INFINITY)
  1901. #define DUK_HEAP_STRING_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INFINITY)
  1902. #define DUK_HTHREAD_STRING_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INFINITY)
  1903. #define DUK_HEAP_STRING_LC_OBJECT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_OBJECT)
  1904. #define DUK_HTHREAD_STRING_LC_OBJECT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_OBJECT)
  1905. #define DUK_HEAP_STRING_LC_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_STRING)
  1906. #define DUK_HTHREAD_STRING_LC_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_STRING)
  1907. #define DUK_HEAP_STRING_LC_NUMBER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_NUMBER)
  1908. #define DUK_HTHREAD_STRING_LC_NUMBER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_NUMBER)
  1909. #define DUK_HEAP_STRING_LC_BOOLEAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_BOOLEAN)
  1910. #define DUK_HTHREAD_STRING_LC_BOOLEAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_BOOLEAN)
  1911. #define DUK_HEAP_STRING_LC_UNDEFINED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_UNDEFINED)
  1912. #define DUK_HTHREAD_STRING_LC_UNDEFINED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_UNDEFINED)
  1913. #define DUK_HEAP_STRING_STRINGIFY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_STRINGIFY)
  1914. #define DUK_HTHREAD_STRING_STRINGIFY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_STRINGIFY)
  1915. #define DUK_HEAP_STRING_TAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TAN)
  1916. #define DUK_HTHREAD_STRING_TAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TAN)
  1917. #define DUK_HEAP_STRING_SQRT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SQRT)
  1918. #define DUK_HTHREAD_STRING_SQRT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SQRT)
  1919. #define DUK_HEAP_STRING_SIN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SIN)
  1920. #define DUK_HTHREAD_STRING_SIN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SIN)
  1921. #define DUK_HEAP_STRING_ROUND(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ROUND)
  1922. #define DUK_HTHREAD_STRING_ROUND(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ROUND)
  1923. #define DUK_HEAP_STRING_RANDOM(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_RANDOM)
  1924. #define DUK_HTHREAD_STRING_RANDOM(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_RANDOM)
  1925. #define DUK_HEAP_STRING_POW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_POW)
  1926. #define DUK_HTHREAD_STRING_POW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_POW)
  1927. #define DUK_HEAP_STRING_MIN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MIN)
  1928. #define DUK_HTHREAD_STRING_MIN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MIN)
  1929. #define DUK_HEAP_STRING_MAX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MAX)
  1930. #define DUK_HTHREAD_STRING_MAX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MAX)
  1931. #define DUK_HEAP_STRING_LOG(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LOG)
  1932. #define DUK_HTHREAD_STRING_LOG(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LOG)
  1933. #define DUK_HEAP_STRING_FLOOR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FLOOR)
  1934. #define DUK_HTHREAD_STRING_FLOOR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FLOOR)
  1935. #define DUK_HEAP_STRING_EXP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EXP)
  1936. #define DUK_HTHREAD_STRING_EXP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EXP)
  1937. #define DUK_HEAP_STRING_COS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_COS)
  1938. #define DUK_HTHREAD_STRING_COS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_COS)
  1939. #define DUK_HEAP_STRING_CEIL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CEIL)
  1940. #define DUK_HTHREAD_STRING_CEIL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CEIL)
  1941. #define DUK_HEAP_STRING_ATAN2(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ATAN2)
  1942. #define DUK_HTHREAD_STRING_ATAN2(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ATAN2)
  1943. #define DUK_HEAP_STRING_ATAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ATAN)
  1944. #define DUK_HTHREAD_STRING_ATAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ATAN)
  1945. #define DUK_HEAP_STRING_ASIN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ASIN)
  1946. #define DUK_HTHREAD_STRING_ASIN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ASIN)
  1947. #define DUK_HEAP_STRING_ACOS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ACOS)
  1948. #define DUK_HTHREAD_STRING_ACOS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ACOS)
  1949. #define DUK_HEAP_STRING_ABS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ABS)
  1950. #define DUK_HTHREAD_STRING_ABS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ABS)
  1951. #define DUK_HEAP_STRING_SQRT2(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SQRT2)
  1952. #define DUK_HTHREAD_STRING_SQRT2(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SQRT2)
  1953. #define DUK_HEAP_STRING_SQRT1_2(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SQRT1_2)
  1954. #define DUK_HTHREAD_STRING_SQRT1_2(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SQRT1_2)
  1955. #define DUK_HEAP_STRING_PI(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PI)
  1956. #define DUK_HTHREAD_STRING_PI(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PI)
  1957. #define DUK_HEAP_STRING_LOG10E(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LOG10E)
  1958. #define DUK_HTHREAD_STRING_LOG10E(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LOG10E)
  1959. #define DUK_HEAP_STRING_LOG2E(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LOG2E)
  1960. #define DUK_HTHREAD_STRING_LOG2E(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LOG2E)
  1961. #define DUK_HEAP_STRING_LN2(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LN2)
  1962. #define DUK_HTHREAD_STRING_LN2(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LN2)
  1963. #define DUK_HEAP_STRING_LN10(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LN10)
  1964. #define DUK_HTHREAD_STRING_LN10(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LN10)
  1965. #define DUK_HEAP_STRING_E(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_E)
  1966. #define DUK_HTHREAD_STRING_E(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_E)
  1967. #define DUK_HEAP_STRING_MESSAGE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MESSAGE)
  1968. #define DUK_HTHREAD_STRING_MESSAGE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MESSAGE)
  1969. #define DUK_HEAP_STRING_NAME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NAME)
  1970. #define DUK_HTHREAD_STRING_NAME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NAME)
  1971. #define DUK_HEAP_STRING_INPUT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INPUT)
  1972. #define DUK_HTHREAD_STRING_INPUT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INPUT)
  1973. #define DUK_HEAP_STRING_INDEX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INDEX)
  1974. #define DUK_HTHREAD_STRING_INDEX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INDEX)
  1975. #define DUK_HEAP_STRING_ESCAPED_EMPTY_REGEXP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ESCAPED_EMPTY_REGEXP)
  1976. #define DUK_HTHREAD_STRING_ESCAPED_EMPTY_REGEXP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ESCAPED_EMPTY_REGEXP)
  1977. #define DUK_HEAP_STRING_LAST_INDEX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LAST_INDEX)
  1978. #define DUK_HTHREAD_STRING_LAST_INDEX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LAST_INDEX)
  1979. #define DUK_HEAP_STRING_MULTILINE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MULTILINE)
  1980. #define DUK_HTHREAD_STRING_MULTILINE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MULTILINE)
  1981. #define DUK_HEAP_STRING_IGNORE_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IGNORE_CASE)
  1982. #define DUK_HTHREAD_STRING_IGNORE_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IGNORE_CASE)
  1983. #define DUK_HEAP_STRING_SOURCE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SOURCE)
  1984. #define DUK_HTHREAD_STRING_SOURCE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SOURCE)
  1985. #define DUK_HEAP_STRING_TEST(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TEST)
  1986. #define DUK_HTHREAD_STRING_TEST(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TEST)
  1987. #define DUK_HEAP_STRING_EXEC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EXEC)
  1988. #define DUK_HTHREAD_STRING_EXEC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EXEC)
  1989. #define DUK_HEAP_STRING_TO_GMT_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_GMT_STRING)
  1990. #define DUK_HTHREAD_STRING_TO_GMT_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_GMT_STRING)
  1991. #define DUK_HEAP_STRING_SET_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_YEAR)
  1992. #define DUK_HTHREAD_STRING_SET_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_YEAR)
  1993. #define DUK_HEAP_STRING_GET_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_YEAR)
  1994. #define DUK_HTHREAD_STRING_GET_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_YEAR)
  1995. #define DUK_HEAP_STRING_TO_JSON(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_JSON)
  1996. #define DUK_HTHREAD_STRING_TO_JSON(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_JSON)
  1997. #define DUK_HEAP_STRING_TO_ISO_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_ISO_STRING)
  1998. #define DUK_HTHREAD_STRING_TO_ISO_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_ISO_STRING)
  1999. #define DUK_HEAP_STRING_TO_UTC_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_UTC_STRING)
  2000. #define DUK_HTHREAD_STRING_TO_UTC_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_UTC_STRING)
  2001. #define DUK_HEAP_STRING_SET_UTC_FULL_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_FULL_YEAR)
  2002. #define DUK_HTHREAD_STRING_SET_UTC_FULL_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_FULL_YEAR)
  2003. #define DUK_HEAP_STRING_SET_FULL_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_FULL_YEAR)
  2004. #define DUK_HTHREAD_STRING_SET_FULL_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_FULL_YEAR)
  2005. #define DUK_HEAP_STRING_SET_UTC_MONTH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_MONTH)
  2006. #define DUK_HTHREAD_STRING_SET_UTC_MONTH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_MONTH)
  2007. #define DUK_HEAP_STRING_SET_MONTH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_MONTH)
  2008. #define DUK_HTHREAD_STRING_SET_MONTH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_MONTH)
  2009. #define DUK_HEAP_STRING_SET_UTC_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_DATE)
  2010. #define DUK_HTHREAD_STRING_SET_UTC_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_DATE)
  2011. #define DUK_HEAP_STRING_SET_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_DATE)
  2012. #define DUK_HTHREAD_STRING_SET_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_DATE)
  2013. #define DUK_HEAP_STRING_SET_UTC_HOURS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_HOURS)
  2014. #define DUK_HTHREAD_STRING_SET_UTC_HOURS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_HOURS)
  2015. #define DUK_HEAP_STRING_SET_HOURS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_HOURS)
  2016. #define DUK_HTHREAD_STRING_SET_HOURS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_HOURS)
  2017. #define DUK_HEAP_STRING_SET_UTC_MINUTES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_MINUTES)
  2018. #define DUK_HTHREAD_STRING_SET_UTC_MINUTES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_MINUTES)
  2019. #define DUK_HEAP_STRING_SET_MINUTES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_MINUTES)
  2020. #define DUK_HTHREAD_STRING_SET_MINUTES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_MINUTES)
  2021. #define DUK_HEAP_STRING_SET_UTC_SECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_SECONDS)
  2022. #define DUK_HTHREAD_STRING_SET_UTC_SECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_SECONDS)
  2023. #define DUK_HEAP_STRING_SET_SECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_SECONDS)
  2024. #define DUK_HTHREAD_STRING_SET_SECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_SECONDS)
  2025. #define DUK_HEAP_STRING_SET_UTC_MILLISECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_MILLISECONDS)
  2026. #define DUK_HTHREAD_STRING_SET_UTC_MILLISECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_MILLISECONDS)
  2027. #define DUK_HEAP_STRING_SET_MILLISECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_MILLISECONDS)
  2028. #define DUK_HTHREAD_STRING_SET_MILLISECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_MILLISECONDS)
  2029. #define DUK_HEAP_STRING_SET_TIME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_TIME)
  2030. #define DUK_HTHREAD_STRING_SET_TIME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_TIME)
  2031. #define DUK_HEAP_STRING_GET_TIMEZONE_OFFSET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_TIMEZONE_OFFSET)
  2032. #define DUK_HTHREAD_STRING_GET_TIMEZONE_OFFSET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_TIMEZONE_OFFSET)
  2033. #define DUK_HEAP_STRING_GET_UTC_MILLISECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_MILLISECONDS)
  2034. #define DUK_HTHREAD_STRING_GET_UTC_MILLISECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_MILLISECONDS)
  2035. #define DUK_HEAP_STRING_GET_MILLISECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_MILLISECONDS)
  2036. #define DUK_HTHREAD_STRING_GET_MILLISECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_MILLISECONDS)
  2037. #define DUK_HEAP_STRING_GET_UTC_SECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_SECONDS)
  2038. #define DUK_HTHREAD_STRING_GET_UTC_SECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_SECONDS)
  2039. #define DUK_HEAP_STRING_GET_SECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_SECONDS)
  2040. #define DUK_HTHREAD_STRING_GET_SECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_SECONDS)
  2041. #define DUK_HEAP_STRING_GET_UTC_MINUTES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_MINUTES)
  2042. #define DUK_HTHREAD_STRING_GET_UTC_MINUTES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_MINUTES)
  2043. #define DUK_HEAP_STRING_GET_MINUTES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_MINUTES)
  2044. #define DUK_HTHREAD_STRING_GET_MINUTES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_MINUTES)
  2045. #define DUK_HEAP_STRING_GET_UTC_HOURS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_HOURS)
  2046. #define DUK_HTHREAD_STRING_GET_UTC_HOURS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_HOURS)
  2047. #define DUK_HEAP_STRING_GET_HOURS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_HOURS)
  2048. #define DUK_HTHREAD_STRING_GET_HOURS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_HOURS)
  2049. #define DUK_HEAP_STRING_GET_UTC_DAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_DAY)
  2050. #define DUK_HTHREAD_STRING_GET_UTC_DAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_DAY)
  2051. #define DUK_HEAP_STRING_GET_DAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_DAY)
  2052. #define DUK_HTHREAD_STRING_GET_DAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_DAY)
  2053. #define DUK_HEAP_STRING_GET_UTC_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_DATE)
  2054. #define DUK_HTHREAD_STRING_GET_UTC_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_DATE)
  2055. #define DUK_HEAP_STRING_GET_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_DATE)
  2056. #define DUK_HTHREAD_STRING_GET_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_DATE)
  2057. #define DUK_HEAP_STRING_GET_UTC_MONTH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_MONTH)
  2058. #define DUK_HTHREAD_STRING_GET_UTC_MONTH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_MONTH)
  2059. #define DUK_HEAP_STRING_GET_MONTH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_MONTH)
  2060. #define DUK_HTHREAD_STRING_GET_MONTH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_MONTH)
  2061. #define DUK_HEAP_STRING_GET_UTC_FULL_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_FULL_YEAR)
  2062. #define DUK_HTHREAD_STRING_GET_UTC_FULL_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_FULL_YEAR)
  2063. #define DUK_HEAP_STRING_GET_FULL_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_FULL_YEAR)
  2064. #define DUK_HTHREAD_STRING_GET_FULL_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_FULL_YEAR)
  2065. #define DUK_HEAP_STRING_GET_TIME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_TIME)
  2066. #define DUK_HTHREAD_STRING_GET_TIME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_TIME)
  2067. #define DUK_HEAP_STRING_TO_LOCALE_TIME_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOCALE_TIME_STRING)
  2068. #define DUK_HTHREAD_STRING_TO_LOCALE_TIME_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOCALE_TIME_STRING)
  2069. #define DUK_HEAP_STRING_TO_LOCALE_DATE_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOCALE_DATE_STRING)
  2070. #define DUK_HTHREAD_STRING_TO_LOCALE_DATE_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOCALE_DATE_STRING)
  2071. #define DUK_HEAP_STRING_TO_TIME_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_TIME_STRING)
  2072. #define DUK_HTHREAD_STRING_TO_TIME_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_TIME_STRING)
  2073. #define DUK_HEAP_STRING_TO_DATE_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_DATE_STRING)
  2074. #define DUK_HTHREAD_STRING_TO_DATE_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_DATE_STRING)
  2075. #define DUK_HEAP_STRING_NOW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NOW)
  2076. #define DUK_HTHREAD_STRING_NOW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NOW)
  2077. #define DUK_HEAP_STRING_UTC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UTC)
  2078. #define DUK_HTHREAD_STRING_UTC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UTC)
  2079. #define DUK_HEAP_STRING_PARSE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PARSE)
  2080. #define DUK_HTHREAD_STRING_PARSE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PARSE)
  2081. #define DUK_HEAP_STRING_TO_PRECISION(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_PRECISION)
  2082. #define DUK_HTHREAD_STRING_TO_PRECISION(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_PRECISION)
  2083. #define DUK_HEAP_STRING_TO_EXPONENTIAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_EXPONENTIAL)
  2084. #define DUK_HTHREAD_STRING_TO_EXPONENTIAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_EXPONENTIAL)
  2085. #define DUK_HEAP_STRING_TO_FIXED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_FIXED)
  2086. #define DUK_HTHREAD_STRING_TO_FIXED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_FIXED)
  2087. #define DUK_HEAP_STRING_POSITIVE_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_POSITIVE_INFINITY)
  2088. #define DUK_HTHREAD_STRING_POSITIVE_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_POSITIVE_INFINITY)
  2089. #define DUK_HEAP_STRING_NEGATIVE_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NEGATIVE_INFINITY)
  2090. #define DUK_HTHREAD_STRING_NEGATIVE_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NEGATIVE_INFINITY)
  2091. #define DUK_HEAP_STRING_NAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NAN)
  2092. #define DUK_HTHREAD_STRING_NAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NAN)
  2093. #define DUK_HEAP_STRING_MIN_VALUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MIN_VALUE)
  2094. #define DUK_HTHREAD_STRING_MIN_VALUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MIN_VALUE)
  2095. #define DUK_HEAP_STRING_MAX_VALUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MAX_VALUE)
  2096. #define DUK_HTHREAD_STRING_MAX_VALUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MAX_VALUE)
  2097. #define DUK_HEAP_STRING_SUBSTR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SUBSTR)
  2098. #define DUK_HTHREAD_STRING_SUBSTR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SUBSTR)
  2099. #define DUK_HEAP_STRING_TRIM(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TRIM)
  2100. #define DUK_HTHREAD_STRING_TRIM(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TRIM)
  2101. #define DUK_HEAP_STRING_TO_LOCALE_UPPER_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOCALE_UPPER_CASE)
  2102. #define DUK_HTHREAD_STRING_TO_LOCALE_UPPER_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOCALE_UPPER_CASE)
  2103. #define DUK_HEAP_STRING_TO_UPPER_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_UPPER_CASE)
  2104. #define DUK_HTHREAD_STRING_TO_UPPER_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_UPPER_CASE)
  2105. #define DUK_HEAP_STRING_TO_LOCALE_LOWER_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOCALE_LOWER_CASE)
  2106. #define DUK_HTHREAD_STRING_TO_LOCALE_LOWER_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOCALE_LOWER_CASE)
  2107. #define DUK_HEAP_STRING_TO_LOWER_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOWER_CASE)
  2108. #define DUK_HTHREAD_STRING_TO_LOWER_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOWER_CASE)
  2109. #define DUK_HEAP_STRING_SUBSTRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SUBSTRING)
  2110. #define DUK_HTHREAD_STRING_SUBSTRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SUBSTRING)
  2111. #define DUK_HEAP_STRING_SPLIT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SPLIT)
  2112. #define DUK_HTHREAD_STRING_SPLIT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SPLIT)
  2113. #define DUK_HEAP_STRING_SEARCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SEARCH)
  2114. #define DUK_HTHREAD_STRING_SEARCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SEARCH)
  2115. #define DUK_HEAP_STRING_REPLACE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REPLACE)
  2116. #define DUK_HTHREAD_STRING_REPLACE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REPLACE)
  2117. #define DUK_HEAP_STRING_MATCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MATCH)
  2118. #define DUK_HTHREAD_STRING_MATCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MATCH)
  2119. #define DUK_HEAP_STRING_LOCALE_COMPARE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LOCALE_COMPARE)
  2120. #define DUK_HTHREAD_STRING_LOCALE_COMPARE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LOCALE_COMPARE)
  2121. #define DUK_HEAP_STRING_CHAR_CODE_AT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CHAR_CODE_AT)
  2122. #define DUK_HTHREAD_STRING_CHAR_CODE_AT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CHAR_CODE_AT)
  2123. #define DUK_HEAP_STRING_CHAR_AT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CHAR_AT)
  2124. #define DUK_HTHREAD_STRING_CHAR_AT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CHAR_AT)
  2125. #define DUK_HEAP_STRING_FROM_CHAR_CODE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FROM_CHAR_CODE)
  2126. #define DUK_HTHREAD_STRING_FROM_CHAR_CODE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FROM_CHAR_CODE)
  2127. #define DUK_HEAP_STRING_REDUCE_RIGHT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REDUCE_RIGHT)
  2128. #define DUK_HTHREAD_STRING_REDUCE_RIGHT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REDUCE_RIGHT)
  2129. #define DUK_HEAP_STRING_REDUCE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REDUCE)
  2130. #define DUK_HTHREAD_STRING_REDUCE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REDUCE)
  2131. #define DUK_HEAP_STRING_FILTER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FILTER)
  2132. #define DUK_HTHREAD_STRING_FILTER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FILTER)
  2133. #define DUK_HEAP_STRING_MAP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MAP)
  2134. #define DUK_HTHREAD_STRING_MAP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MAP)
  2135. #define DUK_HEAP_STRING_FOR_EACH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FOR_EACH)
  2136. #define DUK_HTHREAD_STRING_FOR_EACH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FOR_EACH)
  2137. #define DUK_HEAP_STRING_SOME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SOME)
  2138. #define DUK_HTHREAD_STRING_SOME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SOME)
  2139. #define DUK_HEAP_STRING_EVERY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EVERY)
  2140. #define DUK_HTHREAD_STRING_EVERY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EVERY)
  2141. #define DUK_HEAP_STRING_LAST_INDEX_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LAST_INDEX_OF)
  2142. #define DUK_HTHREAD_STRING_LAST_INDEX_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LAST_INDEX_OF)
  2143. #define DUK_HEAP_STRING_INDEX_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INDEX_OF)
  2144. #define DUK_HTHREAD_STRING_INDEX_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INDEX_OF)
  2145. #define DUK_HEAP_STRING_UNSHIFT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UNSHIFT)
  2146. #define DUK_HTHREAD_STRING_UNSHIFT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UNSHIFT)
  2147. #define DUK_HEAP_STRING_SPLICE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SPLICE)
  2148. #define DUK_HTHREAD_STRING_SPLICE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SPLICE)
  2149. #define DUK_HEAP_STRING_SORT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SORT)
  2150. #define DUK_HTHREAD_STRING_SORT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SORT)
  2151. #define DUK_HEAP_STRING_SLICE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SLICE)
  2152. #define DUK_HTHREAD_STRING_SLICE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SLICE)
  2153. #define DUK_HEAP_STRING_SHIFT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SHIFT)
  2154. #define DUK_HTHREAD_STRING_SHIFT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SHIFT)
  2155. #define DUK_HEAP_STRING_REVERSE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REVERSE)
  2156. #define DUK_HTHREAD_STRING_REVERSE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REVERSE)
  2157. #define DUK_HEAP_STRING_PUSH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PUSH)
  2158. #define DUK_HTHREAD_STRING_PUSH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PUSH)
  2159. #define DUK_HEAP_STRING_POP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_POP)
  2160. #define DUK_HTHREAD_STRING_POP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_POP)
  2161. #define DUK_HEAP_STRING_JOIN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JOIN)
  2162. #define DUK_HTHREAD_STRING_JOIN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JOIN)
  2163. #define DUK_HEAP_STRING_CONCAT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONCAT)
  2164. #define DUK_HTHREAD_STRING_CONCAT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONCAT)
  2165. #define DUK_HEAP_STRING_IS_ARRAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_ARRAY)
  2166. #define DUK_HTHREAD_STRING_IS_ARRAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_ARRAY)
  2167. #define DUK_HEAP_STRING_LC_ARGUMENTS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_ARGUMENTS)
  2168. #define DUK_HTHREAD_STRING_LC_ARGUMENTS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_ARGUMENTS)
  2169. #define DUK_HEAP_STRING_CALLER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CALLER)
  2170. #define DUK_HTHREAD_STRING_CALLER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CALLER)
  2171. #define DUK_HEAP_STRING_BIND(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_BIND)
  2172. #define DUK_HTHREAD_STRING_BIND(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_BIND)
  2173. #define DUK_HEAP_STRING_CALL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CALL)
  2174. #define DUK_HTHREAD_STRING_CALL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CALL)
  2175. #define DUK_HEAP_STRING_APPLY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_APPLY)
  2176. #define DUK_HTHREAD_STRING_APPLY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_APPLY)
  2177. #define DUK_HEAP_STRING_PROPERTY_IS_ENUMERABLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PROPERTY_IS_ENUMERABLE)
  2178. #define DUK_HTHREAD_STRING_PROPERTY_IS_ENUMERABLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PROPERTY_IS_ENUMERABLE)
  2179. #define DUK_HEAP_STRING_IS_PROTOTYPE_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_PROTOTYPE_OF)
  2180. #define DUK_HTHREAD_STRING_IS_PROTOTYPE_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_PROTOTYPE_OF)
  2181. #define DUK_HEAP_STRING_HAS_OWN_PROPERTY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_HAS_OWN_PROPERTY)
  2182. #define DUK_HTHREAD_STRING_HAS_OWN_PROPERTY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_HAS_OWN_PROPERTY)
  2183. #define DUK_HEAP_STRING_VALUE_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VALUE_OF)
  2184. #define DUK_HTHREAD_STRING_VALUE_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VALUE_OF)
  2185. #define DUK_HEAP_STRING_TO_LOCALE_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOCALE_STRING)
  2186. #define DUK_HTHREAD_STRING_TO_LOCALE_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOCALE_STRING)
  2187. #define DUK_HEAP_STRING_TO_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_STRING)
  2188. #define DUK_HTHREAD_STRING_TO_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_STRING)
  2189. #define DUK_HEAP_STRING_CONSTRUCTOR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONSTRUCTOR)
  2190. #define DUK_HTHREAD_STRING_CONSTRUCTOR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONSTRUCTOR)
  2191. #define DUK_HEAP_STRING_SET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET)
  2192. #define DUK_HTHREAD_STRING_SET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET)
  2193. #define DUK_HEAP_STRING_GET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET)
  2194. #define DUK_HTHREAD_STRING_GET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET)
  2195. #define DUK_HEAP_STRING_ENUMERABLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENUMERABLE)
  2196. #define DUK_HTHREAD_STRING_ENUMERABLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENUMERABLE)
  2197. #define DUK_HEAP_STRING_CONFIGURABLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONFIGURABLE)
  2198. #define DUK_HTHREAD_STRING_CONFIGURABLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONFIGURABLE)
  2199. #define DUK_HEAP_STRING_WRITABLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_WRITABLE)
  2200. #define DUK_HTHREAD_STRING_WRITABLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_WRITABLE)
  2201. #define DUK_HEAP_STRING_VALUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VALUE)
  2202. #define DUK_HTHREAD_STRING_VALUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VALUE)
  2203. #define DUK_HEAP_STRING_KEYS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_KEYS)
  2204. #define DUK_HTHREAD_STRING_KEYS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_KEYS)
  2205. #define DUK_HEAP_STRING_IS_EXTENSIBLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_EXTENSIBLE)
  2206. #define DUK_HTHREAD_STRING_IS_EXTENSIBLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_EXTENSIBLE)
  2207. #define DUK_HEAP_STRING_IS_FROZEN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_FROZEN)
  2208. #define DUK_HTHREAD_STRING_IS_FROZEN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_FROZEN)
  2209. #define DUK_HEAP_STRING_IS_SEALED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_SEALED)
  2210. #define DUK_HTHREAD_STRING_IS_SEALED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_SEALED)
  2211. #define DUK_HEAP_STRING_PREVENT_EXTENSIONS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PREVENT_EXTENSIONS)
  2212. #define DUK_HTHREAD_STRING_PREVENT_EXTENSIONS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PREVENT_EXTENSIONS)
  2213. #define DUK_HEAP_STRING_FREEZE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FREEZE)
  2214. #define DUK_HTHREAD_STRING_FREEZE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FREEZE)
  2215. #define DUK_HEAP_STRING_SEAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SEAL)
  2216. #define DUK_HTHREAD_STRING_SEAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SEAL)
  2217. #define DUK_HEAP_STRING_DEFINE_PROPERTIES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEFINE_PROPERTIES)
  2218. #define DUK_HTHREAD_STRING_DEFINE_PROPERTIES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEFINE_PROPERTIES)
  2219. #define DUK_HEAP_STRING_DEFINE_PROPERTY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEFINE_PROPERTY)
  2220. #define DUK_HTHREAD_STRING_DEFINE_PROPERTY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEFINE_PROPERTY)
  2221. #define DUK_HEAP_STRING_CREATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CREATE)
  2222. #define DUK_HTHREAD_STRING_CREATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CREATE)
  2223. #define DUK_HEAP_STRING_GET_OWN_PROPERTY_NAMES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_OWN_PROPERTY_NAMES)
  2224. #define DUK_HTHREAD_STRING_GET_OWN_PROPERTY_NAMES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_OWN_PROPERTY_NAMES)
  2225. #define DUK_HEAP_STRING_GET_OWN_PROPERTY_DESCRIPTOR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_OWN_PROPERTY_DESCRIPTOR)
  2226. #define DUK_HTHREAD_STRING_GET_OWN_PROPERTY_DESCRIPTOR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_OWN_PROPERTY_DESCRIPTOR)
  2227. #define DUK_HEAP_STRING_GET_PROTOTYPE_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_PROTOTYPE_OF)
  2228. #define DUK_HTHREAD_STRING_GET_PROTOTYPE_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_PROTOTYPE_OF)
  2229. #define DUK_HEAP_STRING_PROTOTYPE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PROTOTYPE)
  2230. #define DUK_HTHREAD_STRING_PROTOTYPE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PROTOTYPE)
  2231. #define DUK_HEAP_STRING_LENGTH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LENGTH)
  2232. #define DUK_HTHREAD_STRING_LENGTH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LENGTH)
  2233. #define DUK_HEAP_STRING_ALERT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ALERT)
  2234. #define DUK_HTHREAD_STRING_ALERT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ALERT)
  2235. #define DUK_HEAP_STRING_PRINT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PRINT)
  2236. #define DUK_HTHREAD_STRING_PRINT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PRINT)
  2237. #define DUK_HEAP_STRING_UNESCAPE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UNESCAPE)
  2238. #define DUK_HTHREAD_STRING_UNESCAPE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UNESCAPE)
  2239. #define DUK_HEAP_STRING_ESCAPE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ESCAPE)
  2240. #define DUK_HTHREAD_STRING_ESCAPE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ESCAPE)
  2241. #define DUK_HEAP_STRING_ENCODE_URI_COMPONENT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENCODE_URI_COMPONENT)
  2242. #define DUK_HTHREAD_STRING_ENCODE_URI_COMPONENT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENCODE_URI_COMPONENT)
  2243. #define DUK_HEAP_STRING_ENCODE_URI(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENCODE_URI)
  2244. #define DUK_HTHREAD_STRING_ENCODE_URI(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENCODE_URI)
  2245. #define DUK_HEAP_STRING_DECODE_URI_COMPONENT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DECODE_URI_COMPONENT)
  2246. #define DUK_HTHREAD_STRING_DECODE_URI_COMPONENT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DECODE_URI_COMPONENT)
  2247. #define DUK_HEAP_STRING_DECODE_URI(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DECODE_URI)
  2248. #define DUK_HTHREAD_STRING_DECODE_URI(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DECODE_URI)
  2249. #define DUK_HEAP_STRING_IS_FINITE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_FINITE)
  2250. #define DUK_HTHREAD_STRING_IS_FINITE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_FINITE)
  2251. #define DUK_HEAP_STRING_IS_NAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_NAN)
  2252. #define DUK_HTHREAD_STRING_IS_NAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_NAN)
  2253. #define DUK_HEAP_STRING_PARSE_FLOAT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PARSE_FLOAT)
  2254. #define DUK_HTHREAD_STRING_PARSE_FLOAT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PARSE_FLOAT)
  2255. #define DUK_HEAP_STRING_PARSE_INT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PARSE_INT)
  2256. #define DUK_HTHREAD_STRING_PARSE_INT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PARSE_INT)
  2257. #define DUK_HEAP_STRING_EVAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EVAL)
  2258. #define DUK_HTHREAD_STRING_EVAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EVAL)
  2259. #define DUK_HEAP_STRING_URI_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_URI_ERROR)
  2260. #define DUK_HTHREAD_STRING_URI_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_URI_ERROR)
  2261. #define DUK_HEAP_STRING_TYPE_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TYPE_ERROR)
  2262. #define DUK_HTHREAD_STRING_TYPE_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TYPE_ERROR)
  2263. #define DUK_HEAP_STRING_SYNTAX_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SYNTAX_ERROR)
  2264. #define DUK_HTHREAD_STRING_SYNTAX_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SYNTAX_ERROR)
  2265. #define DUK_HEAP_STRING_REFERENCE_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REFERENCE_ERROR)
  2266. #define DUK_HTHREAD_STRING_REFERENCE_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REFERENCE_ERROR)
  2267. #define DUK_HEAP_STRING_RANGE_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_RANGE_ERROR)
  2268. #define DUK_HTHREAD_STRING_RANGE_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_RANGE_ERROR)
  2269. #define DUK_HEAP_STRING_EVAL_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EVAL_ERROR)
  2270. #define DUK_HTHREAD_STRING_EVAL_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EVAL_ERROR)
  2271. #define DUK_HEAP_STRING_BREAK(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_BREAK)
  2272. #define DUK_HTHREAD_STRING_BREAK(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_BREAK)
  2273. #define DUK_HEAP_STRING_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CASE)
  2274. #define DUK_HTHREAD_STRING_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CASE)
  2275. #define DUK_HEAP_STRING_CATCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CATCH)
  2276. #define DUK_HTHREAD_STRING_CATCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CATCH)
  2277. #define DUK_HEAP_STRING_CONTINUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONTINUE)
  2278. #define DUK_HTHREAD_STRING_CONTINUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONTINUE)
  2279. #define DUK_HEAP_STRING_DEBUGGER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEBUGGER)
  2280. #define DUK_HTHREAD_STRING_DEBUGGER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEBUGGER)
  2281. #define DUK_HEAP_STRING_DEFAULT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEFAULT)
  2282. #define DUK_HTHREAD_STRING_DEFAULT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEFAULT)
  2283. #define DUK_HEAP_STRING_DELETE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DELETE)
  2284. #define DUK_HTHREAD_STRING_DELETE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DELETE)
  2285. #define DUK_HEAP_STRING_DO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DO)
  2286. #define DUK_HTHREAD_STRING_DO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DO)
  2287. #define DUK_HEAP_STRING_ELSE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ELSE)
  2288. #define DUK_HTHREAD_STRING_ELSE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ELSE)
  2289. #define DUK_HEAP_STRING_FINALLY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FINALLY)
  2290. #define DUK_HTHREAD_STRING_FINALLY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FINALLY)
  2291. #define DUK_HEAP_STRING_FOR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FOR)
  2292. #define DUK_HTHREAD_STRING_FOR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FOR)
  2293. #define DUK_HEAP_STRING_LC_FUNCTION(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_FUNCTION)
  2294. #define DUK_HTHREAD_STRING_LC_FUNCTION(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_FUNCTION)
  2295. #define DUK_HEAP_STRING_IF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IF)
  2296. #define DUK_HTHREAD_STRING_IF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IF)
  2297. #define DUK_HEAP_STRING_IN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IN)
  2298. #define DUK_HTHREAD_STRING_IN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IN)
  2299. #define DUK_HEAP_STRING_INSTANCEOF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INSTANCEOF)
  2300. #define DUK_HTHREAD_STRING_INSTANCEOF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INSTANCEOF)
  2301. #define DUK_HEAP_STRING_NEW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NEW)
  2302. #define DUK_HTHREAD_STRING_NEW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NEW)
  2303. #define DUK_HEAP_STRING_RETURN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_RETURN)
  2304. #define DUK_HTHREAD_STRING_RETURN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_RETURN)
  2305. #define DUK_HEAP_STRING_SWITCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SWITCH)
  2306. #define DUK_HTHREAD_STRING_SWITCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SWITCH)
  2307. #define DUK_HEAP_STRING_THIS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_THIS)
  2308. #define DUK_HTHREAD_STRING_THIS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_THIS)
  2309. #define DUK_HEAP_STRING_THROW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_THROW)
  2310. #define DUK_HTHREAD_STRING_THROW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_THROW)
  2311. #define DUK_HEAP_STRING_TRY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TRY)
  2312. #define DUK_HTHREAD_STRING_TRY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TRY)
  2313. #define DUK_HEAP_STRING_TYPEOF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TYPEOF)
  2314. #define DUK_HTHREAD_STRING_TYPEOF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TYPEOF)
  2315. #define DUK_HEAP_STRING_VAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VAR)
  2316. #define DUK_HTHREAD_STRING_VAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VAR)
  2317. #define DUK_HEAP_STRING_VOID(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VOID)
  2318. #define DUK_HTHREAD_STRING_VOID(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VOID)
  2319. #define DUK_HEAP_STRING_WHILE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_WHILE)
  2320. #define DUK_HTHREAD_STRING_WHILE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_WHILE)
  2321. #define DUK_HEAP_STRING_WITH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_WITH)
  2322. #define DUK_HTHREAD_STRING_WITH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_WITH)
  2323. #define DUK_HEAP_STRING_CLASS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CLASS)
  2324. #define DUK_HTHREAD_STRING_CLASS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CLASS)
  2325. #define DUK_HEAP_STRING_CONST(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONST)
  2326. #define DUK_HTHREAD_STRING_CONST(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONST)
  2327. #define DUK_HEAP_STRING_ENUM(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENUM)
  2328. #define DUK_HTHREAD_STRING_ENUM(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENUM)
  2329. #define DUK_HEAP_STRING_EXPORT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EXPORT)
  2330. #define DUK_HTHREAD_STRING_EXPORT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EXPORT)
  2331. #define DUK_HEAP_STRING_EXTENDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EXTENDS)
  2332. #define DUK_HTHREAD_STRING_EXTENDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EXTENDS)
  2333. #define DUK_HEAP_STRING_IMPORT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IMPORT)
  2334. #define DUK_HTHREAD_STRING_IMPORT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IMPORT)
  2335. #define DUK_HEAP_STRING_SUPER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SUPER)
  2336. #define DUK_HTHREAD_STRING_SUPER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SUPER)
  2337. #define DUK_HEAP_STRING_LC_NULL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_NULL)
  2338. #define DUK_HTHREAD_STRING_LC_NULL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_NULL)
  2339. #define DUK_HEAP_STRING_TRUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TRUE)
  2340. #define DUK_HTHREAD_STRING_TRUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TRUE)
  2341. #define DUK_HEAP_STRING_FALSE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FALSE)
  2342. #define DUK_HTHREAD_STRING_FALSE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FALSE)
  2343. #define DUK_HEAP_STRING_IMPLEMENTS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IMPLEMENTS)
  2344. #define DUK_HTHREAD_STRING_IMPLEMENTS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IMPLEMENTS)
  2345. #define DUK_HEAP_STRING_INTERFACE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INTERFACE)
  2346. #define DUK_HTHREAD_STRING_INTERFACE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INTERFACE)
  2347. #define DUK_HEAP_STRING_LET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LET)
  2348. #define DUK_HTHREAD_STRING_LET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LET)
  2349. #define DUK_HEAP_STRING_PACKAGE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PACKAGE)
  2350. #define DUK_HTHREAD_STRING_PACKAGE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PACKAGE)
  2351. #define DUK_HEAP_STRING_PRIVATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PRIVATE)
  2352. #define DUK_HTHREAD_STRING_PRIVATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PRIVATE)
  2353. #define DUK_HEAP_STRING_PROTECTED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PROTECTED)
  2354. #define DUK_HTHREAD_STRING_PROTECTED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PROTECTED)
  2355. #define DUK_HEAP_STRING_PUBLIC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PUBLIC)
  2356. #define DUK_HTHREAD_STRING_PUBLIC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PUBLIC)
  2357. #define DUK_HEAP_STRING_STATIC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_STATIC)
  2358. #define DUK_HTHREAD_STRING_STATIC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_STATIC)
  2359. #define DUK_HEAP_STRING_YIELD(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_YIELD)
  2360. #define DUK_HTHREAD_STRING_YIELD(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_YIELD)
  2361. #define DUK_HEAP_NUM_STRINGS 336
  2362. #define DUK_STRIDX_START_RESERVED 291
  2363. #define DUK_STRIDX_START_STRICT_RESERVED 327
  2364. #define DUK_STRIDX_END_RESERVED 336 /* exclusive endpoint */
  2365. #if !defined(DUK_SINGLE_FILE)
  2366. DUK_INTERNAL_DECL const duk_c_function duk_bi_native_functions[128];
  2367. DUK_INTERNAL_DECL const duk_uint8_t duk_builtins_data[1341];
  2368. #ifdef DUK_USE_BUILTIN_INITJS
  2369. DUK_INTERNAL_DECL const duk_uint8_t duk_initjs_data[187];
  2370. #endif /* DUK_USE_BUILTIN_INITJS */
  2371. #endif /* !DUK_SINGLE_FILE */
  2372. #define DUK_BUILTINS_DATA_LENGTH 1341
  2373. #ifdef DUK_USE_BUILTIN_INITJS
  2374. #define DUK_BUILTIN_INITJS_DATA_LENGTH 187
  2375. #endif /* DUK_USE_BUILTIN_INITJS */
  2376. #define DUK_BIDX_GLOBAL 0
  2377. #define DUK_BIDX_GLOBAL_ENV 1
  2378. #define DUK_BIDX_OBJECT_CONSTRUCTOR 2
  2379. #define DUK_BIDX_OBJECT_PROTOTYPE 3
  2380. #define DUK_BIDX_FUNCTION_CONSTRUCTOR 4
  2381. #define DUK_BIDX_FUNCTION_PROTOTYPE 5
  2382. #define DUK_BIDX_ARRAY_CONSTRUCTOR 6
  2383. #define DUK_BIDX_ARRAY_PROTOTYPE 7
  2384. #define DUK_BIDX_STRING_CONSTRUCTOR 8
  2385. #define DUK_BIDX_STRING_PROTOTYPE 9
  2386. #define DUK_BIDX_BOOLEAN_CONSTRUCTOR 10
  2387. #define DUK_BIDX_BOOLEAN_PROTOTYPE 11
  2388. #define DUK_BIDX_NUMBER_CONSTRUCTOR 12
  2389. #define DUK_BIDX_NUMBER_PROTOTYPE 13
  2390. #define DUK_BIDX_DATE_CONSTRUCTOR 14
  2391. #define DUK_BIDX_DATE_PROTOTYPE 15
  2392. #define DUK_BIDX_REGEXP_CONSTRUCTOR 16
  2393. #define DUK_BIDX_REGEXP_PROTOTYPE 17
  2394. #define DUK_BIDX_ERROR_CONSTRUCTOR 18
  2395. #define DUK_BIDX_ERROR_PROTOTYPE 19
  2396. #define DUK_BIDX_EVAL_ERROR_CONSTRUCTOR 20
  2397. #define DUK_BIDX_EVAL_ERROR_PROTOTYPE 21
  2398. #define DUK_BIDX_RANGE_ERROR_CONSTRUCTOR 22
  2399. #define DUK_BIDX_RANGE_ERROR_PROTOTYPE 23
  2400. #define DUK_BIDX_REFERENCE_ERROR_CONSTRUCTOR 24
  2401. #define DUK_BIDX_REFERENCE_ERROR_PROTOTYPE 25
  2402. #define DUK_BIDX_SYNTAX_ERROR_CONSTRUCTOR 26
  2403. #define DUK_BIDX_SYNTAX_ERROR_PROTOTYPE 27
  2404. #define DUK_BIDX_TYPE_ERROR_CONSTRUCTOR 28
  2405. #define DUK_BIDX_TYPE_ERROR_PROTOTYPE 29
  2406. #define DUK_BIDX_URI_ERROR_CONSTRUCTOR 30
  2407. #define DUK_BIDX_URI_ERROR_PROTOTYPE 31
  2408. #define DUK_BIDX_MATH 32
  2409. #define DUK_BIDX_JSON 33
  2410. #define DUK_BIDX_TYPE_ERROR_THROWER 34
  2411. #define DUK_BIDX_PROXY_CONSTRUCTOR 35
  2412. #define DUK_BIDX_DUKTAPE 36
  2413. #define DUK_BIDX_THREAD_CONSTRUCTOR 37
  2414. #define DUK_BIDX_THREAD_PROTOTYPE 38
  2415. #define DUK_BIDX_BUFFER_CONSTRUCTOR 39
  2416. #define DUK_BIDX_BUFFER_PROTOTYPE 40
  2417. #define DUK_BIDX_POINTER_CONSTRUCTOR 41
  2418. #define DUK_BIDX_POINTER_PROTOTYPE 42
  2419. #define DUK_BIDX_LOGGER_CONSTRUCTOR 43
  2420. #define DUK_BIDX_LOGGER_PROTOTYPE 44
  2421. #define DUK_BIDX_DOUBLE_ERROR 45
  2422. #define DUK_NUM_BUILTINS 46
  2423. #elif defined(DUK_USE_DOUBLE_ME)
  2424. #if !defined(DUK_SINGLE_FILE)
  2425. DUK_INTERNAL_DECL const duk_uint8_t duk_strings_data[1943];
  2426. #endif /* !DUK_SINGLE_FILE */
  2427. #define DUK_STRDATA_DATA_LENGTH 1943
  2428. #define DUK_STRDATA_MAX_STRLEN 24
  2429. #define DUK_STRIDX_UC_LOGGER 0 /* 'Logger' */
  2430. #define DUK_STRIDX_UC_THREAD 1 /* 'Thread' */
  2431. #define DUK_STRIDX_UC_POINTER 2 /* 'Pointer' */
  2432. #define DUK_STRIDX_UC_BUFFER 3 /* 'Buffer' */
  2433. #define DUK_STRIDX_DEC_ENV 4 /* 'DecEnv' */
  2434. #define DUK_STRIDX_OBJ_ENV 5 /* 'ObjEnv' */
  2435. #define DUK_STRIDX_EMPTY_STRING 6 /* '' */
  2436. #define DUK_STRIDX_GLOBAL 7 /* 'global' */
  2437. #define DUK_STRIDX_UC_ARGUMENTS 8 /* 'Arguments' */
  2438. #define DUK_STRIDX_JSON 9 /* 'JSON' */
  2439. #define DUK_STRIDX_MATH 10 /* 'Math' */
  2440. #define DUK_STRIDX_UC_ERROR 11 /* 'Error' */
  2441. #define DUK_STRIDX_REG_EXP 12 /* 'RegExp' */
  2442. #define DUK_STRIDX_DATE 13 /* 'Date' */
  2443. #define DUK_STRIDX_UC_NUMBER 14 /* 'Number' */
  2444. #define DUK_STRIDX_UC_BOOLEAN 15 /* 'Boolean' */
  2445. #define DUK_STRIDX_UC_STRING 16 /* 'String' */
  2446. #define DUK_STRIDX_ARRAY 17 /* 'Array' */
  2447. #define DUK_STRIDX_UC_FUNCTION 18 /* 'Function' */
  2448. #define DUK_STRIDX_UC_OBJECT 19 /* 'Object' */
  2449. #define DUK_STRIDX_UC_NULL 20 /* 'Null' */
  2450. #define DUK_STRIDX_UC_UNDEFINED 21 /* 'Undefined' */
  2451. #define DUK_STRIDX_JSON_EXT_FUNCTION2 22 /* '{_func:true}' */
  2452. #define DUK_STRIDX_JSON_EXT_FUNCTION1 23 /* '{"_func":true}' */
  2453. #define DUK_STRIDX_JSON_EXT_NEGINF 24 /* '{"_ninf":true}' */
  2454. #define DUK_STRIDX_JSON_EXT_POSINF 25 /* '{"_inf":true}' */
  2455. #define DUK_STRIDX_JSON_EXT_NAN 26 /* '{"_nan":true}' */
  2456. #define DUK_STRIDX_JSON_EXT_UNDEFINED 27 /* '{"_undef":true}' */
  2457. #define DUK_STRIDX_TO_LOG_STRING 28 /* 'toLogString' */
  2458. #define DUK_STRIDX_CLOG 29 /* 'clog' */
  2459. #define DUK_STRIDX_LC_L 30 /* 'l' */
  2460. #define DUK_STRIDX_LC_N 31 /* 'n' */
  2461. #define DUK_STRIDX_LC_FATAL 32 /* 'fatal' */
  2462. #define DUK_STRIDX_LC_ERROR 33 /* 'error' */
  2463. #define DUK_STRIDX_LC_WARN 34 /* 'warn' */
  2464. #define DUK_STRIDX_LC_DEBUG 35 /* 'debug' */
  2465. #define DUK_STRIDX_LC_TRACE 36 /* 'trace' */
  2466. #define DUK_STRIDX_RAW 37 /* 'raw' */
  2467. #define DUK_STRIDX_FMT 38 /* 'fmt' */
  2468. #define DUK_STRIDX_CURRENT 39 /* 'current' */
  2469. #define DUK_STRIDX_RESUME 40 /* 'resume' */
  2470. #define DUK_STRIDX_COMPACT 41 /* 'compact' */
  2471. #define DUK_STRIDX_JC 42 /* 'jc' */
  2472. #define DUK_STRIDX_JX 43 /* 'jx' */
  2473. #define DUK_STRIDX_BASE64 44 /* 'base64' */
  2474. #define DUK_STRIDX_HEX 45 /* 'hex' */
  2475. #define DUK_STRIDX_DEC 46 /* 'dec' */
  2476. #define DUK_STRIDX_ENC 47 /* 'enc' */
  2477. #define DUK_STRIDX_FIN 48 /* 'fin' */
  2478. #define DUK_STRIDX_GC 49 /* 'gc' */
  2479. #define DUK_STRIDX_ACT 50 /* 'act' */
  2480. #define DUK_STRIDX_LC_INFO 51 /* 'info' */
  2481. #define DUK_STRIDX_VERSION 52 /* 'version' */
  2482. #define DUK_STRIDX_ENV 53 /* 'env' */
  2483. #define DUK_STRIDX_MOD_LOADED 54 /* 'modLoaded' */
  2484. #define DUK_STRIDX_MOD_SEARCH 55 /* 'modSearch' */
  2485. #define DUK_STRIDX_ERR_THROW 56 /* 'errThrow' */
  2486. #define DUK_STRIDX_ERR_CREATE 57 /* 'errCreate' */
  2487. #define DUK_STRIDX_COMPILE 58 /* 'compile' */
  2488. #define DUK_STRIDX_INT_REGBASE 59 /* '\x00Regbase' */
  2489. #define DUK_STRIDX_INT_THREAD 60 /* '\x00Thread' */
  2490. #define DUK_STRIDX_INT_HANDLER 61 /* '\x00Handler' */
  2491. #define DUK_STRIDX_INT_FINALIZER 62 /* '\x00Finalizer' */
  2492. #define DUK_STRIDX_INT_CALLEE 63 /* '\x00Callee' */
  2493. #define DUK_STRIDX_INT_MAP 64 /* '\x00Map' */
  2494. #define DUK_STRIDX_INT_ARGS 65 /* '\x00Args' */
  2495. #define DUK_STRIDX_INT_THIS 66 /* '\x00This' */
  2496. #define DUK_STRIDX_INT_PC2LINE 67 /* '\x00Pc2line' */
  2497. #define DUK_STRIDX_INT_SOURCE 68 /* '\x00Source' */
  2498. #define DUK_STRIDX_INT_VARENV 69 /* '\x00Varenv' */
  2499. #define DUK_STRIDX_INT_LEXENV 70 /* '\x00Lexenv' */
  2500. #define DUK_STRIDX_INT_VARMAP 71 /* '\x00Varmap' */
  2501. #define DUK_STRIDX_INT_FORMALS 72 /* '\x00Formals' */
  2502. #define DUK_STRIDX_INT_BYTECODE 73 /* '\x00Bytecode' */
  2503. #define DUK_STRIDX_INT_NEXT 74 /* '\x00Next' */
  2504. #define DUK_STRIDX_INT_TARGET 75 /* '\x00Target' */
  2505. #define DUK_STRIDX_INT_VALUE 76 /* '\x00Value' */
  2506. #define DUK_STRIDX_LC_POINTER 77 /* 'pointer' */
  2507. #define DUK_STRIDX_LC_BUFFER 78 /* 'buffer' */
  2508. #define DUK_STRIDX_INT_TRACEDATA 79 /* '\x00Tracedata' */
  2509. #define DUK_STRIDX_LINE_NUMBER 80 /* 'lineNumber' */
  2510. #define DUK_STRIDX_FILE_NAME 81 /* 'fileName' */
  2511. #define DUK_STRIDX_PC 82 /* 'pc' */
  2512. #define DUK_STRIDX_STACK 83 /* 'stack' */
  2513. #define DUK_STRIDX_THROW_TYPE_ERROR 84 /* 'ThrowTypeError' */
  2514. #define DUK_STRIDX_DUKTAPE 85 /* 'Duktape' */
  2515. #define DUK_STRIDX_ID 86 /* 'id' */
  2516. #define DUK_STRIDX_REQUIRE 87 /* 'require' */
  2517. #define DUK_STRIDX___PROTO__ 88 /* '__proto__' */
  2518. #define DUK_STRIDX_SET_PROTOTYPE_OF 89 /* 'setPrototypeOf' */
  2519. #define DUK_STRIDX_OWN_KEYS 90 /* 'ownKeys' */
  2520. #define DUK_STRIDX_ENUMERATE 91 /* 'enumerate' */
  2521. #define DUK_STRIDX_DELETE_PROPERTY 92 /* 'deleteProperty' */
  2522. #define DUK_STRIDX_HAS 93 /* 'has' */
  2523. #define DUK_STRIDX_PROXY 94 /* 'Proxy' */
  2524. #define DUK_STRIDX_CALLEE 95 /* 'callee' */
  2525. #define DUK_STRIDX_INVALID_DATE 96 /* 'Invalid Date' */
  2526. #define DUK_STRIDX_BRACKETED_ELLIPSIS 97 /* '[...]' */
  2527. #define DUK_STRIDX_NEWLINE_TAB 98 /* '\n\t' */
  2528. #define DUK_STRIDX_SPACE 99 /* ' ' */
  2529. #define DUK_STRIDX_COMMA 100 /* ',' */
  2530. #define DUK_STRIDX_MINUS_ZERO 101 /* '-0' */
  2531. #define DUK_STRIDX_PLUS_ZERO 102 /* '+0' */
  2532. #define DUK_STRIDX_ZERO 103 /* '0' */
  2533. #define DUK_STRIDX_MINUS_INFINITY 104 /* '-Infinity' */
  2534. #define DUK_STRIDX_PLUS_INFINITY 105 /* '+Infinity' */
  2535. #define DUK_STRIDX_INFINITY 106 /* 'Infinity' */
  2536. #define DUK_STRIDX_LC_OBJECT 107 /* 'object' */
  2537. #define DUK_STRIDX_LC_STRING 108 /* 'string' */
  2538. #define DUK_STRIDX_LC_NUMBER 109 /* 'number' */
  2539. #define DUK_STRIDX_LC_BOOLEAN 110 /* 'boolean' */
  2540. #define DUK_STRIDX_LC_UNDEFINED 111 /* 'undefined' */
  2541. #define DUK_STRIDX_STRINGIFY 112 /* 'stringify' */
  2542. #define DUK_STRIDX_TAN 113 /* 'tan' */
  2543. #define DUK_STRIDX_SQRT 114 /* 'sqrt' */
  2544. #define DUK_STRIDX_SIN 115 /* 'sin' */
  2545. #define DUK_STRIDX_ROUND 116 /* 'round' */
  2546. #define DUK_STRIDX_RANDOM 117 /* 'random' */
  2547. #define DUK_STRIDX_POW 118 /* 'pow' */
  2548. #define DUK_STRIDX_MIN 119 /* 'min' */
  2549. #define DUK_STRIDX_MAX 120 /* 'max' */
  2550. #define DUK_STRIDX_LOG 121 /* 'log' */
  2551. #define DUK_STRIDX_FLOOR 122 /* 'floor' */
  2552. #define DUK_STRIDX_EXP 123 /* 'exp' */
  2553. #define DUK_STRIDX_COS 124 /* 'cos' */
  2554. #define DUK_STRIDX_CEIL 125 /* 'ceil' */
  2555. #define DUK_STRIDX_ATAN2 126 /* 'atan2' */
  2556. #define DUK_STRIDX_ATAN 127 /* 'atan' */
  2557. #define DUK_STRIDX_ASIN 128 /* 'asin' */
  2558. #define DUK_STRIDX_ACOS 129 /* 'acos' */
  2559. #define DUK_STRIDX_ABS 130 /* 'abs' */
  2560. #define DUK_STRIDX_SQRT2 131 /* 'SQRT2' */
  2561. #define DUK_STRIDX_SQRT1_2 132 /* 'SQRT1_2' */
  2562. #define DUK_STRIDX_PI 133 /* 'PI' */
  2563. #define DUK_STRIDX_LOG10E 134 /* 'LOG10E' */
  2564. #define DUK_STRIDX_LOG2E 135 /* 'LOG2E' */
  2565. #define DUK_STRIDX_LN2 136 /* 'LN2' */
  2566. #define DUK_STRIDX_LN10 137 /* 'LN10' */
  2567. #define DUK_STRIDX_E 138 /* 'E' */
  2568. #define DUK_STRIDX_MESSAGE 139 /* 'message' */
  2569. #define DUK_STRIDX_NAME 140 /* 'name' */
  2570. #define DUK_STRIDX_INPUT 141 /* 'input' */
  2571. #define DUK_STRIDX_INDEX 142 /* 'index' */
  2572. #define DUK_STRIDX_ESCAPED_EMPTY_REGEXP 143 /* '(?:)' */
  2573. #define DUK_STRIDX_LAST_INDEX 144 /* 'lastIndex' */
  2574. #define DUK_STRIDX_MULTILINE 145 /* 'multiline' */
  2575. #define DUK_STRIDX_IGNORE_CASE 146 /* 'ignoreCase' */
  2576. #define DUK_STRIDX_SOURCE 147 /* 'source' */
  2577. #define DUK_STRIDX_TEST 148 /* 'test' */
  2578. #define DUK_STRIDX_EXEC 149 /* 'exec' */
  2579. #define DUK_STRIDX_TO_GMT_STRING 150 /* 'toGMTString' */
  2580. #define DUK_STRIDX_SET_YEAR 151 /* 'setYear' */
  2581. #define DUK_STRIDX_GET_YEAR 152 /* 'getYear' */
  2582. #define DUK_STRIDX_TO_JSON 153 /* 'toJSON' */
  2583. #define DUK_STRIDX_TO_ISO_STRING 154 /* 'toISOString' */
  2584. #define DUK_STRIDX_TO_UTC_STRING 155 /* 'toUTCString' */
  2585. #define DUK_STRIDX_SET_UTC_FULL_YEAR 156 /* 'setUTCFullYear' */
  2586. #define DUK_STRIDX_SET_FULL_YEAR 157 /* 'setFullYear' */
  2587. #define DUK_STRIDX_SET_UTC_MONTH 158 /* 'setUTCMonth' */
  2588. #define DUK_STRIDX_SET_MONTH 159 /* 'setMonth' */
  2589. #define DUK_STRIDX_SET_UTC_DATE 160 /* 'setUTCDate' */
  2590. #define DUK_STRIDX_SET_DATE 161 /* 'setDate' */
  2591. #define DUK_STRIDX_SET_UTC_HOURS 162 /* 'setUTCHours' */
  2592. #define DUK_STRIDX_SET_HOURS 163 /* 'setHours' */
  2593. #define DUK_STRIDX_SET_UTC_MINUTES 164 /* 'setUTCMinutes' */
  2594. #define DUK_STRIDX_SET_MINUTES 165 /* 'setMinutes' */
  2595. #define DUK_STRIDX_SET_UTC_SECONDS 166 /* 'setUTCSeconds' */
  2596. #define DUK_STRIDX_SET_SECONDS 167 /* 'setSeconds' */
  2597. #define DUK_STRIDX_SET_UTC_MILLISECONDS 168 /* 'setUTCMilliseconds' */
  2598. #define DUK_STRIDX_SET_MILLISECONDS 169 /* 'setMilliseconds' */
  2599. #define DUK_STRIDX_SET_TIME 170 /* 'setTime' */
  2600. #define DUK_STRIDX_GET_TIMEZONE_OFFSET 171 /* 'getTimezoneOffset' */
  2601. #define DUK_STRIDX_GET_UTC_MILLISECONDS 172 /* 'getUTCMilliseconds' */
  2602. #define DUK_STRIDX_GET_MILLISECONDS 173 /* 'getMilliseconds' */
  2603. #define DUK_STRIDX_GET_UTC_SECONDS 174 /* 'getUTCSeconds' */
  2604. #define DUK_STRIDX_GET_SECONDS 175 /* 'getSeconds' */
  2605. #define DUK_STRIDX_GET_UTC_MINUTES 176 /* 'getUTCMinutes' */
  2606. #define DUK_STRIDX_GET_MINUTES 177 /* 'getMinutes' */
  2607. #define DUK_STRIDX_GET_UTC_HOURS 178 /* 'getUTCHours' */
  2608. #define DUK_STRIDX_GET_HOURS 179 /* 'getHours' */
  2609. #define DUK_STRIDX_GET_UTC_DAY 180 /* 'getUTCDay' */
  2610. #define DUK_STRIDX_GET_DAY 181 /* 'getDay' */
  2611. #define DUK_STRIDX_GET_UTC_DATE 182 /* 'getUTCDate' */
  2612. #define DUK_STRIDX_GET_DATE 183 /* 'getDate' */
  2613. #define DUK_STRIDX_GET_UTC_MONTH 184 /* 'getUTCMonth' */
  2614. #define DUK_STRIDX_GET_MONTH 185 /* 'getMonth' */
  2615. #define DUK_STRIDX_GET_UTC_FULL_YEAR 186 /* 'getUTCFullYear' */
  2616. #define DUK_STRIDX_GET_FULL_YEAR 187 /* 'getFullYear' */
  2617. #define DUK_STRIDX_GET_TIME 188 /* 'getTime' */
  2618. #define DUK_STRIDX_TO_LOCALE_TIME_STRING 189 /* 'toLocaleTimeString' */
  2619. #define DUK_STRIDX_TO_LOCALE_DATE_STRING 190 /* 'toLocaleDateString' */
  2620. #define DUK_STRIDX_TO_TIME_STRING 191 /* 'toTimeString' */
  2621. #define DUK_STRIDX_TO_DATE_STRING 192 /* 'toDateString' */
  2622. #define DUK_STRIDX_NOW 193 /* 'now' */
  2623. #define DUK_STRIDX_UTC 194 /* 'UTC' */
  2624. #define DUK_STRIDX_PARSE 195 /* 'parse' */
  2625. #define DUK_STRIDX_TO_PRECISION 196 /* 'toPrecision' */
  2626. #define DUK_STRIDX_TO_EXPONENTIAL 197 /* 'toExponential' */
  2627. #define DUK_STRIDX_TO_FIXED 198 /* 'toFixed' */
  2628. #define DUK_STRIDX_POSITIVE_INFINITY 199 /* 'POSITIVE_INFINITY' */
  2629. #define DUK_STRIDX_NEGATIVE_INFINITY 200 /* 'NEGATIVE_INFINITY' */
  2630. #define DUK_STRIDX_NAN 201 /* 'NaN' */
  2631. #define DUK_STRIDX_MIN_VALUE 202 /* 'MIN_VALUE' */
  2632. #define DUK_STRIDX_MAX_VALUE 203 /* 'MAX_VALUE' */
  2633. #define DUK_STRIDX_SUBSTR 204 /* 'substr' */
  2634. #define DUK_STRIDX_TRIM 205 /* 'trim' */
  2635. #define DUK_STRIDX_TO_LOCALE_UPPER_CASE 206 /* 'toLocaleUpperCase' */
  2636. #define DUK_STRIDX_TO_UPPER_CASE 207 /* 'toUpperCase' */
  2637. #define DUK_STRIDX_TO_LOCALE_LOWER_CASE 208 /* 'toLocaleLowerCase' */
  2638. #define DUK_STRIDX_TO_LOWER_CASE 209 /* 'toLowerCase' */
  2639. #define DUK_STRIDX_SUBSTRING 210 /* 'substring' */
  2640. #define DUK_STRIDX_SPLIT 211 /* 'split' */
  2641. #define DUK_STRIDX_SEARCH 212 /* 'search' */
  2642. #define DUK_STRIDX_REPLACE 213 /* 'replace' */
  2643. #define DUK_STRIDX_MATCH 214 /* 'match' */
  2644. #define DUK_STRIDX_LOCALE_COMPARE 215 /* 'localeCompare' */
  2645. #define DUK_STRIDX_CHAR_CODE_AT 216 /* 'charCodeAt' */
  2646. #define DUK_STRIDX_CHAR_AT 217 /* 'charAt' */
  2647. #define DUK_STRIDX_FROM_CHAR_CODE 218 /* 'fromCharCode' */
  2648. #define DUK_STRIDX_REDUCE_RIGHT 219 /* 'reduceRight' */
  2649. #define DUK_STRIDX_REDUCE 220 /* 'reduce' */
  2650. #define DUK_STRIDX_FILTER 221 /* 'filter' */
  2651. #define DUK_STRIDX_MAP 222 /* 'map' */
  2652. #define DUK_STRIDX_FOR_EACH 223 /* 'forEach' */
  2653. #define DUK_STRIDX_SOME 224 /* 'some' */
  2654. #define DUK_STRIDX_EVERY 225 /* 'every' */
  2655. #define DUK_STRIDX_LAST_INDEX_OF 226 /* 'lastIndexOf' */
  2656. #define DUK_STRIDX_INDEX_OF 227 /* 'indexOf' */
  2657. #define DUK_STRIDX_UNSHIFT 228 /* 'unshift' */
  2658. #define DUK_STRIDX_SPLICE 229 /* 'splice' */
  2659. #define DUK_STRIDX_SORT 230 /* 'sort' */
  2660. #define DUK_STRIDX_SLICE 231 /* 'slice' */
  2661. #define DUK_STRIDX_SHIFT 232 /* 'shift' */
  2662. #define DUK_STRIDX_REVERSE 233 /* 'reverse' */
  2663. #define DUK_STRIDX_PUSH 234 /* 'push' */
  2664. #define DUK_STRIDX_POP 235 /* 'pop' */
  2665. #define DUK_STRIDX_JOIN 236 /* 'join' */
  2666. #define DUK_STRIDX_CONCAT 237 /* 'concat' */
  2667. #define DUK_STRIDX_IS_ARRAY 238 /* 'isArray' */
  2668. #define DUK_STRIDX_LC_ARGUMENTS 239 /* 'arguments' */
  2669. #define DUK_STRIDX_CALLER 240 /* 'caller' */
  2670. #define DUK_STRIDX_BIND 241 /* 'bind' */
  2671. #define DUK_STRIDX_CALL 242 /* 'call' */
  2672. #define DUK_STRIDX_APPLY 243 /* 'apply' */
  2673. #define DUK_STRIDX_PROPERTY_IS_ENUMERABLE 244 /* 'propertyIsEnumerable' */
  2674. #define DUK_STRIDX_IS_PROTOTYPE_OF 245 /* 'isPrototypeOf' */
  2675. #define DUK_STRIDX_HAS_OWN_PROPERTY 246 /* 'hasOwnProperty' */
  2676. #define DUK_STRIDX_VALUE_OF 247 /* 'valueOf' */
  2677. #define DUK_STRIDX_TO_LOCALE_STRING 248 /* 'toLocaleString' */
  2678. #define DUK_STRIDX_TO_STRING 249 /* 'toString' */
  2679. #define DUK_STRIDX_CONSTRUCTOR 250 /* 'constructor' */
  2680. #define DUK_STRIDX_SET 251 /* 'set' */
  2681. #define DUK_STRIDX_GET 252 /* 'get' */
  2682. #define DUK_STRIDX_ENUMERABLE 253 /* 'enumerable' */
  2683. #define DUK_STRIDX_CONFIGURABLE 254 /* 'configurable' */
  2684. #define DUK_STRIDX_WRITABLE 255 /* 'writable' */
  2685. #define DUK_STRIDX_VALUE 256 /* 'value' */
  2686. #define DUK_STRIDX_KEYS 257 /* 'keys' */
  2687. #define DUK_STRIDX_IS_EXTENSIBLE 258 /* 'isExtensible' */
  2688. #define DUK_STRIDX_IS_FROZEN 259 /* 'isFrozen' */
  2689. #define DUK_STRIDX_IS_SEALED 260 /* 'isSealed' */
  2690. #define DUK_STRIDX_PREVENT_EXTENSIONS 261 /* 'preventExtensions' */
  2691. #define DUK_STRIDX_FREEZE 262 /* 'freeze' */
  2692. #define DUK_STRIDX_SEAL 263 /* 'seal' */
  2693. #define DUK_STRIDX_DEFINE_PROPERTIES 264 /* 'defineProperties' */
  2694. #define DUK_STRIDX_DEFINE_PROPERTY 265 /* 'defineProperty' */
  2695. #define DUK_STRIDX_CREATE 266 /* 'create' */
  2696. #define DUK_STRIDX_GET_OWN_PROPERTY_NAMES 267 /* 'getOwnPropertyNames' */
  2697. #define DUK_STRIDX_GET_OWN_PROPERTY_DESCRIPTOR 268 /* 'getOwnPropertyDescriptor' */
  2698. #define DUK_STRIDX_GET_PROTOTYPE_OF 269 /* 'getPrototypeOf' */
  2699. #define DUK_STRIDX_PROTOTYPE 270 /* 'prototype' */
  2700. #define DUK_STRIDX_LENGTH 271 /* 'length' */
  2701. #define DUK_STRIDX_ALERT 272 /* 'alert' */
  2702. #define DUK_STRIDX_PRINT 273 /* 'print' */
  2703. #define DUK_STRIDX_UNESCAPE 274 /* 'unescape' */
  2704. #define DUK_STRIDX_ESCAPE 275 /* 'escape' */
  2705. #define DUK_STRIDX_ENCODE_URI_COMPONENT 276 /* 'encodeURIComponent' */
  2706. #define DUK_STRIDX_ENCODE_URI 277 /* 'encodeURI' */
  2707. #define DUK_STRIDX_DECODE_URI_COMPONENT 278 /* 'decodeURIComponent' */
  2708. #define DUK_STRIDX_DECODE_URI 279 /* 'decodeURI' */
  2709. #define DUK_STRIDX_IS_FINITE 280 /* 'isFinite' */
  2710. #define DUK_STRIDX_IS_NAN 281 /* 'isNaN' */
  2711. #define DUK_STRIDX_PARSE_FLOAT 282 /* 'parseFloat' */
  2712. #define DUK_STRIDX_PARSE_INT 283 /* 'parseInt' */
  2713. #define DUK_STRIDX_EVAL 284 /* 'eval' */
  2714. #define DUK_STRIDX_URI_ERROR 285 /* 'URIError' */
  2715. #define DUK_STRIDX_TYPE_ERROR 286 /* 'TypeError' */
  2716. #define DUK_STRIDX_SYNTAX_ERROR 287 /* 'SyntaxError' */
  2717. #define DUK_STRIDX_REFERENCE_ERROR 288 /* 'ReferenceError' */
  2718. #define DUK_STRIDX_RANGE_ERROR 289 /* 'RangeError' */
  2719. #define DUK_STRIDX_EVAL_ERROR 290 /* 'EvalError' */
  2720. #define DUK_STRIDX_BREAK 291 /* 'break' */
  2721. #define DUK_STRIDX_CASE 292 /* 'case' */
  2722. #define DUK_STRIDX_CATCH 293 /* 'catch' */
  2723. #define DUK_STRIDX_CONTINUE 294 /* 'continue' */
  2724. #define DUK_STRIDX_DEBUGGER 295 /* 'debugger' */
  2725. #define DUK_STRIDX_DEFAULT 296 /* 'default' */
  2726. #define DUK_STRIDX_DELETE 297 /* 'delete' */
  2727. #define DUK_STRIDX_DO 298 /* 'do' */
  2728. #define DUK_STRIDX_ELSE 299 /* 'else' */
  2729. #define DUK_STRIDX_FINALLY 300 /* 'finally' */
  2730. #define DUK_STRIDX_FOR 301 /* 'for' */
  2731. #define DUK_STRIDX_LC_FUNCTION 302 /* 'function' */
  2732. #define DUK_STRIDX_IF 303 /* 'if' */
  2733. #define DUK_STRIDX_IN 304 /* 'in' */
  2734. #define DUK_STRIDX_INSTANCEOF 305 /* 'instanceof' */
  2735. #define DUK_STRIDX_NEW 306 /* 'new' */
  2736. #define DUK_STRIDX_RETURN 307 /* 'return' */
  2737. #define DUK_STRIDX_SWITCH 308 /* 'switch' */
  2738. #define DUK_STRIDX_THIS 309 /* 'this' */
  2739. #define DUK_STRIDX_THROW 310 /* 'throw' */
  2740. #define DUK_STRIDX_TRY 311 /* 'try' */
  2741. #define DUK_STRIDX_TYPEOF 312 /* 'typeof' */
  2742. #define DUK_STRIDX_VAR 313 /* 'var' */
  2743. #define DUK_STRIDX_VOID 314 /* 'void' */
  2744. #define DUK_STRIDX_WHILE 315 /* 'while' */
  2745. #define DUK_STRIDX_WITH 316 /* 'with' */
  2746. #define DUK_STRIDX_CLASS 317 /* 'class' */
  2747. #define DUK_STRIDX_CONST 318 /* 'const' */
  2748. #define DUK_STRIDX_ENUM 319 /* 'enum' */
  2749. #define DUK_STRIDX_EXPORT 320 /* 'export' */
  2750. #define DUK_STRIDX_EXTENDS 321 /* 'extends' */
  2751. #define DUK_STRIDX_IMPORT 322 /* 'import' */
  2752. #define DUK_STRIDX_SUPER 323 /* 'super' */
  2753. #define DUK_STRIDX_LC_NULL 324 /* 'null' */
  2754. #define DUK_STRIDX_TRUE 325 /* 'true' */
  2755. #define DUK_STRIDX_FALSE 326 /* 'false' */
  2756. #define DUK_STRIDX_IMPLEMENTS 327 /* 'implements' */
  2757. #define DUK_STRIDX_INTERFACE 328 /* 'interface' */
  2758. #define DUK_STRIDX_LET 329 /* 'let' */
  2759. #define DUK_STRIDX_PACKAGE 330 /* 'package' */
  2760. #define DUK_STRIDX_PRIVATE 331 /* 'private' */
  2761. #define DUK_STRIDX_PROTECTED 332 /* 'protected' */
  2762. #define DUK_STRIDX_PUBLIC 333 /* 'public' */
  2763. #define DUK_STRIDX_STATIC 334 /* 'static' */
  2764. #define DUK_STRIDX_YIELD 335 /* 'yield' */
  2765. #define DUK_HEAP_STRING_UC_LOGGER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_LOGGER)
  2766. #define DUK_HTHREAD_STRING_UC_LOGGER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_LOGGER)
  2767. #define DUK_HEAP_STRING_UC_THREAD(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_THREAD)
  2768. #define DUK_HTHREAD_STRING_UC_THREAD(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_THREAD)
  2769. #define DUK_HEAP_STRING_UC_POINTER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_POINTER)
  2770. #define DUK_HTHREAD_STRING_UC_POINTER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_POINTER)
  2771. #define DUK_HEAP_STRING_UC_BUFFER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_BUFFER)
  2772. #define DUK_HTHREAD_STRING_UC_BUFFER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_BUFFER)
  2773. #define DUK_HEAP_STRING_DEC_ENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEC_ENV)
  2774. #define DUK_HTHREAD_STRING_DEC_ENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEC_ENV)
  2775. #define DUK_HEAP_STRING_OBJ_ENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_OBJ_ENV)
  2776. #define DUK_HTHREAD_STRING_OBJ_ENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_OBJ_ENV)
  2777. #define DUK_HEAP_STRING_EMPTY_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EMPTY_STRING)
  2778. #define DUK_HTHREAD_STRING_EMPTY_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EMPTY_STRING)
  2779. #define DUK_HEAP_STRING_GLOBAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GLOBAL)
  2780. #define DUK_HTHREAD_STRING_GLOBAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GLOBAL)
  2781. #define DUK_HEAP_STRING_UC_ARGUMENTS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_ARGUMENTS)
  2782. #define DUK_HTHREAD_STRING_UC_ARGUMENTS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_ARGUMENTS)
  2783. #define DUK_HEAP_STRING_JSON(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON)
  2784. #define DUK_HTHREAD_STRING_JSON(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON)
  2785. #define DUK_HEAP_STRING_MATH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MATH)
  2786. #define DUK_HTHREAD_STRING_MATH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MATH)
  2787. #define DUK_HEAP_STRING_UC_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_ERROR)
  2788. #define DUK_HTHREAD_STRING_UC_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_ERROR)
  2789. #define DUK_HEAP_STRING_REG_EXP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REG_EXP)
  2790. #define DUK_HTHREAD_STRING_REG_EXP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REG_EXP)
  2791. #define DUK_HEAP_STRING_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DATE)
  2792. #define DUK_HTHREAD_STRING_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DATE)
  2793. #define DUK_HEAP_STRING_UC_NUMBER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_NUMBER)
  2794. #define DUK_HTHREAD_STRING_UC_NUMBER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_NUMBER)
  2795. #define DUK_HEAP_STRING_UC_BOOLEAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_BOOLEAN)
  2796. #define DUK_HTHREAD_STRING_UC_BOOLEAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_BOOLEAN)
  2797. #define DUK_HEAP_STRING_UC_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_STRING)
  2798. #define DUK_HTHREAD_STRING_UC_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_STRING)
  2799. #define DUK_HEAP_STRING_ARRAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ARRAY)
  2800. #define DUK_HTHREAD_STRING_ARRAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ARRAY)
  2801. #define DUK_HEAP_STRING_UC_FUNCTION(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_FUNCTION)
  2802. #define DUK_HTHREAD_STRING_UC_FUNCTION(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_FUNCTION)
  2803. #define DUK_HEAP_STRING_UC_OBJECT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_OBJECT)
  2804. #define DUK_HTHREAD_STRING_UC_OBJECT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_OBJECT)
  2805. #define DUK_HEAP_STRING_UC_NULL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_NULL)
  2806. #define DUK_HTHREAD_STRING_UC_NULL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_NULL)
  2807. #define DUK_HEAP_STRING_UC_UNDEFINED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_UNDEFINED)
  2808. #define DUK_HTHREAD_STRING_UC_UNDEFINED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_UNDEFINED)
  2809. #define DUK_HEAP_STRING_JSON_EXT_FUNCTION2(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_FUNCTION2)
  2810. #define DUK_HTHREAD_STRING_JSON_EXT_FUNCTION2(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_FUNCTION2)
  2811. #define DUK_HEAP_STRING_JSON_EXT_FUNCTION1(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_FUNCTION1)
  2812. #define DUK_HTHREAD_STRING_JSON_EXT_FUNCTION1(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_FUNCTION1)
  2813. #define DUK_HEAP_STRING_JSON_EXT_NEGINF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_NEGINF)
  2814. #define DUK_HTHREAD_STRING_JSON_EXT_NEGINF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_NEGINF)
  2815. #define DUK_HEAP_STRING_JSON_EXT_POSINF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_POSINF)
  2816. #define DUK_HTHREAD_STRING_JSON_EXT_POSINF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_POSINF)
  2817. #define DUK_HEAP_STRING_JSON_EXT_NAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_NAN)
  2818. #define DUK_HTHREAD_STRING_JSON_EXT_NAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_NAN)
  2819. #define DUK_HEAP_STRING_JSON_EXT_UNDEFINED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_UNDEFINED)
  2820. #define DUK_HTHREAD_STRING_JSON_EXT_UNDEFINED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_UNDEFINED)
  2821. #define DUK_HEAP_STRING_TO_LOG_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOG_STRING)
  2822. #define DUK_HTHREAD_STRING_TO_LOG_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOG_STRING)
  2823. #define DUK_HEAP_STRING_CLOG(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CLOG)
  2824. #define DUK_HTHREAD_STRING_CLOG(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CLOG)
  2825. #define DUK_HEAP_STRING_LC_L(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_L)
  2826. #define DUK_HTHREAD_STRING_LC_L(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_L)
  2827. #define DUK_HEAP_STRING_LC_N(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_N)
  2828. #define DUK_HTHREAD_STRING_LC_N(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_N)
  2829. #define DUK_HEAP_STRING_LC_FATAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_FATAL)
  2830. #define DUK_HTHREAD_STRING_LC_FATAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_FATAL)
  2831. #define DUK_HEAP_STRING_LC_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_ERROR)
  2832. #define DUK_HTHREAD_STRING_LC_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_ERROR)
  2833. #define DUK_HEAP_STRING_LC_WARN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_WARN)
  2834. #define DUK_HTHREAD_STRING_LC_WARN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_WARN)
  2835. #define DUK_HEAP_STRING_LC_DEBUG(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_DEBUG)
  2836. #define DUK_HTHREAD_STRING_LC_DEBUG(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_DEBUG)
  2837. #define DUK_HEAP_STRING_LC_TRACE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_TRACE)
  2838. #define DUK_HTHREAD_STRING_LC_TRACE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_TRACE)
  2839. #define DUK_HEAP_STRING_RAW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_RAW)
  2840. #define DUK_HTHREAD_STRING_RAW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_RAW)
  2841. #define DUK_HEAP_STRING_FMT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FMT)
  2842. #define DUK_HTHREAD_STRING_FMT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FMT)
  2843. #define DUK_HEAP_STRING_CURRENT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CURRENT)
  2844. #define DUK_HTHREAD_STRING_CURRENT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CURRENT)
  2845. #define DUK_HEAP_STRING_RESUME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_RESUME)
  2846. #define DUK_HTHREAD_STRING_RESUME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_RESUME)
  2847. #define DUK_HEAP_STRING_COMPACT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_COMPACT)
  2848. #define DUK_HTHREAD_STRING_COMPACT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_COMPACT)
  2849. #define DUK_HEAP_STRING_JC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JC)
  2850. #define DUK_HTHREAD_STRING_JC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JC)
  2851. #define DUK_HEAP_STRING_JX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JX)
  2852. #define DUK_HTHREAD_STRING_JX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JX)
  2853. #define DUK_HEAP_STRING_BASE64(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_BASE64)
  2854. #define DUK_HTHREAD_STRING_BASE64(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_BASE64)
  2855. #define DUK_HEAP_STRING_HEX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_HEX)
  2856. #define DUK_HTHREAD_STRING_HEX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_HEX)
  2857. #define DUK_HEAP_STRING_DEC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEC)
  2858. #define DUK_HTHREAD_STRING_DEC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEC)
  2859. #define DUK_HEAP_STRING_ENC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENC)
  2860. #define DUK_HTHREAD_STRING_ENC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENC)
  2861. #define DUK_HEAP_STRING_FIN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FIN)
  2862. #define DUK_HTHREAD_STRING_FIN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FIN)
  2863. #define DUK_HEAP_STRING_GC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GC)
  2864. #define DUK_HTHREAD_STRING_GC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GC)
  2865. #define DUK_HEAP_STRING_ACT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ACT)
  2866. #define DUK_HTHREAD_STRING_ACT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ACT)
  2867. #define DUK_HEAP_STRING_LC_INFO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_INFO)
  2868. #define DUK_HTHREAD_STRING_LC_INFO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_INFO)
  2869. #define DUK_HEAP_STRING_VERSION(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VERSION)
  2870. #define DUK_HTHREAD_STRING_VERSION(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VERSION)
  2871. #define DUK_HEAP_STRING_ENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENV)
  2872. #define DUK_HTHREAD_STRING_ENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENV)
  2873. #define DUK_HEAP_STRING_MOD_LOADED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MOD_LOADED)
  2874. #define DUK_HTHREAD_STRING_MOD_LOADED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MOD_LOADED)
  2875. #define DUK_HEAP_STRING_MOD_SEARCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MOD_SEARCH)
  2876. #define DUK_HTHREAD_STRING_MOD_SEARCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MOD_SEARCH)
  2877. #define DUK_HEAP_STRING_ERR_THROW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ERR_THROW)
  2878. #define DUK_HTHREAD_STRING_ERR_THROW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ERR_THROW)
  2879. #define DUK_HEAP_STRING_ERR_CREATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ERR_CREATE)
  2880. #define DUK_HTHREAD_STRING_ERR_CREATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ERR_CREATE)
  2881. #define DUK_HEAP_STRING_COMPILE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_COMPILE)
  2882. #define DUK_HTHREAD_STRING_COMPILE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_COMPILE)
  2883. #define DUK_HEAP_STRING_INT_REGBASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_REGBASE)
  2884. #define DUK_HTHREAD_STRING_INT_REGBASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_REGBASE)
  2885. #define DUK_HEAP_STRING_INT_THREAD(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_THREAD)
  2886. #define DUK_HTHREAD_STRING_INT_THREAD(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_THREAD)
  2887. #define DUK_HEAP_STRING_INT_HANDLER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_HANDLER)
  2888. #define DUK_HTHREAD_STRING_INT_HANDLER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_HANDLER)
  2889. #define DUK_HEAP_STRING_INT_FINALIZER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_FINALIZER)
  2890. #define DUK_HTHREAD_STRING_INT_FINALIZER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_FINALIZER)
  2891. #define DUK_HEAP_STRING_INT_CALLEE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_CALLEE)
  2892. #define DUK_HTHREAD_STRING_INT_CALLEE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_CALLEE)
  2893. #define DUK_HEAP_STRING_INT_MAP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_MAP)
  2894. #define DUK_HTHREAD_STRING_INT_MAP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_MAP)
  2895. #define DUK_HEAP_STRING_INT_ARGS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_ARGS)
  2896. #define DUK_HTHREAD_STRING_INT_ARGS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_ARGS)
  2897. #define DUK_HEAP_STRING_INT_THIS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_THIS)
  2898. #define DUK_HTHREAD_STRING_INT_THIS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_THIS)
  2899. #define DUK_HEAP_STRING_INT_PC2LINE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_PC2LINE)
  2900. #define DUK_HTHREAD_STRING_INT_PC2LINE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_PC2LINE)
  2901. #define DUK_HEAP_STRING_INT_SOURCE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_SOURCE)
  2902. #define DUK_HTHREAD_STRING_INT_SOURCE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_SOURCE)
  2903. #define DUK_HEAP_STRING_INT_VARENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_VARENV)
  2904. #define DUK_HTHREAD_STRING_INT_VARENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_VARENV)
  2905. #define DUK_HEAP_STRING_INT_LEXENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_LEXENV)
  2906. #define DUK_HTHREAD_STRING_INT_LEXENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_LEXENV)
  2907. #define DUK_HEAP_STRING_INT_VARMAP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_VARMAP)
  2908. #define DUK_HTHREAD_STRING_INT_VARMAP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_VARMAP)
  2909. #define DUK_HEAP_STRING_INT_FORMALS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_FORMALS)
  2910. #define DUK_HTHREAD_STRING_INT_FORMALS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_FORMALS)
  2911. #define DUK_HEAP_STRING_INT_BYTECODE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_BYTECODE)
  2912. #define DUK_HTHREAD_STRING_INT_BYTECODE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_BYTECODE)
  2913. #define DUK_HEAP_STRING_INT_NEXT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_NEXT)
  2914. #define DUK_HTHREAD_STRING_INT_NEXT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_NEXT)
  2915. #define DUK_HEAP_STRING_INT_TARGET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_TARGET)
  2916. #define DUK_HTHREAD_STRING_INT_TARGET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_TARGET)
  2917. #define DUK_HEAP_STRING_INT_VALUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_VALUE)
  2918. #define DUK_HTHREAD_STRING_INT_VALUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_VALUE)
  2919. #define DUK_HEAP_STRING_LC_POINTER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_POINTER)
  2920. #define DUK_HTHREAD_STRING_LC_POINTER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_POINTER)
  2921. #define DUK_HEAP_STRING_LC_BUFFER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_BUFFER)
  2922. #define DUK_HTHREAD_STRING_LC_BUFFER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_BUFFER)
  2923. #define DUK_HEAP_STRING_INT_TRACEDATA(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_TRACEDATA)
  2924. #define DUK_HTHREAD_STRING_INT_TRACEDATA(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_TRACEDATA)
  2925. #define DUK_HEAP_STRING_LINE_NUMBER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LINE_NUMBER)
  2926. #define DUK_HTHREAD_STRING_LINE_NUMBER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LINE_NUMBER)
  2927. #define DUK_HEAP_STRING_FILE_NAME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FILE_NAME)
  2928. #define DUK_HTHREAD_STRING_FILE_NAME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FILE_NAME)
  2929. #define DUK_HEAP_STRING_PC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PC)
  2930. #define DUK_HTHREAD_STRING_PC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PC)
  2931. #define DUK_HEAP_STRING_STACK(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_STACK)
  2932. #define DUK_HTHREAD_STRING_STACK(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_STACK)
  2933. #define DUK_HEAP_STRING_THROW_TYPE_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_THROW_TYPE_ERROR)
  2934. #define DUK_HTHREAD_STRING_THROW_TYPE_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_THROW_TYPE_ERROR)
  2935. #define DUK_HEAP_STRING_DUKTAPE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DUKTAPE)
  2936. #define DUK_HTHREAD_STRING_DUKTAPE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DUKTAPE)
  2937. #define DUK_HEAP_STRING_ID(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ID)
  2938. #define DUK_HTHREAD_STRING_ID(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ID)
  2939. #define DUK_HEAP_STRING_REQUIRE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REQUIRE)
  2940. #define DUK_HTHREAD_STRING_REQUIRE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REQUIRE)
  2941. #define DUK_HEAP_STRING___PROTO__(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX___PROTO__)
  2942. #define DUK_HTHREAD_STRING___PROTO__(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX___PROTO__)
  2943. #define DUK_HEAP_STRING_SET_PROTOTYPE_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_PROTOTYPE_OF)
  2944. #define DUK_HTHREAD_STRING_SET_PROTOTYPE_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_PROTOTYPE_OF)
  2945. #define DUK_HEAP_STRING_OWN_KEYS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_OWN_KEYS)
  2946. #define DUK_HTHREAD_STRING_OWN_KEYS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_OWN_KEYS)
  2947. #define DUK_HEAP_STRING_ENUMERATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENUMERATE)
  2948. #define DUK_HTHREAD_STRING_ENUMERATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENUMERATE)
  2949. #define DUK_HEAP_STRING_DELETE_PROPERTY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DELETE_PROPERTY)
  2950. #define DUK_HTHREAD_STRING_DELETE_PROPERTY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DELETE_PROPERTY)
  2951. #define DUK_HEAP_STRING_HAS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_HAS)
  2952. #define DUK_HTHREAD_STRING_HAS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_HAS)
  2953. #define DUK_HEAP_STRING_PROXY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PROXY)
  2954. #define DUK_HTHREAD_STRING_PROXY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PROXY)
  2955. #define DUK_HEAP_STRING_CALLEE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CALLEE)
  2956. #define DUK_HTHREAD_STRING_CALLEE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CALLEE)
  2957. #define DUK_HEAP_STRING_INVALID_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INVALID_DATE)
  2958. #define DUK_HTHREAD_STRING_INVALID_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INVALID_DATE)
  2959. #define DUK_HEAP_STRING_BRACKETED_ELLIPSIS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_BRACKETED_ELLIPSIS)
  2960. #define DUK_HTHREAD_STRING_BRACKETED_ELLIPSIS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_BRACKETED_ELLIPSIS)
  2961. #define DUK_HEAP_STRING_NEWLINE_TAB(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NEWLINE_TAB)
  2962. #define DUK_HTHREAD_STRING_NEWLINE_TAB(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NEWLINE_TAB)
  2963. #define DUK_HEAP_STRING_SPACE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SPACE)
  2964. #define DUK_HTHREAD_STRING_SPACE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SPACE)
  2965. #define DUK_HEAP_STRING_COMMA(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_COMMA)
  2966. #define DUK_HTHREAD_STRING_COMMA(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_COMMA)
  2967. #define DUK_HEAP_STRING_MINUS_ZERO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MINUS_ZERO)
  2968. #define DUK_HTHREAD_STRING_MINUS_ZERO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MINUS_ZERO)
  2969. #define DUK_HEAP_STRING_PLUS_ZERO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PLUS_ZERO)
  2970. #define DUK_HTHREAD_STRING_PLUS_ZERO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PLUS_ZERO)
  2971. #define DUK_HEAP_STRING_ZERO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ZERO)
  2972. #define DUK_HTHREAD_STRING_ZERO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ZERO)
  2973. #define DUK_HEAP_STRING_MINUS_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MINUS_INFINITY)
  2974. #define DUK_HTHREAD_STRING_MINUS_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MINUS_INFINITY)
  2975. #define DUK_HEAP_STRING_PLUS_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PLUS_INFINITY)
  2976. #define DUK_HTHREAD_STRING_PLUS_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PLUS_INFINITY)
  2977. #define DUK_HEAP_STRING_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INFINITY)
  2978. #define DUK_HTHREAD_STRING_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INFINITY)
  2979. #define DUK_HEAP_STRING_LC_OBJECT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_OBJECT)
  2980. #define DUK_HTHREAD_STRING_LC_OBJECT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_OBJECT)
  2981. #define DUK_HEAP_STRING_LC_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_STRING)
  2982. #define DUK_HTHREAD_STRING_LC_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_STRING)
  2983. #define DUK_HEAP_STRING_LC_NUMBER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_NUMBER)
  2984. #define DUK_HTHREAD_STRING_LC_NUMBER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_NUMBER)
  2985. #define DUK_HEAP_STRING_LC_BOOLEAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_BOOLEAN)
  2986. #define DUK_HTHREAD_STRING_LC_BOOLEAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_BOOLEAN)
  2987. #define DUK_HEAP_STRING_LC_UNDEFINED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_UNDEFINED)
  2988. #define DUK_HTHREAD_STRING_LC_UNDEFINED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_UNDEFINED)
  2989. #define DUK_HEAP_STRING_STRINGIFY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_STRINGIFY)
  2990. #define DUK_HTHREAD_STRING_STRINGIFY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_STRINGIFY)
  2991. #define DUK_HEAP_STRING_TAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TAN)
  2992. #define DUK_HTHREAD_STRING_TAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TAN)
  2993. #define DUK_HEAP_STRING_SQRT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SQRT)
  2994. #define DUK_HTHREAD_STRING_SQRT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SQRT)
  2995. #define DUK_HEAP_STRING_SIN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SIN)
  2996. #define DUK_HTHREAD_STRING_SIN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SIN)
  2997. #define DUK_HEAP_STRING_ROUND(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ROUND)
  2998. #define DUK_HTHREAD_STRING_ROUND(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ROUND)
  2999. #define DUK_HEAP_STRING_RANDOM(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_RANDOM)
  3000. #define DUK_HTHREAD_STRING_RANDOM(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_RANDOM)
  3001. #define DUK_HEAP_STRING_POW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_POW)
  3002. #define DUK_HTHREAD_STRING_POW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_POW)
  3003. #define DUK_HEAP_STRING_MIN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MIN)
  3004. #define DUK_HTHREAD_STRING_MIN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MIN)
  3005. #define DUK_HEAP_STRING_MAX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MAX)
  3006. #define DUK_HTHREAD_STRING_MAX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MAX)
  3007. #define DUK_HEAP_STRING_LOG(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LOG)
  3008. #define DUK_HTHREAD_STRING_LOG(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LOG)
  3009. #define DUK_HEAP_STRING_FLOOR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FLOOR)
  3010. #define DUK_HTHREAD_STRING_FLOOR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FLOOR)
  3011. #define DUK_HEAP_STRING_EXP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EXP)
  3012. #define DUK_HTHREAD_STRING_EXP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EXP)
  3013. #define DUK_HEAP_STRING_COS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_COS)
  3014. #define DUK_HTHREAD_STRING_COS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_COS)
  3015. #define DUK_HEAP_STRING_CEIL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CEIL)
  3016. #define DUK_HTHREAD_STRING_CEIL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CEIL)
  3017. #define DUK_HEAP_STRING_ATAN2(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ATAN2)
  3018. #define DUK_HTHREAD_STRING_ATAN2(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ATAN2)
  3019. #define DUK_HEAP_STRING_ATAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ATAN)
  3020. #define DUK_HTHREAD_STRING_ATAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ATAN)
  3021. #define DUK_HEAP_STRING_ASIN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ASIN)
  3022. #define DUK_HTHREAD_STRING_ASIN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ASIN)
  3023. #define DUK_HEAP_STRING_ACOS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ACOS)
  3024. #define DUK_HTHREAD_STRING_ACOS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ACOS)
  3025. #define DUK_HEAP_STRING_ABS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ABS)
  3026. #define DUK_HTHREAD_STRING_ABS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ABS)
  3027. #define DUK_HEAP_STRING_SQRT2(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SQRT2)
  3028. #define DUK_HTHREAD_STRING_SQRT2(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SQRT2)
  3029. #define DUK_HEAP_STRING_SQRT1_2(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SQRT1_2)
  3030. #define DUK_HTHREAD_STRING_SQRT1_2(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SQRT1_2)
  3031. #define DUK_HEAP_STRING_PI(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PI)
  3032. #define DUK_HTHREAD_STRING_PI(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PI)
  3033. #define DUK_HEAP_STRING_LOG10E(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LOG10E)
  3034. #define DUK_HTHREAD_STRING_LOG10E(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LOG10E)
  3035. #define DUK_HEAP_STRING_LOG2E(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LOG2E)
  3036. #define DUK_HTHREAD_STRING_LOG2E(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LOG2E)
  3037. #define DUK_HEAP_STRING_LN2(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LN2)
  3038. #define DUK_HTHREAD_STRING_LN2(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LN2)
  3039. #define DUK_HEAP_STRING_LN10(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LN10)
  3040. #define DUK_HTHREAD_STRING_LN10(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LN10)
  3041. #define DUK_HEAP_STRING_E(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_E)
  3042. #define DUK_HTHREAD_STRING_E(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_E)
  3043. #define DUK_HEAP_STRING_MESSAGE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MESSAGE)
  3044. #define DUK_HTHREAD_STRING_MESSAGE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MESSAGE)
  3045. #define DUK_HEAP_STRING_NAME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NAME)
  3046. #define DUK_HTHREAD_STRING_NAME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NAME)
  3047. #define DUK_HEAP_STRING_INPUT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INPUT)
  3048. #define DUK_HTHREAD_STRING_INPUT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INPUT)
  3049. #define DUK_HEAP_STRING_INDEX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INDEX)
  3050. #define DUK_HTHREAD_STRING_INDEX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INDEX)
  3051. #define DUK_HEAP_STRING_ESCAPED_EMPTY_REGEXP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ESCAPED_EMPTY_REGEXP)
  3052. #define DUK_HTHREAD_STRING_ESCAPED_EMPTY_REGEXP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ESCAPED_EMPTY_REGEXP)
  3053. #define DUK_HEAP_STRING_LAST_INDEX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LAST_INDEX)
  3054. #define DUK_HTHREAD_STRING_LAST_INDEX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LAST_INDEX)
  3055. #define DUK_HEAP_STRING_MULTILINE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MULTILINE)
  3056. #define DUK_HTHREAD_STRING_MULTILINE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MULTILINE)
  3057. #define DUK_HEAP_STRING_IGNORE_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IGNORE_CASE)
  3058. #define DUK_HTHREAD_STRING_IGNORE_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IGNORE_CASE)
  3059. #define DUK_HEAP_STRING_SOURCE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SOURCE)
  3060. #define DUK_HTHREAD_STRING_SOURCE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SOURCE)
  3061. #define DUK_HEAP_STRING_TEST(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TEST)
  3062. #define DUK_HTHREAD_STRING_TEST(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TEST)
  3063. #define DUK_HEAP_STRING_EXEC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EXEC)
  3064. #define DUK_HTHREAD_STRING_EXEC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EXEC)
  3065. #define DUK_HEAP_STRING_TO_GMT_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_GMT_STRING)
  3066. #define DUK_HTHREAD_STRING_TO_GMT_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_GMT_STRING)
  3067. #define DUK_HEAP_STRING_SET_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_YEAR)
  3068. #define DUK_HTHREAD_STRING_SET_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_YEAR)
  3069. #define DUK_HEAP_STRING_GET_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_YEAR)
  3070. #define DUK_HTHREAD_STRING_GET_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_YEAR)
  3071. #define DUK_HEAP_STRING_TO_JSON(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_JSON)
  3072. #define DUK_HTHREAD_STRING_TO_JSON(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_JSON)
  3073. #define DUK_HEAP_STRING_TO_ISO_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_ISO_STRING)
  3074. #define DUK_HTHREAD_STRING_TO_ISO_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_ISO_STRING)
  3075. #define DUK_HEAP_STRING_TO_UTC_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_UTC_STRING)
  3076. #define DUK_HTHREAD_STRING_TO_UTC_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_UTC_STRING)
  3077. #define DUK_HEAP_STRING_SET_UTC_FULL_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_FULL_YEAR)
  3078. #define DUK_HTHREAD_STRING_SET_UTC_FULL_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_FULL_YEAR)
  3079. #define DUK_HEAP_STRING_SET_FULL_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_FULL_YEAR)
  3080. #define DUK_HTHREAD_STRING_SET_FULL_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_FULL_YEAR)
  3081. #define DUK_HEAP_STRING_SET_UTC_MONTH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_MONTH)
  3082. #define DUK_HTHREAD_STRING_SET_UTC_MONTH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_MONTH)
  3083. #define DUK_HEAP_STRING_SET_MONTH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_MONTH)
  3084. #define DUK_HTHREAD_STRING_SET_MONTH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_MONTH)
  3085. #define DUK_HEAP_STRING_SET_UTC_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_DATE)
  3086. #define DUK_HTHREAD_STRING_SET_UTC_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_DATE)
  3087. #define DUK_HEAP_STRING_SET_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_DATE)
  3088. #define DUK_HTHREAD_STRING_SET_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_DATE)
  3089. #define DUK_HEAP_STRING_SET_UTC_HOURS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_HOURS)
  3090. #define DUK_HTHREAD_STRING_SET_UTC_HOURS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_HOURS)
  3091. #define DUK_HEAP_STRING_SET_HOURS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_HOURS)
  3092. #define DUK_HTHREAD_STRING_SET_HOURS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_HOURS)
  3093. #define DUK_HEAP_STRING_SET_UTC_MINUTES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_MINUTES)
  3094. #define DUK_HTHREAD_STRING_SET_UTC_MINUTES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_MINUTES)
  3095. #define DUK_HEAP_STRING_SET_MINUTES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_MINUTES)
  3096. #define DUK_HTHREAD_STRING_SET_MINUTES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_MINUTES)
  3097. #define DUK_HEAP_STRING_SET_UTC_SECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_SECONDS)
  3098. #define DUK_HTHREAD_STRING_SET_UTC_SECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_SECONDS)
  3099. #define DUK_HEAP_STRING_SET_SECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_SECONDS)
  3100. #define DUK_HTHREAD_STRING_SET_SECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_SECONDS)
  3101. #define DUK_HEAP_STRING_SET_UTC_MILLISECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_UTC_MILLISECONDS)
  3102. #define DUK_HTHREAD_STRING_SET_UTC_MILLISECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_UTC_MILLISECONDS)
  3103. #define DUK_HEAP_STRING_SET_MILLISECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_MILLISECONDS)
  3104. #define DUK_HTHREAD_STRING_SET_MILLISECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_MILLISECONDS)
  3105. #define DUK_HEAP_STRING_SET_TIME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_TIME)
  3106. #define DUK_HTHREAD_STRING_SET_TIME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_TIME)
  3107. #define DUK_HEAP_STRING_GET_TIMEZONE_OFFSET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_TIMEZONE_OFFSET)
  3108. #define DUK_HTHREAD_STRING_GET_TIMEZONE_OFFSET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_TIMEZONE_OFFSET)
  3109. #define DUK_HEAP_STRING_GET_UTC_MILLISECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_MILLISECONDS)
  3110. #define DUK_HTHREAD_STRING_GET_UTC_MILLISECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_MILLISECONDS)
  3111. #define DUK_HEAP_STRING_GET_MILLISECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_MILLISECONDS)
  3112. #define DUK_HTHREAD_STRING_GET_MILLISECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_MILLISECONDS)
  3113. #define DUK_HEAP_STRING_GET_UTC_SECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_SECONDS)
  3114. #define DUK_HTHREAD_STRING_GET_UTC_SECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_SECONDS)
  3115. #define DUK_HEAP_STRING_GET_SECONDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_SECONDS)
  3116. #define DUK_HTHREAD_STRING_GET_SECONDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_SECONDS)
  3117. #define DUK_HEAP_STRING_GET_UTC_MINUTES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_MINUTES)
  3118. #define DUK_HTHREAD_STRING_GET_UTC_MINUTES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_MINUTES)
  3119. #define DUK_HEAP_STRING_GET_MINUTES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_MINUTES)
  3120. #define DUK_HTHREAD_STRING_GET_MINUTES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_MINUTES)
  3121. #define DUK_HEAP_STRING_GET_UTC_HOURS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_HOURS)
  3122. #define DUK_HTHREAD_STRING_GET_UTC_HOURS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_HOURS)
  3123. #define DUK_HEAP_STRING_GET_HOURS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_HOURS)
  3124. #define DUK_HTHREAD_STRING_GET_HOURS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_HOURS)
  3125. #define DUK_HEAP_STRING_GET_UTC_DAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_DAY)
  3126. #define DUK_HTHREAD_STRING_GET_UTC_DAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_DAY)
  3127. #define DUK_HEAP_STRING_GET_DAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_DAY)
  3128. #define DUK_HTHREAD_STRING_GET_DAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_DAY)
  3129. #define DUK_HEAP_STRING_GET_UTC_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_DATE)
  3130. #define DUK_HTHREAD_STRING_GET_UTC_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_DATE)
  3131. #define DUK_HEAP_STRING_GET_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_DATE)
  3132. #define DUK_HTHREAD_STRING_GET_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_DATE)
  3133. #define DUK_HEAP_STRING_GET_UTC_MONTH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_MONTH)
  3134. #define DUK_HTHREAD_STRING_GET_UTC_MONTH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_MONTH)
  3135. #define DUK_HEAP_STRING_GET_MONTH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_MONTH)
  3136. #define DUK_HTHREAD_STRING_GET_MONTH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_MONTH)
  3137. #define DUK_HEAP_STRING_GET_UTC_FULL_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_UTC_FULL_YEAR)
  3138. #define DUK_HTHREAD_STRING_GET_UTC_FULL_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_UTC_FULL_YEAR)
  3139. #define DUK_HEAP_STRING_GET_FULL_YEAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_FULL_YEAR)
  3140. #define DUK_HTHREAD_STRING_GET_FULL_YEAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_FULL_YEAR)
  3141. #define DUK_HEAP_STRING_GET_TIME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_TIME)
  3142. #define DUK_HTHREAD_STRING_GET_TIME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_TIME)
  3143. #define DUK_HEAP_STRING_TO_LOCALE_TIME_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOCALE_TIME_STRING)
  3144. #define DUK_HTHREAD_STRING_TO_LOCALE_TIME_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOCALE_TIME_STRING)
  3145. #define DUK_HEAP_STRING_TO_LOCALE_DATE_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOCALE_DATE_STRING)
  3146. #define DUK_HTHREAD_STRING_TO_LOCALE_DATE_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOCALE_DATE_STRING)
  3147. #define DUK_HEAP_STRING_TO_TIME_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_TIME_STRING)
  3148. #define DUK_HTHREAD_STRING_TO_TIME_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_TIME_STRING)
  3149. #define DUK_HEAP_STRING_TO_DATE_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_DATE_STRING)
  3150. #define DUK_HTHREAD_STRING_TO_DATE_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_DATE_STRING)
  3151. #define DUK_HEAP_STRING_NOW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NOW)
  3152. #define DUK_HTHREAD_STRING_NOW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NOW)
  3153. #define DUK_HEAP_STRING_UTC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UTC)
  3154. #define DUK_HTHREAD_STRING_UTC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UTC)
  3155. #define DUK_HEAP_STRING_PARSE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PARSE)
  3156. #define DUK_HTHREAD_STRING_PARSE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PARSE)
  3157. #define DUK_HEAP_STRING_TO_PRECISION(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_PRECISION)
  3158. #define DUK_HTHREAD_STRING_TO_PRECISION(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_PRECISION)
  3159. #define DUK_HEAP_STRING_TO_EXPONENTIAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_EXPONENTIAL)
  3160. #define DUK_HTHREAD_STRING_TO_EXPONENTIAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_EXPONENTIAL)
  3161. #define DUK_HEAP_STRING_TO_FIXED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_FIXED)
  3162. #define DUK_HTHREAD_STRING_TO_FIXED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_FIXED)
  3163. #define DUK_HEAP_STRING_POSITIVE_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_POSITIVE_INFINITY)
  3164. #define DUK_HTHREAD_STRING_POSITIVE_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_POSITIVE_INFINITY)
  3165. #define DUK_HEAP_STRING_NEGATIVE_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NEGATIVE_INFINITY)
  3166. #define DUK_HTHREAD_STRING_NEGATIVE_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NEGATIVE_INFINITY)
  3167. #define DUK_HEAP_STRING_NAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NAN)
  3168. #define DUK_HTHREAD_STRING_NAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NAN)
  3169. #define DUK_HEAP_STRING_MIN_VALUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MIN_VALUE)
  3170. #define DUK_HTHREAD_STRING_MIN_VALUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MIN_VALUE)
  3171. #define DUK_HEAP_STRING_MAX_VALUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MAX_VALUE)
  3172. #define DUK_HTHREAD_STRING_MAX_VALUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MAX_VALUE)
  3173. #define DUK_HEAP_STRING_SUBSTR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SUBSTR)
  3174. #define DUK_HTHREAD_STRING_SUBSTR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SUBSTR)
  3175. #define DUK_HEAP_STRING_TRIM(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TRIM)
  3176. #define DUK_HTHREAD_STRING_TRIM(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TRIM)
  3177. #define DUK_HEAP_STRING_TO_LOCALE_UPPER_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOCALE_UPPER_CASE)
  3178. #define DUK_HTHREAD_STRING_TO_LOCALE_UPPER_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOCALE_UPPER_CASE)
  3179. #define DUK_HEAP_STRING_TO_UPPER_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_UPPER_CASE)
  3180. #define DUK_HTHREAD_STRING_TO_UPPER_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_UPPER_CASE)
  3181. #define DUK_HEAP_STRING_TO_LOCALE_LOWER_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOCALE_LOWER_CASE)
  3182. #define DUK_HTHREAD_STRING_TO_LOCALE_LOWER_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOCALE_LOWER_CASE)
  3183. #define DUK_HEAP_STRING_TO_LOWER_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOWER_CASE)
  3184. #define DUK_HTHREAD_STRING_TO_LOWER_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOWER_CASE)
  3185. #define DUK_HEAP_STRING_SUBSTRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SUBSTRING)
  3186. #define DUK_HTHREAD_STRING_SUBSTRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SUBSTRING)
  3187. #define DUK_HEAP_STRING_SPLIT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SPLIT)
  3188. #define DUK_HTHREAD_STRING_SPLIT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SPLIT)
  3189. #define DUK_HEAP_STRING_SEARCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SEARCH)
  3190. #define DUK_HTHREAD_STRING_SEARCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SEARCH)
  3191. #define DUK_HEAP_STRING_REPLACE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REPLACE)
  3192. #define DUK_HTHREAD_STRING_REPLACE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REPLACE)
  3193. #define DUK_HEAP_STRING_MATCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MATCH)
  3194. #define DUK_HTHREAD_STRING_MATCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MATCH)
  3195. #define DUK_HEAP_STRING_LOCALE_COMPARE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LOCALE_COMPARE)
  3196. #define DUK_HTHREAD_STRING_LOCALE_COMPARE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LOCALE_COMPARE)
  3197. #define DUK_HEAP_STRING_CHAR_CODE_AT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CHAR_CODE_AT)
  3198. #define DUK_HTHREAD_STRING_CHAR_CODE_AT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CHAR_CODE_AT)
  3199. #define DUK_HEAP_STRING_CHAR_AT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CHAR_AT)
  3200. #define DUK_HTHREAD_STRING_CHAR_AT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CHAR_AT)
  3201. #define DUK_HEAP_STRING_FROM_CHAR_CODE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FROM_CHAR_CODE)
  3202. #define DUK_HTHREAD_STRING_FROM_CHAR_CODE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FROM_CHAR_CODE)
  3203. #define DUK_HEAP_STRING_REDUCE_RIGHT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REDUCE_RIGHT)
  3204. #define DUK_HTHREAD_STRING_REDUCE_RIGHT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REDUCE_RIGHT)
  3205. #define DUK_HEAP_STRING_REDUCE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REDUCE)
  3206. #define DUK_HTHREAD_STRING_REDUCE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REDUCE)
  3207. #define DUK_HEAP_STRING_FILTER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FILTER)
  3208. #define DUK_HTHREAD_STRING_FILTER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FILTER)
  3209. #define DUK_HEAP_STRING_MAP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MAP)
  3210. #define DUK_HTHREAD_STRING_MAP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MAP)
  3211. #define DUK_HEAP_STRING_FOR_EACH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FOR_EACH)
  3212. #define DUK_HTHREAD_STRING_FOR_EACH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FOR_EACH)
  3213. #define DUK_HEAP_STRING_SOME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SOME)
  3214. #define DUK_HTHREAD_STRING_SOME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SOME)
  3215. #define DUK_HEAP_STRING_EVERY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EVERY)
  3216. #define DUK_HTHREAD_STRING_EVERY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EVERY)
  3217. #define DUK_HEAP_STRING_LAST_INDEX_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LAST_INDEX_OF)
  3218. #define DUK_HTHREAD_STRING_LAST_INDEX_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LAST_INDEX_OF)
  3219. #define DUK_HEAP_STRING_INDEX_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INDEX_OF)
  3220. #define DUK_HTHREAD_STRING_INDEX_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INDEX_OF)
  3221. #define DUK_HEAP_STRING_UNSHIFT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UNSHIFT)
  3222. #define DUK_HTHREAD_STRING_UNSHIFT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UNSHIFT)
  3223. #define DUK_HEAP_STRING_SPLICE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SPLICE)
  3224. #define DUK_HTHREAD_STRING_SPLICE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SPLICE)
  3225. #define DUK_HEAP_STRING_SORT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SORT)
  3226. #define DUK_HTHREAD_STRING_SORT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SORT)
  3227. #define DUK_HEAP_STRING_SLICE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SLICE)
  3228. #define DUK_HTHREAD_STRING_SLICE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SLICE)
  3229. #define DUK_HEAP_STRING_SHIFT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SHIFT)
  3230. #define DUK_HTHREAD_STRING_SHIFT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SHIFT)
  3231. #define DUK_HEAP_STRING_REVERSE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REVERSE)
  3232. #define DUK_HTHREAD_STRING_REVERSE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REVERSE)
  3233. #define DUK_HEAP_STRING_PUSH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PUSH)
  3234. #define DUK_HTHREAD_STRING_PUSH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PUSH)
  3235. #define DUK_HEAP_STRING_POP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_POP)
  3236. #define DUK_HTHREAD_STRING_POP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_POP)
  3237. #define DUK_HEAP_STRING_JOIN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JOIN)
  3238. #define DUK_HTHREAD_STRING_JOIN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JOIN)
  3239. #define DUK_HEAP_STRING_CONCAT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONCAT)
  3240. #define DUK_HTHREAD_STRING_CONCAT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONCAT)
  3241. #define DUK_HEAP_STRING_IS_ARRAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_ARRAY)
  3242. #define DUK_HTHREAD_STRING_IS_ARRAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_ARRAY)
  3243. #define DUK_HEAP_STRING_LC_ARGUMENTS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_ARGUMENTS)
  3244. #define DUK_HTHREAD_STRING_LC_ARGUMENTS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_ARGUMENTS)
  3245. #define DUK_HEAP_STRING_CALLER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CALLER)
  3246. #define DUK_HTHREAD_STRING_CALLER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CALLER)
  3247. #define DUK_HEAP_STRING_BIND(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_BIND)
  3248. #define DUK_HTHREAD_STRING_BIND(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_BIND)
  3249. #define DUK_HEAP_STRING_CALL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CALL)
  3250. #define DUK_HTHREAD_STRING_CALL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CALL)
  3251. #define DUK_HEAP_STRING_APPLY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_APPLY)
  3252. #define DUK_HTHREAD_STRING_APPLY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_APPLY)
  3253. #define DUK_HEAP_STRING_PROPERTY_IS_ENUMERABLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PROPERTY_IS_ENUMERABLE)
  3254. #define DUK_HTHREAD_STRING_PROPERTY_IS_ENUMERABLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PROPERTY_IS_ENUMERABLE)
  3255. #define DUK_HEAP_STRING_IS_PROTOTYPE_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_PROTOTYPE_OF)
  3256. #define DUK_HTHREAD_STRING_IS_PROTOTYPE_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_PROTOTYPE_OF)
  3257. #define DUK_HEAP_STRING_HAS_OWN_PROPERTY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_HAS_OWN_PROPERTY)
  3258. #define DUK_HTHREAD_STRING_HAS_OWN_PROPERTY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_HAS_OWN_PROPERTY)
  3259. #define DUK_HEAP_STRING_VALUE_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VALUE_OF)
  3260. #define DUK_HTHREAD_STRING_VALUE_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VALUE_OF)
  3261. #define DUK_HEAP_STRING_TO_LOCALE_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOCALE_STRING)
  3262. #define DUK_HTHREAD_STRING_TO_LOCALE_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOCALE_STRING)
  3263. #define DUK_HEAP_STRING_TO_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_STRING)
  3264. #define DUK_HTHREAD_STRING_TO_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_STRING)
  3265. #define DUK_HEAP_STRING_CONSTRUCTOR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONSTRUCTOR)
  3266. #define DUK_HTHREAD_STRING_CONSTRUCTOR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONSTRUCTOR)
  3267. #define DUK_HEAP_STRING_SET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET)
  3268. #define DUK_HTHREAD_STRING_SET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET)
  3269. #define DUK_HEAP_STRING_GET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET)
  3270. #define DUK_HTHREAD_STRING_GET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET)
  3271. #define DUK_HEAP_STRING_ENUMERABLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENUMERABLE)
  3272. #define DUK_HTHREAD_STRING_ENUMERABLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENUMERABLE)
  3273. #define DUK_HEAP_STRING_CONFIGURABLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONFIGURABLE)
  3274. #define DUK_HTHREAD_STRING_CONFIGURABLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONFIGURABLE)
  3275. #define DUK_HEAP_STRING_WRITABLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_WRITABLE)
  3276. #define DUK_HTHREAD_STRING_WRITABLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_WRITABLE)
  3277. #define DUK_HEAP_STRING_VALUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VALUE)
  3278. #define DUK_HTHREAD_STRING_VALUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VALUE)
  3279. #define DUK_HEAP_STRING_KEYS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_KEYS)
  3280. #define DUK_HTHREAD_STRING_KEYS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_KEYS)
  3281. #define DUK_HEAP_STRING_IS_EXTENSIBLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_EXTENSIBLE)
  3282. #define DUK_HTHREAD_STRING_IS_EXTENSIBLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_EXTENSIBLE)
  3283. #define DUK_HEAP_STRING_IS_FROZEN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_FROZEN)
  3284. #define DUK_HTHREAD_STRING_IS_FROZEN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_FROZEN)
  3285. #define DUK_HEAP_STRING_IS_SEALED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_SEALED)
  3286. #define DUK_HTHREAD_STRING_IS_SEALED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_SEALED)
  3287. #define DUK_HEAP_STRING_PREVENT_EXTENSIONS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PREVENT_EXTENSIONS)
  3288. #define DUK_HTHREAD_STRING_PREVENT_EXTENSIONS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PREVENT_EXTENSIONS)
  3289. #define DUK_HEAP_STRING_FREEZE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FREEZE)
  3290. #define DUK_HTHREAD_STRING_FREEZE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FREEZE)
  3291. #define DUK_HEAP_STRING_SEAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SEAL)
  3292. #define DUK_HTHREAD_STRING_SEAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SEAL)
  3293. #define DUK_HEAP_STRING_DEFINE_PROPERTIES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEFINE_PROPERTIES)
  3294. #define DUK_HTHREAD_STRING_DEFINE_PROPERTIES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEFINE_PROPERTIES)
  3295. #define DUK_HEAP_STRING_DEFINE_PROPERTY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEFINE_PROPERTY)
  3296. #define DUK_HTHREAD_STRING_DEFINE_PROPERTY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEFINE_PROPERTY)
  3297. #define DUK_HEAP_STRING_CREATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CREATE)
  3298. #define DUK_HTHREAD_STRING_CREATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CREATE)
  3299. #define DUK_HEAP_STRING_GET_OWN_PROPERTY_NAMES(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_OWN_PROPERTY_NAMES)
  3300. #define DUK_HTHREAD_STRING_GET_OWN_PROPERTY_NAMES(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_OWN_PROPERTY_NAMES)
  3301. #define DUK_HEAP_STRING_GET_OWN_PROPERTY_DESCRIPTOR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_OWN_PROPERTY_DESCRIPTOR)
  3302. #define DUK_HTHREAD_STRING_GET_OWN_PROPERTY_DESCRIPTOR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_OWN_PROPERTY_DESCRIPTOR)
  3303. #define DUK_HEAP_STRING_GET_PROTOTYPE_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET_PROTOTYPE_OF)
  3304. #define DUK_HTHREAD_STRING_GET_PROTOTYPE_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET_PROTOTYPE_OF)
  3305. #define DUK_HEAP_STRING_PROTOTYPE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PROTOTYPE)
  3306. #define DUK_HTHREAD_STRING_PROTOTYPE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PROTOTYPE)
  3307. #define DUK_HEAP_STRING_LENGTH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LENGTH)
  3308. #define DUK_HTHREAD_STRING_LENGTH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LENGTH)
  3309. #define DUK_HEAP_STRING_ALERT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ALERT)
  3310. #define DUK_HTHREAD_STRING_ALERT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ALERT)
  3311. #define DUK_HEAP_STRING_PRINT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PRINT)
  3312. #define DUK_HTHREAD_STRING_PRINT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PRINT)
  3313. #define DUK_HEAP_STRING_UNESCAPE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UNESCAPE)
  3314. #define DUK_HTHREAD_STRING_UNESCAPE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UNESCAPE)
  3315. #define DUK_HEAP_STRING_ESCAPE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ESCAPE)
  3316. #define DUK_HTHREAD_STRING_ESCAPE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ESCAPE)
  3317. #define DUK_HEAP_STRING_ENCODE_URI_COMPONENT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENCODE_URI_COMPONENT)
  3318. #define DUK_HTHREAD_STRING_ENCODE_URI_COMPONENT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENCODE_URI_COMPONENT)
  3319. #define DUK_HEAP_STRING_ENCODE_URI(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENCODE_URI)
  3320. #define DUK_HTHREAD_STRING_ENCODE_URI(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENCODE_URI)
  3321. #define DUK_HEAP_STRING_DECODE_URI_COMPONENT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DECODE_URI_COMPONENT)
  3322. #define DUK_HTHREAD_STRING_DECODE_URI_COMPONENT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DECODE_URI_COMPONENT)
  3323. #define DUK_HEAP_STRING_DECODE_URI(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DECODE_URI)
  3324. #define DUK_HTHREAD_STRING_DECODE_URI(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DECODE_URI)
  3325. #define DUK_HEAP_STRING_IS_FINITE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_FINITE)
  3326. #define DUK_HTHREAD_STRING_IS_FINITE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_FINITE)
  3327. #define DUK_HEAP_STRING_IS_NAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IS_NAN)
  3328. #define DUK_HTHREAD_STRING_IS_NAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IS_NAN)
  3329. #define DUK_HEAP_STRING_PARSE_FLOAT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PARSE_FLOAT)
  3330. #define DUK_HTHREAD_STRING_PARSE_FLOAT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PARSE_FLOAT)
  3331. #define DUK_HEAP_STRING_PARSE_INT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PARSE_INT)
  3332. #define DUK_HTHREAD_STRING_PARSE_INT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PARSE_INT)
  3333. #define DUK_HEAP_STRING_EVAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EVAL)
  3334. #define DUK_HTHREAD_STRING_EVAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EVAL)
  3335. #define DUK_HEAP_STRING_URI_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_URI_ERROR)
  3336. #define DUK_HTHREAD_STRING_URI_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_URI_ERROR)
  3337. #define DUK_HEAP_STRING_TYPE_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TYPE_ERROR)
  3338. #define DUK_HTHREAD_STRING_TYPE_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TYPE_ERROR)
  3339. #define DUK_HEAP_STRING_SYNTAX_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SYNTAX_ERROR)
  3340. #define DUK_HTHREAD_STRING_SYNTAX_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SYNTAX_ERROR)
  3341. #define DUK_HEAP_STRING_REFERENCE_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REFERENCE_ERROR)
  3342. #define DUK_HTHREAD_STRING_REFERENCE_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REFERENCE_ERROR)
  3343. #define DUK_HEAP_STRING_RANGE_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_RANGE_ERROR)
  3344. #define DUK_HTHREAD_STRING_RANGE_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_RANGE_ERROR)
  3345. #define DUK_HEAP_STRING_EVAL_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EVAL_ERROR)
  3346. #define DUK_HTHREAD_STRING_EVAL_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EVAL_ERROR)
  3347. #define DUK_HEAP_STRING_BREAK(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_BREAK)
  3348. #define DUK_HTHREAD_STRING_BREAK(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_BREAK)
  3349. #define DUK_HEAP_STRING_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CASE)
  3350. #define DUK_HTHREAD_STRING_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CASE)
  3351. #define DUK_HEAP_STRING_CATCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CATCH)
  3352. #define DUK_HTHREAD_STRING_CATCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CATCH)
  3353. #define DUK_HEAP_STRING_CONTINUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONTINUE)
  3354. #define DUK_HTHREAD_STRING_CONTINUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONTINUE)
  3355. #define DUK_HEAP_STRING_DEBUGGER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEBUGGER)
  3356. #define DUK_HTHREAD_STRING_DEBUGGER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEBUGGER)
  3357. #define DUK_HEAP_STRING_DEFAULT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEFAULT)
  3358. #define DUK_HTHREAD_STRING_DEFAULT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEFAULT)
  3359. #define DUK_HEAP_STRING_DELETE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DELETE)
  3360. #define DUK_HTHREAD_STRING_DELETE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DELETE)
  3361. #define DUK_HEAP_STRING_DO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DO)
  3362. #define DUK_HTHREAD_STRING_DO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DO)
  3363. #define DUK_HEAP_STRING_ELSE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ELSE)
  3364. #define DUK_HTHREAD_STRING_ELSE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ELSE)
  3365. #define DUK_HEAP_STRING_FINALLY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FINALLY)
  3366. #define DUK_HTHREAD_STRING_FINALLY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FINALLY)
  3367. #define DUK_HEAP_STRING_FOR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FOR)
  3368. #define DUK_HTHREAD_STRING_FOR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FOR)
  3369. #define DUK_HEAP_STRING_LC_FUNCTION(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_FUNCTION)
  3370. #define DUK_HTHREAD_STRING_LC_FUNCTION(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_FUNCTION)
  3371. #define DUK_HEAP_STRING_IF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IF)
  3372. #define DUK_HTHREAD_STRING_IF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IF)
  3373. #define DUK_HEAP_STRING_IN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IN)
  3374. #define DUK_HTHREAD_STRING_IN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IN)
  3375. #define DUK_HEAP_STRING_INSTANCEOF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INSTANCEOF)
  3376. #define DUK_HTHREAD_STRING_INSTANCEOF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INSTANCEOF)
  3377. #define DUK_HEAP_STRING_NEW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NEW)
  3378. #define DUK_HTHREAD_STRING_NEW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NEW)
  3379. #define DUK_HEAP_STRING_RETURN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_RETURN)
  3380. #define DUK_HTHREAD_STRING_RETURN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_RETURN)
  3381. #define DUK_HEAP_STRING_SWITCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SWITCH)
  3382. #define DUK_HTHREAD_STRING_SWITCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SWITCH)
  3383. #define DUK_HEAP_STRING_THIS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_THIS)
  3384. #define DUK_HTHREAD_STRING_THIS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_THIS)
  3385. #define DUK_HEAP_STRING_THROW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_THROW)
  3386. #define DUK_HTHREAD_STRING_THROW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_THROW)
  3387. #define DUK_HEAP_STRING_TRY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TRY)
  3388. #define DUK_HTHREAD_STRING_TRY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TRY)
  3389. #define DUK_HEAP_STRING_TYPEOF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TYPEOF)
  3390. #define DUK_HTHREAD_STRING_TYPEOF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TYPEOF)
  3391. #define DUK_HEAP_STRING_VAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VAR)
  3392. #define DUK_HTHREAD_STRING_VAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VAR)
  3393. #define DUK_HEAP_STRING_VOID(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VOID)
  3394. #define DUK_HTHREAD_STRING_VOID(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VOID)
  3395. #define DUK_HEAP_STRING_WHILE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_WHILE)
  3396. #define DUK_HTHREAD_STRING_WHILE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_WHILE)
  3397. #define DUK_HEAP_STRING_WITH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_WITH)
  3398. #define DUK_HTHREAD_STRING_WITH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_WITH)
  3399. #define DUK_HEAP_STRING_CLASS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CLASS)
  3400. #define DUK_HTHREAD_STRING_CLASS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CLASS)
  3401. #define DUK_HEAP_STRING_CONST(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONST)
  3402. #define DUK_HTHREAD_STRING_CONST(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONST)
  3403. #define DUK_HEAP_STRING_ENUM(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENUM)
  3404. #define DUK_HTHREAD_STRING_ENUM(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENUM)
  3405. #define DUK_HEAP_STRING_EXPORT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EXPORT)
  3406. #define DUK_HTHREAD_STRING_EXPORT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EXPORT)
  3407. #define DUK_HEAP_STRING_EXTENDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EXTENDS)
  3408. #define DUK_HTHREAD_STRING_EXTENDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EXTENDS)
  3409. #define DUK_HEAP_STRING_IMPORT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IMPORT)
  3410. #define DUK_HTHREAD_STRING_IMPORT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IMPORT)
  3411. #define DUK_HEAP_STRING_SUPER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SUPER)
  3412. #define DUK_HTHREAD_STRING_SUPER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SUPER)
  3413. #define DUK_HEAP_STRING_LC_NULL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_NULL)
  3414. #define DUK_HTHREAD_STRING_LC_NULL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_NULL)
  3415. #define DUK_HEAP_STRING_TRUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TRUE)
  3416. #define DUK_HTHREAD_STRING_TRUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TRUE)
  3417. #define DUK_HEAP_STRING_FALSE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FALSE)
  3418. #define DUK_HTHREAD_STRING_FALSE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FALSE)
  3419. #define DUK_HEAP_STRING_IMPLEMENTS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IMPLEMENTS)
  3420. #define DUK_HTHREAD_STRING_IMPLEMENTS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IMPLEMENTS)
  3421. #define DUK_HEAP_STRING_INTERFACE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INTERFACE)
  3422. #define DUK_HTHREAD_STRING_INTERFACE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INTERFACE)
  3423. #define DUK_HEAP_STRING_LET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LET)
  3424. #define DUK_HTHREAD_STRING_LET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LET)
  3425. #define DUK_HEAP_STRING_PACKAGE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PACKAGE)
  3426. #define DUK_HTHREAD_STRING_PACKAGE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PACKAGE)
  3427. #define DUK_HEAP_STRING_PRIVATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PRIVATE)
  3428. #define DUK_HTHREAD_STRING_PRIVATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PRIVATE)
  3429. #define DUK_HEAP_STRING_PROTECTED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PROTECTED)
  3430. #define DUK_HTHREAD_STRING_PROTECTED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PROTECTED)
  3431. #define DUK_HEAP_STRING_PUBLIC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PUBLIC)
  3432. #define DUK_HTHREAD_STRING_PUBLIC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PUBLIC)
  3433. #define DUK_HEAP_STRING_STATIC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_STATIC)
  3434. #define DUK_HTHREAD_STRING_STATIC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_STATIC)
  3435. #define DUK_HEAP_STRING_YIELD(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_YIELD)
  3436. #define DUK_HTHREAD_STRING_YIELD(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_YIELD)
  3437. #define DUK_HEAP_NUM_STRINGS 336
  3438. #define DUK_STRIDX_START_RESERVED 291
  3439. #define DUK_STRIDX_START_STRICT_RESERVED 327
  3440. #define DUK_STRIDX_END_RESERVED 336 /* exclusive endpoint */
  3441. #if !defined(DUK_SINGLE_FILE)
  3442. DUK_INTERNAL_DECL const duk_c_function duk_bi_native_functions[128];
  3443. DUK_INTERNAL_DECL const duk_uint8_t duk_builtins_data[1341];
  3444. #ifdef DUK_USE_BUILTIN_INITJS
  3445. DUK_INTERNAL_DECL const duk_uint8_t duk_initjs_data[187];
  3446. #endif /* DUK_USE_BUILTIN_INITJS */
  3447. #endif /* !DUK_SINGLE_FILE */
  3448. #define DUK_BUILTINS_DATA_LENGTH 1341
  3449. #ifdef DUK_USE_BUILTIN_INITJS
  3450. #define DUK_BUILTIN_INITJS_DATA_LENGTH 187
  3451. #endif /* DUK_USE_BUILTIN_INITJS */
  3452. #define DUK_BIDX_GLOBAL 0
  3453. #define DUK_BIDX_GLOBAL_ENV 1
  3454. #define DUK_BIDX_OBJECT_CONSTRUCTOR 2
  3455. #define DUK_BIDX_OBJECT_PROTOTYPE 3
  3456. #define DUK_BIDX_FUNCTION_CONSTRUCTOR 4
  3457. #define DUK_BIDX_FUNCTION_PROTOTYPE 5
  3458. #define DUK_BIDX_ARRAY_CONSTRUCTOR 6
  3459. #define DUK_BIDX_ARRAY_PROTOTYPE 7
  3460. #define DUK_BIDX_STRING_CONSTRUCTOR 8
  3461. #define DUK_BIDX_STRING_PROTOTYPE 9
  3462. #define DUK_BIDX_BOOLEAN_CONSTRUCTOR 10
  3463. #define DUK_BIDX_BOOLEAN_PROTOTYPE 11
  3464. #define DUK_BIDX_NUMBER_CONSTRUCTOR 12
  3465. #define DUK_BIDX_NUMBER_PROTOTYPE 13
  3466. #define DUK_BIDX_DATE_CONSTRUCTOR 14
  3467. #define DUK_BIDX_DATE_PROTOTYPE 15
  3468. #define DUK_BIDX_REGEXP_CONSTRUCTOR 16
  3469. #define DUK_BIDX_REGEXP_PROTOTYPE 17
  3470. #define DUK_BIDX_ERROR_CONSTRUCTOR 18
  3471. #define DUK_BIDX_ERROR_PROTOTYPE 19
  3472. #define DUK_BIDX_EVAL_ERROR_CONSTRUCTOR 20
  3473. #define DUK_BIDX_EVAL_ERROR_PROTOTYPE 21
  3474. #define DUK_BIDX_RANGE_ERROR_CONSTRUCTOR 22
  3475. #define DUK_BIDX_RANGE_ERROR_PROTOTYPE 23
  3476. #define DUK_BIDX_REFERENCE_ERROR_CONSTRUCTOR 24
  3477. #define DUK_BIDX_REFERENCE_ERROR_PROTOTYPE 25
  3478. #define DUK_BIDX_SYNTAX_ERROR_CONSTRUCTOR 26
  3479. #define DUK_BIDX_SYNTAX_ERROR_PROTOTYPE 27
  3480. #define DUK_BIDX_TYPE_ERROR_CONSTRUCTOR 28
  3481. #define DUK_BIDX_TYPE_ERROR_PROTOTYPE 29
  3482. #define DUK_BIDX_URI_ERROR_CONSTRUCTOR 30
  3483. #define DUK_BIDX_URI_ERROR_PROTOTYPE 31
  3484. #define DUK_BIDX_MATH 32
  3485. #define DUK_BIDX_JSON 33
  3486. #define DUK_BIDX_TYPE_ERROR_THROWER 34
  3487. #define DUK_BIDX_PROXY_CONSTRUCTOR 35
  3488. #define DUK_BIDX_DUKTAPE 36
  3489. #define DUK_BIDX_THREAD_CONSTRUCTOR 37
  3490. #define DUK_BIDX_THREAD_PROTOTYPE 38
  3491. #define DUK_BIDX_BUFFER_CONSTRUCTOR 39
  3492. #define DUK_BIDX_BUFFER_PROTOTYPE 40
  3493. #define DUK_BIDX_POINTER_CONSTRUCTOR 41
  3494. #define DUK_BIDX_POINTER_PROTOTYPE 42
  3495. #define DUK_BIDX_LOGGER_CONSTRUCTOR 43
  3496. #define DUK_BIDX_LOGGER_PROTOTYPE 44
  3497. #define DUK_BIDX_DOUBLE_ERROR 45
  3498. #define DUK_NUM_BUILTINS 46
  3499. #else
  3500. #error invalid endianness defines
  3501. #endif
  3502. #endif /* DUK_BUILTINS_H_INCLUDED */
  3503. #line 50 "duk_internal.h"
  3504. #line 1 "duk_strings.h"
  3505. /*
  3506. * Shared error messages: declarations and macros
  3507. *
  3508. * Error messages are accessed through macros with fine-grained, explicit
  3509. * error message distinctions. Concrete error messages are selected by the
  3510. * macros and multiple macros can map to the same concrete string to save
  3511. * on code footprint. This allows flexible footprint/verbosity tuning with
  3512. * minimal code impact. There are a few limitations to this approach:
  3513. * (1) switching between plain messages and format strings doesn't work
  3514. * conveniently, and (2) conditional strings are a bit awkward to handle.
  3515. *
  3516. * Because format strings behave differently in the call site (they need to
  3517. * be followed by format arguments), they have a special prefix (DUK_STR_FMT_
  3518. * and duk_str_fmt_).
  3519. *
  3520. * On some compilers using explicit shared strings is preferable; on others
  3521. * it may be better to use straight literals because the compiler will combine
  3522. * them anyway, and such strings won't end up unnecessarily in a symbol table.
  3523. */
  3524. #ifndef DUK_ERRMSG_H_INCLUDED
  3525. #define DUK_ERRMSG_H_INCLUDED
  3526. #define DUK_STR_INTERNAL_ERROR duk_str_internal_error
  3527. #define DUK_STR_INVALID_COUNT duk_str_invalid_count
  3528. #define DUK_STR_INVALID_CALL_ARGS duk_str_invalid_call_args
  3529. #define DUK_STR_NOT_CONSTRUCTABLE duk_str_not_constructable
  3530. #define DUK_STR_NOT_CALLABLE duk_str_not_callable
  3531. #define DUK_STR_NOT_EXTENSIBLE duk_str_not_extensible
  3532. #define DUK_STR_NOT_WRITABLE duk_str_not_writable
  3533. #define DUK_STR_NOT_CONFIGURABLE duk_str_not_configurable
  3534. #if !defined(DUK_SINGLE_FILE)
  3535. DUK_INTERNAL_DECL const char *duk_str_internal_error;
  3536. DUK_INTERNAL_DECL const char *duk_str_invalid_count;
  3537. DUK_INTERNAL_DECL const char *duk_str_invalid_call_args;
  3538. DUK_INTERNAL_DECL const char *duk_str_not_constructable;
  3539. DUK_INTERNAL_DECL const char *duk_str_not_callable;
  3540. DUK_INTERNAL_DECL const char *duk_str_not_extensible;
  3541. DUK_INTERNAL_DECL const char *duk_str_not_writable;
  3542. DUK_INTERNAL_DECL const char *duk_str_not_configurable;
  3543. #endif /* !DUK_SINGLE_FILE */
  3544. #define DUK_STR_INVALID_CONTEXT duk_str_invalid_context
  3545. #define DUK_STR_INVALID_INDEX duk_str_invalid_index
  3546. #define DUK_STR_PUSH_BEYOND_ALLOC_STACK duk_str_push_beyond_alloc_stack
  3547. #define DUK_STR_NOT_UNDEFINED duk_str_not_undefined
  3548. #define DUK_STR_NOT_NULL duk_str_not_null
  3549. #define DUK_STR_NOT_BOOLEAN duk_str_not_boolean
  3550. #define DUK_STR_NOT_NUMBER duk_str_not_number
  3551. #define DUK_STR_NOT_STRING duk_str_not_string
  3552. #define DUK_STR_NOT_POINTER duk_str_not_pointer
  3553. #define DUK_STR_NOT_BUFFER duk_str_not_buffer
  3554. #define DUK_STR_UNEXPECTED_TYPE duk_str_unexpected_type
  3555. #define DUK_STR_NOT_THREAD duk_str_not_thread
  3556. #if 0 /*unused*/
  3557. #define DUK_STR_NOT_COMPILEDFUNCTION duk_str_not_compiledfunction
  3558. #endif
  3559. #define DUK_STR_NOT_NATIVEFUNCTION duk_str_not_nativefunction
  3560. #define DUK_STR_NOT_C_FUNCTION duk_str_not_c_function
  3561. #define DUK_STR_DEFAULTVALUE_COERCE_FAILED duk_str_defaultvalue_coerce_failed
  3562. #define DUK_STR_NUMBER_OUTSIDE_RANGE duk_str_number_outside_range
  3563. #define DUK_STR_NOT_OBJECT_COERCIBLE duk_str_not_object_coercible
  3564. #define DUK_STR_STRING_TOO_LONG duk_str_string_too_long
  3565. #define DUK_STR_BUFFER_TOO_LONG duk_str_buffer_too_long
  3566. #define DUK_STR_SPRINTF_TOO_LONG duk_str_sprintf_too_long
  3567. #define DUK_STR_OBJECT_ALLOC_FAILED duk_str_object_alloc_failed
  3568. #define DUK_STR_THREAD_ALLOC_FAILED duk_str_thread_alloc_failed
  3569. #define DUK_STR_FUNC_ALLOC_FAILED duk_str_func_alloc_failed
  3570. #define DUK_STR_BUFFER_ALLOC_FAILED duk_str_buffer_alloc_failed
  3571. #define DUK_STR_POP_TOO_MANY duk_str_pop_too_many
  3572. #define DUK_STR_BUFFER_NOT_DYNAMIC duk_str_buffer_not_dynamic
  3573. #define DUK_STR_FAILED_TO_EXTEND_VALSTACK duk_str_failed_to_extend_valstack
  3574. #define DUK_STR_BASE64_ENCODE_FAILED duk_str_base64_encode_failed
  3575. #define DUK_STR_BASE64_DECODE_FAILED duk_str_base64_decode_failed
  3576. #define DUK_STR_HEX_DECODE_FAILED duk_str_hex_decode_failed
  3577. #define DUK_STR_NO_SOURCECODE duk_str_no_sourcecode
  3578. #define DUK_STR_CONCAT_RESULT_TOO_LONG duk_str_concat_result_too_long
  3579. #define DUK_STR_UNIMPLEMENTED duk_str_unimplemented
  3580. #define DUK_STR_ARRAY_LENGTH_OVER_2G duk_str_array_length_over_2g
  3581. #if !defined(DUK_SINGLE_FILE)
  3582. DUK_INTERNAL_DECL const char *duk_str_invalid_context;
  3583. DUK_INTERNAL_DECL const char *duk_str_invalid_index;
  3584. DUK_INTERNAL_DECL const char *duk_str_push_beyond_alloc_stack;
  3585. DUK_INTERNAL_DECL const char *duk_str_not_undefined;
  3586. DUK_INTERNAL_DECL const char *duk_str_not_null;
  3587. DUK_INTERNAL_DECL const char *duk_str_not_boolean;
  3588. DUK_INTERNAL_DECL const char *duk_str_not_number;
  3589. DUK_INTERNAL_DECL const char *duk_str_not_string;
  3590. DUK_INTERNAL_DECL const char *duk_str_not_pointer;
  3591. DUK_INTERNAL_DECL const char *duk_str_not_buffer;
  3592. DUK_INTERNAL_DECL const char *duk_str_unexpected_type;
  3593. DUK_INTERNAL_DECL const char *duk_str_not_thread;
  3594. #if 0 /*unused*/
  3595. DUK_INTERNAL_DECL const char *duk_str_not_compiledfunction;
  3596. #endif
  3597. DUK_INTERNAL_DECL const char *duk_str_not_nativefunction;
  3598. DUK_INTERNAL_DECL const char *duk_str_not_c_function;
  3599. DUK_INTERNAL_DECL const char *duk_str_defaultvalue_coerce_failed;
  3600. DUK_INTERNAL_DECL const char *duk_str_number_outside_range;
  3601. DUK_INTERNAL_DECL const char *duk_str_not_object_coercible;
  3602. DUK_INTERNAL_DECL const char *duk_str_string_too_long;
  3603. DUK_INTERNAL_DECL const char *duk_str_buffer_too_long;
  3604. DUK_INTERNAL_DECL const char *duk_str_sprintf_too_long;
  3605. DUK_INTERNAL_DECL const char *duk_str_object_alloc_failed;
  3606. DUK_INTERNAL_DECL const char *duk_str_thread_alloc_failed;
  3607. DUK_INTERNAL_DECL const char *duk_str_func_alloc_failed;
  3608. DUK_INTERNAL_DECL const char *duk_str_buffer_alloc_failed;
  3609. DUK_INTERNAL_DECL const char *duk_str_pop_too_many;
  3610. DUK_INTERNAL_DECL const char *duk_str_buffer_not_dynamic;
  3611. DUK_INTERNAL_DECL const char *duk_str_failed_to_extend_valstack;
  3612. DUK_INTERNAL_DECL const char *duk_str_base64_encode_failed;
  3613. DUK_INTERNAL_DECL const char *duk_str_base64_decode_failed;
  3614. DUK_INTERNAL_DECL const char *duk_str_hex_decode_failed;
  3615. DUK_INTERNAL_DECL const char *duk_str_no_sourcecode;
  3616. DUK_INTERNAL_DECL const char *duk_str_concat_result_too_long;
  3617. DUK_INTERNAL_DECL const char *duk_str_unimplemented;
  3618. DUK_INTERNAL_DECL const char *duk_str_array_length_over_2g;
  3619. #endif /* !DUK_SINGLE_FILE */
  3620. #define DUK_STR_FMT_PTR duk_str_fmt_ptr
  3621. #define DUK_STR_FMT_INVALID_JSON duk_str_fmt_invalid_json
  3622. #define DUK_STR_JSONDEC_RECLIMIT duk_str_jsondec_reclimit
  3623. #define DUK_STR_JSONENC_RECLIMIT duk_str_jsonenc_reclimit
  3624. #define DUK_STR_CYCLIC_INPUT duk_str_cyclic_input
  3625. #if !defined(DUK_SINGLE_FILE)
  3626. DUK_INTERNAL_DECL const char *duk_str_fmt_ptr;
  3627. DUK_INTERNAL_DECL const char *duk_str_fmt_invalid_json;
  3628. DUK_INTERNAL_DECL const char *duk_str_jsondec_reclimit;
  3629. DUK_INTERNAL_DECL const char *duk_str_jsonenc_reclimit;
  3630. DUK_INTERNAL_DECL const char *duk_str_cyclic_input;
  3631. #endif /* !DUK_SINGLE_FILE */
  3632. #define DUK_STR_PROXY_REVOKED duk_str_proxy_revoked
  3633. #define DUK_STR_OBJECT_RESIZE_FAILED duk_str_object_resize_failed
  3634. #define DUK_STR_INVALID_BASE duk_str_invalid_base
  3635. #define DUK_STR_STRICT_CALLER_READ duk_str_strict_caller_read
  3636. #define DUK_STR_PROXY_REJECTED duk_str_proxy_rejected
  3637. #define DUK_STR_INVALID_ARRAY_LENGTH duk_str_invalid_array_length
  3638. #define DUK_STR_ARRAY_LENGTH_WRITE_FAILED duk_str_array_length_write_failed
  3639. #define DUK_STR_ARRAY_LENGTH_NOT_WRITABLE duk_str_array_length_not_writable
  3640. #define DUK_STR_SETTER_UNDEFINED duk_str_setter_undefined
  3641. #define DUK_STR_REDEFINE_VIRT_PROP duk_str_redefine_virt_prop
  3642. #define DUK_STR_INVALID_DESCRIPTOR duk_str_invalid_descriptor
  3643. #define DUK_STR_PROPERTY_IS_VIRTUAL duk_str_property_is_virtual
  3644. #if !defined(DUK_SINGLE_FILE)
  3645. DUK_INTERNAL_DECL const char *duk_str_proxy_revoked;
  3646. DUK_INTERNAL_DECL const char *duk_str_object_resize_failed;
  3647. DUK_INTERNAL_DECL const char *duk_str_invalid_base;
  3648. DUK_INTERNAL_DECL const char *duk_str_strict_caller_read;
  3649. DUK_INTERNAL_DECL const char *duk_str_proxy_rejected;
  3650. DUK_INTERNAL_DECL const char *duk_str_invalid_array_length;
  3651. DUK_INTERNAL_DECL const char *duk_str_array_length_write_failed;
  3652. DUK_INTERNAL_DECL const char *duk_str_array_length_not_writable;
  3653. DUK_INTERNAL_DECL const char *duk_str_setter_undefined;
  3654. DUK_INTERNAL_DECL const char *duk_str_redefine_virt_prop;
  3655. DUK_INTERNAL_DECL const char *duk_str_invalid_descriptor;
  3656. DUK_INTERNAL_DECL const char *duk_str_property_is_virtual;
  3657. #endif /* !DUK_SINGLE_FILE */
  3658. #define DUK_STR_PARSE_ERROR duk_str_parse_error
  3659. #define DUK_STR_DUPLICATE_LABEL duk_str_duplicate_label
  3660. #define DUK_STR_INVALID_LABEL duk_str_invalid_label
  3661. #define DUK_STR_INVALID_ARRAY_LITERAL duk_str_invalid_array_literal
  3662. #define DUK_STR_INVALID_OBJECT_LITERAL duk_str_invalid_object_literal
  3663. #define DUK_STR_INVALID_VAR_DECLARATION duk_str_invalid_var_declaration
  3664. #define DUK_STR_CANNOT_DELETE_IDENTIFIER duk_str_cannot_delete_identifier
  3665. #define DUK_STR_INVALID_EXPRESSION duk_str_invalid_expression
  3666. #define DUK_STR_INVALID_LVALUE duk_str_invalid_lvalue
  3667. #define DUK_STR_EXPECTED_IDENTIFIER duk_str_expected_identifier
  3668. #define DUK_STR_EMPTY_EXPR_NOT_ALLOWED duk_str_empty_expr_not_allowed
  3669. #define DUK_STR_INVALID_FOR duk_str_invalid_for
  3670. #define DUK_STR_INVALID_SWITCH duk_str_invalid_switch
  3671. #define DUK_STR_INVALID_BREAK_CONT_LABEL duk_str_invalid_break_cont_label
  3672. #define DUK_STR_INVALID_RETURN duk_str_invalid_return
  3673. #define DUK_STR_INVALID_TRY duk_str_invalid_try
  3674. #define DUK_STR_INVALID_THROW duk_str_invalid_throw
  3675. #define DUK_STR_WITH_IN_STRICT_MODE duk_str_with_in_strict_mode
  3676. #define DUK_STR_FUNC_STMT_NOT_ALLOWED duk_str_func_stmt_not_allowed
  3677. #define DUK_STR_UNTERMINATED_STMT duk_str_unterminated_stmt
  3678. #define DUK_STR_INVALID_ARG_NAME duk_str_invalid_arg_name
  3679. #define DUK_STR_INVALID_FUNC_NAME duk_str_invalid_func_name
  3680. #define DUK_STR_INVALID_GETSET_NAME duk_str_invalid_getset_name
  3681. #define DUK_STR_FUNC_NAME_REQUIRED duk_str_func_name_required
  3682. #if !defined(DUK_SINGLE_FILE)
  3683. DUK_INTERNAL_DECL const char *duk_str_parse_error;
  3684. DUK_INTERNAL_DECL const char *duk_str_duplicate_label;
  3685. DUK_INTERNAL_DECL const char *duk_str_invalid_label;
  3686. DUK_INTERNAL_DECL const char *duk_str_invalid_array_literal;
  3687. DUK_INTERNAL_DECL const char *duk_str_invalid_object_literal;
  3688. DUK_INTERNAL_DECL const char *duk_str_invalid_var_declaration;
  3689. DUK_INTERNAL_DECL const char *duk_str_cannot_delete_identifier;
  3690. DUK_INTERNAL_DECL const char *duk_str_invalid_expression;
  3691. DUK_INTERNAL_DECL const char *duk_str_invalid_lvalue;
  3692. DUK_INTERNAL_DECL const char *duk_str_expected_identifier;
  3693. DUK_INTERNAL_DECL const char *duk_str_empty_expr_not_allowed;
  3694. DUK_INTERNAL_DECL const char *duk_str_invalid_for;
  3695. DUK_INTERNAL_DECL const char *duk_str_invalid_switch;
  3696. DUK_INTERNAL_DECL const char *duk_str_invalid_break_cont_label;
  3697. DUK_INTERNAL_DECL const char *duk_str_invalid_return;
  3698. DUK_INTERNAL_DECL const char *duk_str_invalid_try;
  3699. DUK_INTERNAL_DECL const char *duk_str_invalid_throw;
  3700. DUK_INTERNAL_DECL const char *duk_str_with_in_strict_mode;
  3701. DUK_INTERNAL_DECL const char *duk_str_func_stmt_not_allowed;
  3702. DUK_INTERNAL_DECL const char *duk_str_unterminated_stmt;
  3703. DUK_INTERNAL_DECL const char *duk_str_invalid_arg_name;
  3704. DUK_INTERNAL_DECL const char *duk_str_invalid_func_name;
  3705. DUK_INTERNAL_DECL const char *duk_str_invalid_getset_name;
  3706. DUK_INTERNAL_DECL const char *duk_str_func_name_required;
  3707. #endif /* !DUK_SINGLE_FILE */
  3708. #define DUK_STR_INTERNAL_ERROR_EXEC_LONGJMP duk_str_internal_error_exec_longjmp
  3709. #if !defined(DUK_SINGLE_FILE)
  3710. DUK_INTERNAL_DECL const char *duk_str_internal_error_exec_longjmp;
  3711. #endif /* !DUK_SINGLE_FILE */
  3712. #define DUK_STR_INVALID_QUANTIFIER_NO_ATOM duk_str_invalid_quantifier_no_atom
  3713. #define DUK_STR_INVALID_QUANTIFIER_VALUES duk_str_invalid_quantifier_values
  3714. #define DUK_STR_QUANTIFIER_TOO_MANY_COPIES duk_str_quantifier_too_many_copies
  3715. #define DUK_STR_UNEXPECTED_CLOSING_PAREN duk_str_unexpected_closing_paren
  3716. #define DUK_STR_UNEXPECTED_END_OF_PATTERN duk_str_unexpected_end_of_pattern
  3717. #define DUK_STR_UNEXPECTED_REGEXP_TOKEN duk_str_unexpected_regexp_token
  3718. #define DUK_STR_INVALID_REGEXP_FLAGS duk_str_invalid_regexp_flags
  3719. #define DUK_STR_INVALID_BACKREFS duk_str_invalid_backrefs
  3720. #define DUK_STR_REGEXP_BACKTRACK_FAILED duk_str_regexp_backtrack_failed
  3721. #define DUK_STR_REGEXP_ADVANCE_FAILED duk_str_regexp_advance_failed
  3722. #define DUK_STR_REGEXP_INTERNAL_ERROR duk_str_regexp_internal_error
  3723. #if !defined(DUK_SINGLE_FILE)
  3724. DUK_INTERNAL_DECL const char *duk_str_invalid_quantifier_no_atom;
  3725. DUK_INTERNAL_DECL const char *duk_str_invalid_quantifier_values;
  3726. DUK_INTERNAL_DECL const char *duk_str_quantifier_too_many_copies;
  3727. DUK_INTERNAL_DECL const char *duk_str_unexpected_closing_paren;
  3728. DUK_INTERNAL_DECL const char *duk_str_unexpected_end_of_pattern;
  3729. DUK_INTERNAL_DECL const char *duk_str_unexpected_regexp_token;
  3730. DUK_INTERNAL_DECL const char *duk_str_invalid_regexp_flags;
  3731. DUK_INTERNAL_DECL const char *duk_str_invalid_backrefs;
  3732. DUK_INTERNAL_DECL const char *duk_str_regexp_backtrack_failed;
  3733. DUK_INTERNAL_DECL const char *duk_str_regexp_advance_failed;
  3734. DUK_INTERNAL_DECL const char *duk_str_regexp_internal_error;
  3735. #endif /* !DUK_SINGLE_FILE */
  3736. #define DUK_STR_VALSTACK_LIMIT duk_str_valstack_limit
  3737. #define DUK_STR_CALLSTACK_LIMIT duk_str_callstack_limit
  3738. #define DUK_STR_CATCHSTACK_LIMIT duk_str_catchstack_limit
  3739. #define DUK_STR_OBJECT_PROPERTY_LIMIT duk_str_object_property_limit
  3740. #define DUK_STR_PROTOTYPE_CHAIN_LIMIT duk_str_prototype_chain_limit
  3741. #define DUK_STR_BOUND_CHAIN_LIMIT duk_str_bound_chain_limit
  3742. #define DUK_STR_C_CALLSTACK_LIMIT duk_str_c_callstack_limit
  3743. #define DUK_STR_COMPILER_RECURSION_LIMIT duk_str_compiler_recursion_limit
  3744. #define DUK_STR_BYTECODE_LIMIT duk_str_bytecode_limit
  3745. #define DUK_STR_REG_LIMIT duk_str_reg_limit
  3746. #define DUK_STR_TEMP_LIMIT duk_str_temp_limit
  3747. #define DUK_STR_CONST_LIMIT duk_str_const_limit
  3748. #define DUK_STR_FUNC_LIMIT duk_str_func_limit
  3749. #define DUK_STR_REGEXP_COMPILER_RECURSION_LIMIT duk_str_regexp_compiler_recursion_limit
  3750. #define DUK_STR_REGEXP_EXECUTOR_RECURSION_LIMIT duk_str_regexp_executor_recursion_limit
  3751. #define DUK_STR_REGEXP_EXECUTOR_STEP_LIMIT duk_str_regexp_executor_step_limit
  3752. #if !defined(DUK_SINGLE_FILE)
  3753. DUK_INTERNAL_DECL const char *duk_str_valstack_limit;
  3754. DUK_INTERNAL_DECL const char *duk_str_callstack_limit;
  3755. DUK_INTERNAL_DECL const char *duk_str_catchstack_limit;
  3756. DUK_INTERNAL_DECL const char *duk_str_object_property_limit;
  3757. DUK_INTERNAL_DECL const char *duk_str_prototype_chain_limit;
  3758. DUK_INTERNAL_DECL const char *duk_str_bound_chain_limit;
  3759. DUK_INTERNAL_DECL const char *duk_str_c_callstack_limit;
  3760. DUK_INTERNAL_DECL const char *duk_str_compiler_recursion_limit;
  3761. DUK_INTERNAL_DECL const char *duk_str_bytecode_limit;
  3762. DUK_INTERNAL_DECL const char *duk_str_reg_limit;
  3763. DUK_INTERNAL_DECL const char *duk_str_temp_limit;
  3764. DUK_INTERNAL_DECL const char *duk_str_const_limit;
  3765. DUK_INTERNAL_DECL const char *duk_str_func_limit;
  3766. DUK_INTERNAL_DECL const char *duk_str_regexp_compiler_recursion_limit;
  3767. DUK_INTERNAL_DECL const char *duk_str_regexp_executor_recursion_limit;
  3768. DUK_INTERNAL_DECL const char *duk_str_regexp_executor_step_limit;
  3769. #endif /* !DUK_SINGLE_FILE */
  3770. #define DUK_STR_ANON duk_str_anon
  3771. #define DUK_STR_REALLOC_FAILED duk_str_realloc_failed
  3772. #if !defined(DUK_SINGLE_FILE)
  3773. DUK_INTERNAL_DECL const char *duk_str_anon;
  3774. DUK_INTERNAL_DECL const char *duk_str_realloc_failed;
  3775. #endif /* !DUK_SINGLE_FILE */
  3776. #endif /* DUK_ERRMSG_H_INCLUDED */
  3777. #line 1 "duk_js_bytecode.h"
  3778. /*
  3779. * Ecmascript bytecode
  3780. */
  3781. #ifndef DUK_JS_BYTECODE_H_INCLUDED
  3782. #define DUK_JS_BYTECODE_H_INCLUDED
  3783. /*
  3784. * Logical instruction layout
  3785. * ==========================
  3786. *
  3787. * !3!3!2!2!2!2!2!2!2!2!2!2!1!1!1!1!1!1!1!1!1!1! ! ! ! ! ! ! ! ! ! !
  3788. * !1!0!9!8!7!6!5!4!3!2!1!0!9!8!7!6!5!4!3!2!1!0!9!8!7!6!5!4!3!2!1!0!
  3789. * +---------------------------------------------------+-----------+
  3790. * ! C ! B ! A ! OP !
  3791. * +---------------------------------------------------+-----------+
  3792. *
  3793. * OP (6 bits): opcode (DUK_OP_*), access should be fastest
  3794. * A (8 bits): typically a target register number
  3795. * B (9 bits): typically first source register/constant number
  3796. * C (9 bits): typically second source register/constant number
  3797. *
  3798. * Some instructions combine BC or ABC together for larger parameter values.
  3799. * Signed integers (e.g. jump offsets) are encoded as unsigned, with an opcode
  3800. * specific bias. B and C may denote a register or a constant, see
  3801. * DUK_BC_ISREG() and DUK_BC_ISCONST().
  3802. *
  3803. * Note: macro naming is a bit misleading, e.g. "ABC" in macro name but
  3804. * the field layout is logically "CBA".
  3805. */
  3806. typedef duk_uint32_t duk_instr_t;
  3807. #define DUK_DEC_OP(x) ((x) & 0x3fUL)
  3808. #define DUK_DEC_A(x) (((x) >> 6) & 0xffUL)
  3809. #define DUK_DEC_B(x) (((x) >> 14) & 0x1ffUL)
  3810. #define DUK_DEC_C(x) (((x) >> 23) & 0x1ffUL)
  3811. #define DUK_DEC_BC(x) (((x) >> 14) & 0x3ffffUL)
  3812. #define DUK_DEC_ABC(x) (((x) >> 6) & 0x3ffffffUL)
  3813. #define DUK_ENC_OP(op) ((duk_instr_t) (op))
  3814. #define DUK_ENC_OP_ABC(op,abc) ((duk_instr_t) ( \
  3815. (((duk_instr_t) (abc)) << 6) | \
  3816. ((duk_instr_t) (op)) \
  3817. ))
  3818. #define DUK_ENC_OP_A_BC(op,a,bc) ((duk_instr_t) ( \
  3819. (((duk_instr_t) (bc)) << 14) | \
  3820. (((duk_instr_t) (a)) << 6) | \
  3821. ((duk_instr_t) (op)) \
  3822. ))
  3823. #define DUK_ENC_OP_A_B_C(op,a,b,c) ((duk_instr_t) ( \
  3824. (((duk_instr_t) (c)) << 23) | \
  3825. (((duk_instr_t) (b)) << 14) | \
  3826. (((duk_instr_t) (a)) << 6) | \
  3827. ((duk_instr_t) (op)) \
  3828. ))
  3829. #define DUK_ENC_OP_A_B(op,a,b) DUK_ENC_OP_A_B_C(op,a,b,0)
  3830. #define DUK_ENC_OP_A(op,a) DUK_ENC_OP_A_B_C(op,a,0,0)
  3831. /* Constants should be signed so that signed arithmetic involving them
  3832. * won't cause values to be coerced accidentally to unsigned.
  3833. */
  3834. #define DUK_BC_OP_MIN 0
  3835. #define DUK_BC_OP_MAX 0x3fL
  3836. #define DUK_BC_A_MIN 0
  3837. #define DUK_BC_A_MAX 0xffL
  3838. #define DUK_BC_B_MIN 0
  3839. #define DUK_BC_B_MAX 0x1ffL
  3840. #define DUK_BC_C_MIN 0
  3841. #define DUK_BC_C_MAX 0x1ffL
  3842. #define DUK_BC_BC_MIN 0
  3843. #define DUK_BC_BC_MAX 0x3ffffL
  3844. #define DUK_BC_ABC_MIN 0
  3845. #define DUK_BC_ABC_MAX 0x3ffffffL
  3846. #define DUK_BC_EXTRAOP_MIN DUK_BC_A_MIN
  3847. #define DUK_BC_EXTRAOP_MAX DUK_BC_A_MAX
  3848. #define DUK_OP_LDREG 0
  3849. #define DUK_OP_STREG 1
  3850. #define DUK_OP_LDCONST 2
  3851. #define DUK_OP_LDINT 3
  3852. #define DUK_OP_LDINTX 4
  3853. #define DUK_OP_MPUTOBJ 5
  3854. #define DUK_OP_MPUTOBJI 6
  3855. #define DUK_OP_MPUTARR 7
  3856. #define DUK_OP_MPUTARRI 8
  3857. #define DUK_OP_NEW 9
  3858. #define DUK_OP_NEWI 10
  3859. #define DUK_OP_REGEXP 11
  3860. #define DUK_OP_CSREG 12
  3861. #define DUK_OP_CSREGI 13
  3862. #define DUK_OP_GETVAR 14
  3863. #define DUK_OP_PUTVAR 15
  3864. #define DUK_OP_DECLVAR 16
  3865. #define DUK_OP_DELVAR 17
  3866. #define DUK_OP_CSVAR 18
  3867. #define DUK_OP_CSVARI 19
  3868. #define DUK_OP_CLOSURE 20
  3869. #define DUK_OP_GETPROP 21
  3870. #define DUK_OP_PUTPROP 22
  3871. #define DUK_OP_DELPROP 23
  3872. #define DUK_OP_CSPROP 24
  3873. #define DUK_OP_CSPROPI 25
  3874. #define DUK_OP_ADD 26
  3875. #define DUK_OP_SUB 27
  3876. #define DUK_OP_MUL 28
  3877. #define DUK_OP_DIV 29
  3878. #define DUK_OP_MOD 30
  3879. #define DUK_OP_BAND 31
  3880. #define DUK_OP_BOR 32
  3881. #define DUK_OP_BXOR 33
  3882. #define DUK_OP_BASL 34
  3883. #define DUK_OP_BLSR 35
  3884. #define DUK_OP_BASR 36
  3885. #define DUK_OP_EQ 37
  3886. #define DUK_OP_NEQ 38
  3887. #define DUK_OP_SEQ 39
  3888. #define DUK_OP_SNEQ 40
  3889. #define DUK_OP_GT 41
  3890. #define DUK_OP_GE 42
  3891. #define DUK_OP_LT 43
  3892. #define DUK_OP_LE 44
  3893. #define DUK_OP_IF 45
  3894. #define DUK_OP_JUMP 46
  3895. #define DUK_OP_RETURN 47
  3896. #define DUK_OP_CALL 48
  3897. #define DUK_OP_CALLI 49
  3898. #define DUK_OP_TRYCATCH 50
  3899. #define DUK_OP_EXTRA 51
  3900. #define DUK_OP_PREINCR 52 /* pre/post opcode values have constraints, */
  3901. #define DUK_OP_PREDECR 53 /* see duk_js_executor.c */
  3902. #define DUK_OP_POSTINCR 54
  3903. #define DUK_OP_POSTDECR 55
  3904. #define DUK_OP_PREINCV 56
  3905. #define DUK_OP_PREDECV 57
  3906. #define DUK_OP_POSTINCV 58
  3907. #define DUK_OP_POSTDECV 59
  3908. #define DUK_OP_PREINCP 60
  3909. #define DUK_OP_PREDECP 61
  3910. #define DUK_OP_POSTINCP 62
  3911. #define DUK_OP_POSTDECP 63
  3912. #define DUK_OP_NONE 64 /* dummy value used as marker */
  3913. /* DUK_OP_EXTRA, sub-operation in A */
  3914. #define DUK_EXTRAOP_NOP 0
  3915. #define DUK_EXTRAOP_INVALID 1
  3916. #define DUK_EXTRAOP_LDTHIS 2
  3917. #define DUK_EXTRAOP_LDUNDEF 3
  3918. #define DUK_EXTRAOP_LDNULL 4
  3919. #define DUK_EXTRAOP_LDTRUE 5
  3920. #define DUK_EXTRAOP_LDFALSE 6
  3921. #define DUK_EXTRAOP_NEWOBJ 7
  3922. #define DUK_EXTRAOP_NEWARR 8
  3923. #define DUK_EXTRAOP_SETALEN 9
  3924. #define DUK_EXTRAOP_TYPEOF 10
  3925. #define DUK_EXTRAOP_TYPEOFID 11
  3926. #define DUK_EXTRAOP_INITENUM 12
  3927. #define DUK_EXTRAOP_NEXTENUM 13
  3928. #define DUK_EXTRAOP_INITSET 14
  3929. #define DUK_EXTRAOP_INITSETI 15
  3930. #define DUK_EXTRAOP_INITGET 16
  3931. #define DUK_EXTRAOP_INITGETI 17
  3932. #define DUK_EXTRAOP_ENDTRY 18
  3933. #define DUK_EXTRAOP_ENDCATCH 19
  3934. #define DUK_EXTRAOP_ENDFIN 20
  3935. #define DUK_EXTRAOP_THROW 21
  3936. #define DUK_EXTRAOP_INVLHS 22
  3937. #define DUK_EXTRAOP_UNM 23
  3938. #define DUK_EXTRAOP_UNP 24
  3939. #define DUK_EXTRAOP_DEBUGGER 25
  3940. #define DUK_EXTRAOP_BREAK 26
  3941. #define DUK_EXTRAOP_CONTINUE 27
  3942. #define DUK_EXTRAOP_BNOT 28
  3943. #define DUK_EXTRAOP_LNOT 29
  3944. #define DUK_EXTRAOP_INSTOF 30
  3945. #define DUK_EXTRAOP_IN 31
  3946. #define DUK_EXTRAOP_LABEL 32
  3947. #define DUK_EXTRAOP_ENDLABEL 33
  3948. /* DUK_OP_EXTRA for debugging */
  3949. #define DUK_EXTRAOP_DUMPREG 128
  3950. #define DUK_EXTRAOP_DUMPREGS 129
  3951. #define DUK_EXTRAOP_LOGMARK 130
  3952. /* DUK_OP_CALL flags in A */
  3953. #define DUK_BC_CALL_FLAG_TAILCALL (1 << 0)
  3954. #define DUK_BC_CALL_FLAG_EVALCALL (1 << 1)
  3955. /* DUK_OP_TRYCATCH flags in A */
  3956. #define DUK_BC_TRYCATCH_FLAG_HAVE_CATCH (1 << 0)
  3957. #define DUK_BC_TRYCATCH_FLAG_HAVE_FINALLY (1 << 1)
  3958. #define DUK_BC_TRYCATCH_FLAG_CATCH_BINDING (1 << 2)
  3959. #define DUK_BC_TRYCATCH_FLAG_WITH_BINDING (1 << 3)
  3960. /* DUK_OP_RETURN flags in A */
  3961. #define DUK_BC_RETURN_FLAG_FAST (1 << 0)
  3962. #define DUK_BC_RETURN_FLAG_HAVE_RETVAL (1 << 1)
  3963. /* DUK_OP_DECLVAR flags in A; bottom bits are reserved for propdesc flags (DUK_PROPDESC_FLAG_XXX) */
  3964. #define DUK_BC_DECLVAR_FLAG_UNDEF_VALUE (1 << 4) /* use 'undefined' for value automatically */
  3965. #define DUK_BC_DECLVAR_FLAG_FUNC_DECL (1 << 5) /* function declaration */
  3966. /* misc constants and helper macros */
  3967. #define DUK_BC_REGLIMIT 256 /* if B/C is >= this value, refers to a const */
  3968. #define DUK_BC_ISREG(x) ((x) < DUK_BC_REGLIMIT)
  3969. #define DUK_BC_ISCONST(x) ((x) >= DUK_BC_REGLIMIT)
  3970. #define DUK_BC_LDINT_BIAS (1L << 17)
  3971. #define DUK_BC_LDINTX_SHIFT 18
  3972. #define DUK_BC_JUMP_BIAS (1L << 25)
  3973. #endif /* DUK_JS_BYTECODE_H_INCLUDED */
  3974. #line 1 "duk_lexer.h"
  3975. /*
  3976. * Lexer defines.
  3977. */
  3978. #ifndef DUK_LEXER_H_INCLUDED
  3979. #define DUK_LEXER_H_INCLUDED
  3980. typedef void (*duk_re_range_callback)(void *user, duk_codepoint_t r1, duk_codepoint_t r2, duk_bool_t direct);
  3981. /*
  3982. * A token is interpreted as any possible production of InputElementDiv
  3983. * and InputElementRegExp, see E5 Section 7 in its entirety. Note that
  3984. * the E5 "Token" production does not cover all actual tokens of the
  3985. * language (which is explicitly stated in the specification, Section 7.5).
  3986. * Null and boolean literals are defined as part of both ReservedWord
  3987. * (E5 Section 7.6.1) and Literal (E5 Section 7.8) productions. Here,
  3988. * null and boolean values have literal tokens, and are not reserved
  3989. * words.
  3990. *
  3991. * Decimal literal negative/positive sign is -not- part of DUK_TOK_NUMBER.
  3992. * The number tokens always have a non-negative value. The unary minus
  3993. * operator in "-1.0" is optimized during compilation to yield a single
  3994. * negative constant.
  3995. *
  3996. * Token numbering is free except that reserved words are required to be
  3997. * in a continuous range and in a particular order. See genstrings.py.
  3998. */
  3999. #define DUK_LEXER_INITCTX(ctx) duk_lexer_initctx((ctx))
  4000. #define DUK_LEXER_SETPOINT(ctx,pt) duk_lexer_setpoint((ctx), (pt))
  4001. #define DUK_LEXER_GETPOINT(ctx,pt) do { (pt)->offset = (ctx)->offsets[0]; \
  4002. (pt)->line = (ctx)->lines[0]; } while (0)
  4003. /* currently 6 characters of lookup are actually needed (duk_lexer.c) */
  4004. #define DUK_LEXER_WINDOW_SIZE 8
  4005. #define DUK_TOK_MINVAL 0
  4006. /* returned after EOF (infinite amount) */
  4007. #define DUK_TOK_EOF 0
  4008. /* line terminator or multi-line comment with internal lineterm (E5 Sections 7.3, 7.4) */
  4009. #define DUK_TOK_LINETERM 1
  4010. /* single-line comment or multi-line comment without internal lineterm (E5 Section 7.4) */
  4011. #define DUK_TOK_COMMENT 2
  4012. /* identifier names (E5 Section 7.6) */
  4013. #define DUK_TOK_IDENTIFIER 3
  4014. /* reserved words: keywords */
  4015. #define DUK_TOK_START_RESERVED 4
  4016. #define DUK_TOK_BREAK 4
  4017. #define DUK_TOK_CASE 5
  4018. #define DUK_TOK_CATCH 6
  4019. #define DUK_TOK_CONTINUE 7
  4020. #define DUK_TOK_DEBUGGER 8
  4021. #define DUK_TOK_DEFAULT 9
  4022. #define DUK_TOK_DELETE 10
  4023. #define DUK_TOK_DO 11
  4024. #define DUK_TOK_ELSE 12
  4025. #define DUK_TOK_FINALLY 13
  4026. #define DUK_TOK_FOR 14
  4027. #define DUK_TOK_FUNCTION 15
  4028. #define DUK_TOK_IF 16
  4029. #define DUK_TOK_IN 17
  4030. #define DUK_TOK_INSTANCEOF 18
  4031. #define DUK_TOK_NEW 19
  4032. #define DUK_TOK_RETURN 20
  4033. #define DUK_TOK_SWITCH 21
  4034. #define DUK_TOK_THIS 22
  4035. #define DUK_TOK_THROW 23
  4036. #define DUK_TOK_TRY 24
  4037. #define DUK_TOK_TYPEOF 25
  4038. #define DUK_TOK_VAR 26
  4039. #define DUK_TOK_VOID 27
  4040. #define DUK_TOK_WHILE 28
  4041. #define DUK_TOK_WITH 29
  4042. /* reserved words: future reserved words */
  4043. #define DUK_TOK_CLASS 30
  4044. #define DUK_TOK_CONST 31
  4045. #define DUK_TOK_ENUM 32
  4046. #define DUK_TOK_EXPORT 33
  4047. #define DUK_TOK_EXTENDS 34
  4048. #define DUK_TOK_IMPORT 35
  4049. #define DUK_TOK_SUPER 36
  4050. /* "null", "true", and "false" are always reserved words.
  4051. * Note that "get" and "set" are not!
  4052. */
  4053. #define DUK_TOK_NULL 37
  4054. #define DUK_TOK_TRUE 38
  4055. #define DUK_TOK_FALSE 39
  4056. /* reserved words: additional future reserved words in strict mode */
  4057. #define DUK_TOK_START_STRICT_RESERVED 40 /* inclusive */
  4058. #define DUK_TOK_IMPLEMENTS 40
  4059. #define DUK_TOK_INTERFACE 41
  4060. #define DUK_TOK_LET 42
  4061. #define DUK_TOK_PACKAGE 43
  4062. #define DUK_TOK_PRIVATE 44
  4063. #define DUK_TOK_PROTECTED 45
  4064. #define DUK_TOK_PUBLIC 46
  4065. #define DUK_TOK_STATIC 47
  4066. #define DUK_TOK_YIELD 48
  4067. #define DUK_TOK_END_RESERVED 49 /* exclusive */
  4068. /* "get" and "set" are tokens but NOT ReservedWords. They are currently
  4069. * parsed and identifiers and these defines are actually now unused.
  4070. */
  4071. #define DUK_TOK_GET 49
  4072. #define DUK_TOK_SET 50
  4073. /* punctuators (unlike the spec, also includes "/" and "/=") */
  4074. #define DUK_TOK_LCURLY 51
  4075. #define DUK_TOK_RCURLY 52
  4076. #define DUK_TOK_LBRACKET 53
  4077. #define DUK_TOK_RBRACKET 54
  4078. #define DUK_TOK_LPAREN 55
  4079. #define DUK_TOK_RPAREN 56
  4080. #define DUK_TOK_PERIOD 57
  4081. #define DUK_TOK_SEMICOLON 58
  4082. #define DUK_TOK_COMMA 59
  4083. #define DUK_TOK_LT 60
  4084. #define DUK_TOK_GT 61
  4085. #define DUK_TOK_LE 62
  4086. #define DUK_TOK_GE 63
  4087. #define DUK_TOK_EQ 64
  4088. #define DUK_TOK_NEQ 65
  4089. #define DUK_TOK_SEQ 66
  4090. #define DUK_TOK_SNEQ 67
  4091. #define DUK_TOK_ADD 68
  4092. #define DUK_TOK_SUB 69
  4093. #define DUK_TOK_MUL 70
  4094. #define DUK_TOK_DIV 71
  4095. #define DUK_TOK_MOD 72
  4096. #define DUK_TOK_INCREMENT 73
  4097. #define DUK_TOK_DECREMENT 74
  4098. #define DUK_TOK_ALSHIFT 75 /* named "arithmetic" because result is signed */
  4099. #define DUK_TOK_ARSHIFT 76
  4100. #define DUK_TOK_RSHIFT 77
  4101. #define DUK_TOK_BAND 78
  4102. #define DUK_TOK_BOR 79
  4103. #define DUK_TOK_BXOR 80
  4104. #define DUK_TOK_LNOT 81
  4105. #define DUK_TOK_BNOT 82
  4106. #define DUK_TOK_LAND 83
  4107. #define DUK_TOK_LOR 84
  4108. #define DUK_TOK_QUESTION 85
  4109. #define DUK_TOK_COLON 86
  4110. #define DUK_TOK_EQUALSIGN 87
  4111. #define DUK_TOK_ADD_EQ 88
  4112. #define DUK_TOK_SUB_EQ 89
  4113. #define DUK_TOK_MUL_EQ 90
  4114. #define DUK_TOK_DIV_EQ 91
  4115. #define DUK_TOK_MOD_EQ 92
  4116. #define DUK_TOK_ALSHIFT_EQ 93
  4117. #define DUK_TOK_ARSHIFT_EQ 94
  4118. #define DUK_TOK_RSHIFT_EQ 95
  4119. #define DUK_TOK_BAND_EQ 96
  4120. #define DUK_TOK_BOR_EQ 97
  4121. #define DUK_TOK_BXOR_EQ 98
  4122. /* literals (E5 Section 7.8), except null, true, false, which are treated
  4123. * like reserved words (above).
  4124. */
  4125. #define DUK_TOK_NUMBER 99
  4126. #define DUK_TOK_STRING 100
  4127. #define DUK_TOK_REGEXP 101
  4128. #define DUK_TOK_MAXVAL 101 /* inclusive */
  4129. /* Convert heap string index to a token (reserved words) */
  4130. #define DUK_STRIDX_TO_TOK(x) ((x) - DUK_STRIDX_START_RESERVED + DUK_TOK_START_RESERVED)
  4131. /* Sanity check */
  4132. #if (DUK_TOK_MAXVAL > 255)
  4133. #error DUK_TOK_MAXVAL too large, code assumes it fits into 8 bits
  4134. #endif
  4135. /* Sanity checks for string and token defines */
  4136. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_BREAK) != DUK_TOK_BREAK)
  4137. #error mismatch in token defines
  4138. #endif
  4139. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_CASE) != DUK_TOK_CASE)
  4140. #error mismatch in token defines
  4141. #endif
  4142. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_CATCH) != DUK_TOK_CATCH)
  4143. #error mismatch in token defines
  4144. #endif
  4145. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_CONTINUE) != DUK_TOK_CONTINUE)
  4146. #error mismatch in token defines
  4147. #endif
  4148. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_DEBUGGER) != DUK_TOK_DEBUGGER)
  4149. #error mismatch in token defines
  4150. #endif
  4151. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_DEFAULT) != DUK_TOK_DEFAULT)
  4152. #error mismatch in token defines
  4153. #endif
  4154. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_DELETE) != DUK_TOK_DELETE)
  4155. #error mismatch in token defines
  4156. #endif
  4157. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_DO) != DUK_TOK_DO)
  4158. #error mismatch in token defines
  4159. #endif
  4160. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_ELSE) != DUK_TOK_ELSE)
  4161. #error mismatch in token defines
  4162. #endif
  4163. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_FINALLY) != DUK_TOK_FINALLY)
  4164. #error mismatch in token defines
  4165. #endif
  4166. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_FOR) != DUK_TOK_FOR)
  4167. #error mismatch in token defines
  4168. #endif
  4169. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_LC_FUNCTION) != DUK_TOK_FUNCTION)
  4170. #error mismatch in token defines
  4171. #endif
  4172. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_IF) != DUK_TOK_IF)
  4173. #error mismatch in token defines
  4174. #endif
  4175. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_IN) != DUK_TOK_IN)
  4176. #error mismatch in token defines
  4177. #endif
  4178. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_INSTANCEOF) != DUK_TOK_INSTANCEOF)
  4179. #error mismatch in token defines
  4180. #endif
  4181. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_NEW) != DUK_TOK_NEW)
  4182. #error mismatch in token defines
  4183. #endif
  4184. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_RETURN) != DUK_TOK_RETURN)
  4185. #error mismatch in token defines
  4186. #endif
  4187. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_SWITCH) != DUK_TOK_SWITCH)
  4188. #error mismatch in token defines
  4189. #endif
  4190. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_THIS) != DUK_TOK_THIS)
  4191. #error mismatch in token defines
  4192. #endif
  4193. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_THROW) != DUK_TOK_THROW)
  4194. #error mismatch in token defines
  4195. #endif
  4196. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_TRY) != DUK_TOK_TRY)
  4197. #error mismatch in token defines
  4198. #endif
  4199. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_TYPEOF) != DUK_TOK_TYPEOF)
  4200. #error mismatch in token defines
  4201. #endif
  4202. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_VAR) != DUK_TOK_VAR)
  4203. #error mismatch in token defines
  4204. #endif
  4205. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_VOID) != DUK_TOK_VOID)
  4206. #error mismatch in token defines
  4207. #endif
  4208. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_WHILE) != DUK_TOK_WHILE)
  4209. #error mismatch in token defines
  4210. #endif
  4211. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_WITH) != DUK_TOK_WITH)
  4212. #error mismatch in token defines
  4213. #endif
  4214. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_CLASS) != DUK_TOK_CLASS)
  4215. #error mismatch in token defines
  4216. #endif
  4217. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_CONST) != DUK_TOK_CONST)
  4218. #error mismatch in token defines
  4219. #endif
  4220. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_ENUM) != DUK_TOK_ENUM)
  4221. #error mismatch in token defines
  4222. #endif
  4223. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_EXPORT) != DUK_TOK_EXPORT)
  4224. #error mismatch in token defines
  4225. #endif
  4226. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_EXTENDS) != DUK_TOK_EXTENDS)
  4227. #error mismatch in token defines
  4228. #endif
  4229. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_IMPORT) != DUK_TOK_IMPORT)
  4230. #error mismatch in token defines
  4231. #endif
  4232. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_SUPER) != DUK_TOK_SUPER)
  4233. #error mismatch in token defines
  4234. #endif
  4235. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_LC_NULL) != DUK_TOK_NULL)
  4236. #error mismatch in token defines
  4237. #endif
  4238. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_TRUE) != DUK_TOK_TRUE)
  4239. #error mismatch in token defines
  4240. #endif
  4241. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_FALSE) != DUK_TOK_FALSE)
  4242. #error mismatch in token defines
  4243. #endif
  4244. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_IMPLEMENTS) != DUK_TOK_IMPLEMENTS)
  4245. #error mismatch in token defines
  4246. #endif
  4247. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_INTERFACE) != DUK_TOK_INTERFACE)
  4248. #error mismatch in token defines
  4249. #endif
  4250. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_LET) != DUK_TOK_LET)
  4251. #error mismatch in token defines
  4252. #endif
  4253. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_PACKAGE) != DUK_TOK_PACKAGE)
  4254. #error mismatch in token defines
  4255. #endif
  4256. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_PRIVATE) != DUK_TOK_PRIVATE)
  4257. #error mismatch in token defines
  4258. #endif
  4259. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_PROTECTED) != DUK_TOK_PROTECTED)
  4260. #error mismatch in token defines
  4261. #endif
  4262. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_PUBLIC) != DUK_TOK_PUBLIC)
  4263. #error mismatch in token defines
  4264. #endif
  4265. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_STATIC) != DUK_TOK_STATIC)
  4266. #error mismatch in token defines
  4267. #endif
  4268. #if (DUK_STRIDX_TO_TOK(DUK_STRIDX_YIELD) != DUK_TOK_YIELD)
  4269. #error mismatch in token defines
  4270. #endif
  4271. /* Regexp tokens */
  4272. #define DUK_RETOK_EOF 0
  4273. #define DUK_RETOK_DISJUNCTION 1
  4274. #define DUK_RETOK_QUANTIFIER 2
  4275. #define DUK_RETOK_ASSERT_START 3
  4276. #define DUK_RETOK_ASSERT_END 4
  4277. #define DUK_RETOK_ASSERT_WORD_BOUNDARY 5
  4278. #define DUK_RETOK_ASSERT_NOT_WORD_BOUNDARY 6
  4279. #define DUK_RETOK_ASSERT_START_POS_LOOKAHEAD 7
  4280. #define DUK_RETOK_ASSERT_START_NEG_LOOKAHEAD 8
  4281. #define DUK_RETOK_ATOM_PERIOD 9
  4282. #define DUK_RETOK_ATOM_CHAR 10
  4283. #define DUK_RETOK_ATOM_DIGIT 11
  4284. #define DUK_RETOK_ATOM_NOT_DIGIT 12
  4285. #define DUK_RETOK_ATOM_WHITE 13
  4286. #define DUK_RETOK_ATOM_NOT_WHITE 14
  4287. #define DUK_RETOK_ATOM_WORD_CHAR 15
  4288. #define DUK_RETOK_ATOM_NOT_WORD_CHAR 16
  4289. #define DUK_RETOK_ATOM_BACKREFERENCE 17
  4290. #define DUK_RETOK_ATOM_START_CAPTURE_GROUP 18
  4291. #define DUK_RETOK_ATOM_START_NONCAPTURE_GROUP 19
  4292. #define DUK_RETOK_ATOM_START_CHARCLASS 20
  4293. #define DUK_RETOK_ATOM_START_CHARCLASS_INVERTED 21
  4294. #define DUK_RETOK_ATOM_END_GROUP 22
  4295. /* constants for duk_lexer_ctx.buf */
  4296. #define DUK_LEXER_TEMP_BUF_INITIAL 64
  4297. #define DUK_LEXER_TEMP_BUF_LIMIT 256
  4298. /* A token value. Can be memcpy()'d, but note that slot1/slot2 values are on the valstack. */
  4299. struct duk_token {
  4300. duk_small_int_t t; /* token type (with reserved word identification) */
  4301. duk_small_int_t t_nores; /* token type (with reserved words as DUK_TOK_IDENTIFER) */
  4302. duk_double_t num; /* numeric value of token */
  4303. duk_hstring *str1; /* string 1 of token (borrowed, stored to ctx->slot1_idx) */
  4304. duk_hstring *str2; /* string 2 of token (borrowed, stored to ctx->slot1_idx) */
  4305. duk_size_t start_offset; /* start byte offset of token in lexer input */
  4306. duk_int_t start_line; /* start line of token (first char) */
  4307. duk_int_t num_escapes; /* number of escapes and line continuations (for directive prologue) */
  4308. duk_bool_t lineterm; /* token was preceded by a lineterm */
  4309. duk_bool_t allow_auto_semi; /* token allows automatic semicolon insertion (eof or preceded by newline) */
  4310. };
  4311. #define DUK_RE_QUANTIFIER_INFINITE ((duk_uint32_t) 0xffffffffUL)
  4312. /* A regexp token value. */
  4313. struct duk_re_token {
  4314. duk_small_int_t t; /* token type */
  4315. duk_small_int_t greedy;
  4316. duk_uint_fast32_t num; /* numeric value (character, count) */
  4317. duk_uint_fast32_t qmin;
  4318. duk_uint_fast32_t qmax;
  4319. };
  4320. /* A structure for 'snapshotting' a point for rewinding */
  4321. struct duk_lexer_point {
  4322. duk_size_t offset;
  4323. duk_int_t line;
  4324. };
  4325. /* Lexer context. Same context is used for Ecmascript and Regexp parsing. */
  4326. struct duk_lexer_ctx {
  4327. duk_hthread *thr; /* thread; minimizes argument passing */
  4328. const duk_uint8_t *input; /* input string (may be a user pointer) */
  4329. duk_size_t input_length; /* input byte length */
  4330. duk_size_t input_offset; /* input offset for window leading edge (not window[0]) */
  4331. duk_codepoint_t window[DUK_LEXER_WINDOW_SIZE]; /* window of unicode code points */
  4332. duk_size_t offsets[DUK_LEXER_WINDOW_SIZE]; /* input byte offset for each char */
  4333. duk_int_t lines[DUK_LEXER_WINDOW_SIZE]; /* input lines for each char */
  4334. duk_int_t input_line; /* input linenumber at input_offset (not window[0]), init to 1 */
  4335. duk_idx_t slot1_idx; /* valstack slot for 1st token value */
  4336. duk_idx_t slot2_idx; /* valstack slot for 2nd token value */
  4337. duk_idx_t buf_idx; /* valstack slot for temp buffer */
  4338. duk_hbuffer_dynamic *buf; /* temp accumulation buffer (on valstack) */
  4339. duk_int_t token_count; /* number of tokens parsed */
  4340. duk_int_t token_limit; /* maximum token count before error (sanity backstop) */
  4341. };
  4342. /*
  4343. * Prototypes
  4344. */
  4345. DUK_INTERNAL_DECL void duk_lexer_initctx(duk_lexer_ctx *lex_ctx);
  4346. DUK_INTERNAL_DECL void duk_lexer_setpoint(duk_lexer_ctx *lex_ctx, duk_lexer_point *pt);
  4347. DUK_INTERNAL_DECL
  4348. void duk_lexer_parse_js_input_element(duk_lexer_ctx *lex_ctx,
  4349. duk_token *out_token,
  4350. duk_bool_t strict_mode,
  4351. duk_bool_t regexp_mode);
  4352. #ifdef DUK_USE_REGEXP_SUPPORT
  4353. DUK_INTERNAL_DECL void duk_lexer_parse_re_token(duk_lexer_ctx *lex_ctx, duk_re_token *out_token);
  4354. DUK_INTERNAL_DECL void duk_lexer_parse_re_ranges(duk_lexer_ctx *lex_ctx, duk_re_range_callback gen_range, void *userdata);
  4355. #endif /* DUK_USE_REGEXP_SUPPORT */
  4356. #endif /* DUK_LEXER_H_INCLUDED */
  4357. #line 1 "duk_js_compiler.h"
  4358. /*
  4359. * Ecmascript compiler.
  4360. */
  4361. #ifndef DUK_JS_COMPILER_H_INCLUDED
  4362. #define DUK_JS_COMPILER_H_INCLUDED
  4363. /* ecmascript compiler limits */
  4364. #if defined(DUK_USE_DEEP_C_STACK)
  4365. #define DUK_COMPILER_RECURSION_LIMIT 2500L
  4366. #else
  4367. #define DUK_COMPILER_RECURSION_LIMIT 50L
  4368. #endif
  4369. #define DUK_COMPILER_TOKEN_LIMIT 100000000L /* 1e8: protects against deeply nested inner functions */
  4370. /* maximum loopcount for peephole optimization */
  4371. #define DUK_COMPILER_PEEPHOLE_MAXITER 3
  4372. /* maximum bytecode length in instructions */
  4373. #define DUK_COMPILER_MAX_BYTECODE_LENGTH (256L * 1024L * 1024L) /* 1 GB */
  4374. /*
  4375. * Compiler intermediate values
  4376. *
  4377. * Intermediate values describe either plain values (e.g. strings or
  4378. * numbers) or binary operations which have not yet been coerced into
  4379. * either a left-hand-side or right-hand-side role (e.g. object property).
  4380. */
  4381. #define DUK_IVAL_NONE 0 /* no value */
  4382. #define DUK_IVAL_PLAIN 1 /* register, constant, or value */
  4383. #define DUK_IVAL_ARITH 2 /* binary arithmetic; DUK_OP_ADD, DUK_OP_EQ, other binary ops */
  4384. #define DUK_IVAL_ARITH_EXTRAOP 3 /* binary arithmetic using extraops; DUK_EXTRAOP_INSTOF etc */
  4385. #define DUK_IVAL_PROP 4 /* property access */
  4386. #define DUK_IVAL_VAR 5 /* variable access */
  4387. #define DUK_ISPEC_NONE 0 /* no value */
  4388. #define DUK_ISPEC_VALUE 1 /* value resides in 'valstack_idx' */
  4389. #define DUK_ISPEC_REGCONST 2 /* value resides in a register or constant */
  4390. /* bit mask which indicates that a regconst is a constant instead of a register */
  4391. #define DUK_JS_CONST_MARKER 0x80000000UL
  4392. /* type to represent a reg/const reference during compilation */
  4393. typedef duk_uint32_t duk_regconst_t;
  4394. /* type to represent a straight register reference, with <0 indicating none */
  4395. typedef duk_int32_t duk_reg_t;
  4396. typedef struct {
  4397. duk_small_uint_t t; /* DUK_ISPEC_XXX */
  4398. duk_regconst_t regconst;
  4399. duk_idx_t valstack_idx; /* always set; points to a reserved valstack slot */
  4400. } duk_ispec;
  4401. typedef struct {
  4402. /*
  4403. * PLAIN: x1
  4404. * ARITH: x1 <op> x2
  4405. * PROP: x1.x2
  4406. * VAR: x1 (name)
  4407. */
  4408. /* XXX: can be optimized for smaller footprint esp. on 32-bit environments */
  4409. duk_small_uint_t t; /* DUK_IVAL_XXX */
  4410. duk_small_uint_t op; /* bytecode opcode (or extraop) for binary ops */
  4411. duk_ispec x1;
  4412. duk_ispec x2;
  4413. } duk_ivalue;
  4414. /*
  4415. * Bytecode instruction representation during compilation
  4416. *
  4417. * Contains the actual instruction and (optionally) debug info.
  4418. */
  4419. struct duk_compiler_instr {
  4420. duk_instr_t ins;
  4421. #if defined(DUK_USE_PC2LINE)
  4422. duk_uint32_t line;
  4423. #endif
  4424. };
  4425. /*
  4426. * Compiler state
  4427. */
  4428. #define DUK_LABEL_FLAG_ALLOW_BREAK (1 << 0)
  4429. #define DUK_LABEL_FLAG_ALLOW_CONTINUE (1 << 1)
  4430. #define DUK_DECL_TYPE_VAR 0
  4431. #define DUK_DECL_TYPE_FUNC 1
  4432. /* XXX: optimize to 16 bytes */
  4433. typedef struct {
  4434. duk_small_uint_t flags;
  4435. duk_int_t label_id; /* numeric label_id (-1 reserved as marker) */
  4436. duk_hstring *h_label; /* borrowed label name */
  4437. duk_int_t catch_depth; /* catch depth at point of definition */
  4438. duk_int_t pc_label; /* pc of label statement:
  4439. * pc+1: break jump site
  4440. * pc+2: continue jump site
  4441. */
  4442. /* Fast jumps (which avoid longjmp) jump directly to the jump sites
  4443. * which are always known even while the iteration/switch statement
  4444. * is still being parsed. A final peephole pass "straightens out"
  4445. * the jumps.
  4446. */
  4447. } duk_labelinfo;
  4448. /* Compiling state of one function, eventually converted to duk_hcompiledfunction */
  4449. struct duk_compiler_func {
  4450. /* These pointers are at the start of the struct so that they pack
  4451. * nicely. Mixing pointers and integer values is bad on some
  4452. * platforms (e.g. if int is 32 bits and pointers are 64 bits).
  4453. */
  4454. duk_hstring *h_name; /* function name (borrowed reference), ends up in _name */
  4455. duk_hbuffer_dynamic *h_code; /* C array of duk_compiler_instr */
  4456. duk_hobject *h_consts; /* array */
  4457. duk_hobject *h_funcs; /* array of function templates: [func1, offset1, line1, func2, offset2, line2]
  4458. * offset/line points to closing brace to allow skipping on pass 2
  4459. */
  4460. duk_hobject *h_decls; /* array of declarations: [ name1, val1, name2, val2, ... ]
  4461. * valN = (typeN) | (fnum << 8), where fnum is inner func number (0 for vars)
  4462. * record function and variable declarations in pass 1
  4463. */
  4464. duk_hobject *h_labelnames; /* array of active label names */
  4465. duk_hbuffer_dynamic *h_labelinfos; /* C array of duk_labelinfo */
  4466. duk_hobject *h_argnames; /* array of formal argument names (-> _Formals) */
  4467. duk_hobject *h_varmap; /* variable map for pass 2 (identifier -> register number or null (unmapped)) */
  4468. /* value stack indices for tracking objects */
  4469. duk_idx_t code_idx;
  4470. duk_idx_t consts_idx;
  4471. duk_idx_t funcs_idx;
  4472. duk_idx_t decls_idx;
  4473. duk_idx_t labelnames_idx;
  4474. duk_idx_t labelinfos_idx;
  4475. duk_idx_t argnames_idx;
  4476. duk_idx_t varmap_idx;
  4477. /* temp reg handling */
  4478. duk_reg_t temp_first; /* first register that is a temporary (below: variables) */
  4479. duk_reg_t temp_next; /* next temporary register to allocate */
  4480. duk_reg_t temp_max; /* highest value of temp_reg (temp_max - 1 is highest used reg) */
  4481. /* shuffle registers if large number of regs/consts */
  4482. duk_reg_t shuffle1;
  4483. duk_reg_t shuffle2;
  4484. duk_reg_t shuffle3;
  4485. /* stats for current expression being parsed */
  4486. duk_int_t nud_count;
  4487. duk_int_t led_count;
  4488. duk_int_t paren_level; /* parenthesis count, 0 = top level */
  4489. duk_bool_t expr_lhs; /* expression is left-hand-side compatible */
  4490. duk_bool_t allow_in; /* current paren level allows 'in' token */
  4491. /* misc */
  4492. duk_int_t stmt_next; /* statement id allocation (running counter) */
  4493. duk_int_t label_next; /* label id allocation (running counter) */
  4494. duk_int_t catch_depth; /* catch stack depth */
  4495. duk_int_t with_depth; /* with stack depth (affects identifier lookups) */
  4496. duk_int_t fnum_next; /* inner function numbering */
  4497. duk_int_t num_formals; /* number of formal arguments */
  4498. duk_reg_t reg_stmt_value; /* register for writing value of 'non-empty' statements (global or eval code), -1 is marker */
  4499. #if defined(DUK_USE_DEBUGGER_SUPPORT)
  4500. duk_int_t min_line; /* XXX: typing (duk_hcompiledfunction has duk_uint32_t) */
  4501. duk_int_t max_line;
  4502. #endif
  4503. /* status booleans */
  4504. duk_bool_t is_function; /* is an actual function (not global/eval code) */
  4505. duk_bool_t is_eval; /* is eval code */
  4506. duk_bool_t is_global; /* is global code */
  4507. duk_bool_t is_setget; /* is a setter/getter */
  4508. duk_bool_t is_decl; /* is a function declaration (as opposed to function expression) */
  4509. duk_bool_t is_strict; /* function is strict */
  4510. duk_bool_t is_notail; /* function must not be tailcalled */
  4511. duk_bool_t in_directive_prologue; /* parsing in "directive prologue", recognize directives */
  4512. duk_bool_t in_scanning; /* parsing in "scanning" phase (first pass) */
  4513. duk_bool_t may_direct_eval; /* function may call direct eval */
  4514. duk_bool_t id_access_arguments; /* function refers to 'arguments' identifier */
  4515. duk_bool_t id_access_slow; /* function makes one or more slow path accesses */
  4516. duk_bool_t is_arguments_shadowed; /* argument/function declaration shadows 'arguments' */
  4517. duk_bool_t needs_shuffle; /* function needs shuffle registers */
  4518. duk_bool_t reject_regexp_in_adv; /* reject RegExp literal on next advance() call; needed for handling IdentifierName productions */
  4519. };
  4520. struct duk_compiler_ctx {
  4521. duk_hthread *thr;
  4522. /* filename being compiled (ends up in functions' '_filename' property) */
  4523. duk_hstring *h_filename; /* borrowed reference */
  4524. /* lexing (tokenization) state (contains two valstack slot indices) */
  4525. duk_lexer_ctx lex;
  4526. /* current and previous token for parsing */
  4527. duk_token prev_token;
  4528. duk_token curr_token;
  4529. duk_idx_t tok11_idx; /* curr_token slot1 (matches 'lex' slot1_idx) */
  4530. duk_idx_t tok12_idx; /* curr_token slot2 (matches 'lex' slot2_idx) */
  4531. duk_idx_t tok21_idx; /* prev_token slot1 */
  4532. duk_idx_t tok22_idx; /* prev_token slot2 */
  4533. /* recursion limit */
  4534. duk_int_t recursion_depth;
  4535. duk_int_t recursion_limit;
  4536. /* code emission temporary */
  4537. duk_int_t emit_jumpslot_pc;
  4538. /* current function being compiled (embedded instead of pointer for more compact access) */
  4539. duk_compiler_func curr_func;
  4540. };
  4541. /*
  4542. * Prototypes
  4543. */
  4544. #define DUK_JS_COMPILE_FLAG_EVAL (1 << 0) /* source is eval code (not program) */
  4545. #define DUK_JS_COMPILE_FLAG_STRICT (1 << 1) /* strict outer context */
  4546. #define DUK_JS_COMPILE_FLAG_FUNCEXPR (1 << 2) /* source is a function expression (used for Function constructor) */
  4547. DUK_INTERNAL_DECL void duk_js_compile(duk_hthread *thr, const duk_uint8_t *src_buffer, duk_size_t src_length, duk_small_uint_t flags);
  4548. #endif /* DUK_JS_COMPILER_H_INCLUDED */
  4549. #line 1 "duk_regexp.h"
  4550. /*
  4551. * Regular expression structs, constants, and bytecode defines.
  4552. */
  4553. #ifndef DUK_REGEXP_H_INCLUDED
  4554. #define DUK_REGEXP_H_INCLUDED
  4555. /* maximum bytecode copies for {n,m} quantifiers */
  4556. #define DUK_RE_MAX_ATOM_COPIES 1000
  4557. /* regexp compilation limits */
  4558. #if defined(DUK_USE_DEEP_C_STACK)
  4559. #define DUK_RE_COMPILE_RECURSION_LIMIT 10000
  4560. #else
  4561. #define DUK_RE_COMPILE_RECURSION_LIMIT 100
  4562. #endif
  4563. #define DUK_RE_COMPILE_TOKEN_LIMIT 100000000L /* 1e8 */
  4564. /* regexp execution limits */
  4565. #if defined(DUK_USE_DEEP_C_STACK)
  4566. #define DUK_RE_EXECUTE_RECURSION_LIMIT 10000
  4567. #else
  4568. #define DUK_RE_EXECUTE_RECURSION_LIMIT 100
  4569. #endif
  4570. #define DUK_RE_EXECUTE_STEPS_LIMIT 1000000000L /* 1e9 */
  4571. /* regexp opcodes */
  4572. #define DUK_REOP_MATCH 1
  4573. #define DUK_REOP_CHAR 2
  4574. #define DUK_REOP_PERIOD 3
  4575. #define DUK_REOP_RANGES 4
  4576. #define DUK_REOP_INVRANGES 5
  4577. #define DUK_REOP_JUMP 6
  4578. #define DUK_REOP_SPLIT1 7
  4579. #define DUK_REOP_SPLIT2 8
  4580. #define DUK_REOP_SQMINIMAL 9
  4581. #define DUK_REOP_SQGREEDY 10
  4582. #define DUK_REOP_SAVE 11
  4583. #define DUK_REOP_WIPERANGE 12
  4584. #define DUK_REOP_LOOKPOS 13
  4585. #define DUK_REOP_LOOKNEG 14
  4586. #define DUK_REOP_BACKREFERENCE 15
  4587. #define DUK_REOP_ASSERT_START 16
  4588. #define DUK_REOP_ASSERT_END 17
  4589. #define DUK_REOP_ASSERT_WORD_BOUNDARY 18
  4590. #define DUK_REOP_ASSERT_NOT_WORD_BOUNDARY 19
  4591. /* flags */
  4592. #define DUK_RE_FLAG_GLOBAL (1 << 0)
  4593. #define DUK_RE_FLAG_IGNORE_CASE (1 << 1)
  4594. #define DUK_RE_FLAG_MULTILINE (1 << 2)
  4595. struct duk_re_matcher_ctx {
  4596. duk_hthread *thr;
  4597. duk_uint32_t re_flags;
  4598. const duk_uint8_t *input;
  4599. const duk_uint8_t *input_end;
  4600. const duk_uint8_t *bytecode;
  4601. const duk_uint8_t *bytecode_end;
  4602. const duk_uint8_t **saved; /* allocated from valstack (fixed buffer) */
  4603. duk_uint32_t nsaved;
  4604. duk_uint32_t recursion_depth;
  4605. duk_uint32_t recursion_limit;
  4606. duk_uint32_t steps_count;
  4607. duk_uint32_t steps_limit;
  4608. };
  4609. struct duk_re_compiler_ctx {
  4610. duk_hthread *thr;
  4611. duk_uint32_t re_flags;
  4612. duk_lexer_ctx lex;
  4613. duk_re_token curr_token;
  4614. duk_hbuffer_dynamic *buf;
  4615. duk_uint32_t captures; /* highest capture number emitted so far (used as: ++captures) */
  4616. duk_uint32_t highest_backref;
  4617. duk_uint32_t recursion_depth;
  4618. duk_uint32_t recursion_limit;
  4619. duk_uint32_t nranges; /* internal temporary value, used for char classes */
  4620. };
  4621. /*
  4622. * Prototypes
  4623. */
  4624. DUK_INTERNAL_DECL void duk_regexp_compile(duk_hthread *thr);
  4625. DUK_INTERNAL_DECL void duk_regexp_create_instance(duk_hthread *thr);
  4626. DUK_INTERNAL_DECL void duk_regexp_match(duk_hthread *thr);
  4627. DUK_INTERNAL_DECL void duk_regexp_match_force_global(duk_hthread *thr); /* hacky helper for String.prototype.split() */
  4628. #endif /* DUK_REGEXP_H_INCLUDED */
  4629. #line 1 "duk_tval.h"
  4630. /*
  4631. * Tagged type definition (duk_tval) and accessor macros.
  4632. *
  4633. * Access all fields through the accessor macros, as the representation
  4634. * is quite tricky.
  4635. *
  4636. * There are two packed type alternatives: an 8-byte representation
  4637. * based on an IEEE double (preferred for compactness), and a 12-byte
  4638. * representation (portability). The latter is needed also in e.g.
  4639. * 64-bit environments (it usually pads to 16 bytes per value).
  4640. *
  4641. * Selecting the tagged type format involves many trade-offs (memory
  4642. * use, size and performance of generated code, portability, etc),
  4643. * see doc/types.txt for a detailed discussion (especially of how the
  4644. * IEEE double format is used to pack tagged values).
  4645. *
  4646. * NB: because macro arguments are often expressions, macros should
  4647. * avoid evaluating their argument more than once.
  4648. */
  4649. #ifndef DUK_TVAL_H_INCLUDED
  4650. #define DUK_TVAL_H_INCLUDED
  4651. /* sanity */
  4652. #if !defined(DUK_USE_DOUBLE_LE) && !defined(DUK_USE_DOUBLE_ME) && !defined(DUK_USE_DOUBLE_BE)
  4653. #error unsupported: cannot determine byte order variant
  4654. #endif
  4655. #ifdef DUK_USE_PACKED_TVAL
  4656. /* ======================================================================== */
  4657. /*
  4658. * Packed 8-byte representation
  4659. */
  4660. /* sanity */
  4661. #if !defined(DUK_USE_PACKED_TVAL_POSSIBLE)
  4662. #error packed representation not supported
  4663. #endif
  4664. /* use duk_double_union as duk_tval directly */
  4665. typedef union duk_double_union duk_tval;
  4666. /* tags */
  4667. #define DUK_TAG_NORMALIZED_NAN 0x7ff8UL /* the NaN variant we use */
  4668. /* avoid tag 0xfff0, no risk of confusion with negative infinity */
  4669. #if defined(DUK_USE_FASTINT)
  4670. #define DUK_TAG_FASTINT 0xfff1UL /* embed: integer value */
  4671. #endif
  4672. #define DUK_TAG_UNDEFINED 0xfff2UL /* embed: 0 or 1 (normal or unused) */
  4673. #define DUK_TAG_NULL 0xfff3UL /* embed: nothing */
  4674. #define DUK_TAG_BOOLEAN 0xfff4UL /* embed: 0 or 1 (false or true) */
  4675. /* DUK_TAG_NUMBER would logically go here, but it has multiple 'tags' */
  4676. #define DUK_TAG_POINTER 0xfff5UL /* embed: void ptr */
  4677. #define DUK_TAG_LIGHTFUNC 0xfff6UL /* embed: func ptr */
  4678. #define DUK_TAG_STRING 0xfff7UL /* embed: duk_hstring ptr */
  4679. #define DUK_TAG_OBJECT 0xfff8UL /* embed: duk_hobject ptr */
  4680. #define DUK_TAG_BUFFER 0xfff9UL /* embed: duk_hbuffer ptr */
  4681. /* for convenience */
  4682. #define DUK_XTAG_UNDEFINED_ACTUAL 0xfff20000UL
  4683. #define DUK_XTAG_UNDEFINED_UNUSED 0xfff20001UL
  4684. #define DUK_XTAG_NULL 0xfff30000UL
  4685. #define DUK_XTAG_BOOLEAN_FALSE 0xfff40000UL
  4686. #define DUK_XTAG_BOOLEAN_TRUE 0xfff40001UL
  4687. /* two casts to avoid gcc warning: "warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]" */
  4688. #ifdef DUK_USE_64BIT_OPS
  4689. #ifdef DUK_USE_DOUBLE_ME
  4690. #define DUK__TVAL_SET_TAGGEDPOINTER(v,h,tag) do { \
  4691. (v)->ull[DUK_DBL_IDX_ULL0] = (((duk_uint64_t) (tag)) << 16) | (((duk_uint64_t) (duk_uint32_t) (h)) << 32); \
  4692. } while (0)
  4693. #else
  4694. #define DUK__TVAL_SET_TAGGEDPOINTER(v,h,tag) do { \
  4695. (v)->ull[DUK_DBL_IDX_ULL0] = (((duk_uint64_t) (tag)) << 48) | ((duk_uint64_t) (duk_uint32_t) (h)); \
  4696. } while (0)
  4697. #endif
  4698. #else /* DUK_USE_64BIT_OPS */
  4699. #define DUK__TVAL_SET_TAGGEDPOINTER(v,h,tag) do { \
  4700. (v)->ui[DUK_DBL_IDX_UI0] = ((duk_uint32_t) (tag)) << 16; \
  4701. (v)->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) (h); \
  4702. } while (0)
  4703. #endif /* DUK_USE_64BIT_OPS */
  4704. #ifdef DUK_USE_64BIT_OPS
  4705. /* Double casting for pointer to avoid gcc warning (cast from pointer to integer of different size) */
  4706. #ifdef DUK_USE_DOUBLE_ME
  4707. #define DUK__TVAL_SET_LIGHTFUNC(v,fp,flags) do { \
  4708. (v)->ull[DUK_DBL_IDX_ULL0] = (((duk_uint64_t) DUK_TAG_LIGHTFUNC) << 16) | \
  4709. ((duk_uint64_t) (flags)) | \
  4710. (((duk_uint64_t) (duk_uint32_t) (fp)) << 32); \
  4711. } while (0)
  4712. #else
  4713. #define DUK__TVAL_SET_LIGHTFUNC(v,fp,flags) do { \
  4714. (v)->ull[DUK_DBL_IDX_ULL0] = (((duk_uint64_t) DUK_TAG_LIGHTFUNC) << 48) | \
  4715. (((duk_uint64_t) (flags)) << 32) | \
  4716. ((duk_uint64_t) (duk_uint32_t) (fp)); \
  4717. } while (0)
  4718. #endif
  4719. #else /* DUK_USE_64BIT_OPS */
  4720. #define DUK__TVAL_SET_LIGHTFUNC(v,fp,flags) do { \
  4721. (v)->ui[DUK_DBL_IDX_UI0] = (((duk_uint32_t) DUK_TAG_LIGHTFUNC) << 16) | ((duk_uint32_t) (flags)); \
  4722. (v)->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) (fp); \
  4723. } while (0)
  4724. #endif /* DUK_USE_64BIT_OPS */
  4725. #if defined(DUK_USE_FASTINT)
  4726. /* Note: masking is done for 'i' to deal with negative numbers correctly */
  4727. #ifdef DUK_USE_DOUBLE_ME
  4728. #define DUK__TVAL_SET_FASTINT(v,i) do { \
  4729. (v)->ui[DUK_DBL_IDX_UI0] = ((duk_uint32_t) DUK_TAG_FASTINT) << 16 | (((duk_uint32_t) ((i) >> 32)) & 0x0000ffffUL); \
  4730. (v)->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) (i); \
  4731. } while (0)
  4732. #define DUK__TVAL_SET_FASTINT_U32(v,i) do { \
  4733. (v)->ui[DUK_DBL_IDX_UI0] = ((duk_uint32_t) DUK_TAG_FASTINT) << 16; \
  4734. (v)->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) (i); \
  4735. } while (0)
  4736. #else
  4737. #define DUK__TVAL_SET_FASTINT(v,i) do { \
  4738. (v)->ull[DUK_DBL_IDX_ULL0] = (((duk_uint64_t) DUK_TAG_FASTINT) << 48) | (((duk_uint64_t) (i)) & 0x0000ffffffffffffULL); \
  4739. } while (0)
  4740. #define DUK__TVAL_SET_FASTINT_U32(v,i) do { \
  4741. (v)->ull[DUK_DBL_IDX_ULL0] = (((duk_uint64_t) DUK_TAG_FASTINT) << 48) | (duk_uint64_t) (i); \
  4742. } while (0)
  4743. #endif
  4744. #define DUK__TVAL_SET_FASTINT_I32(v,i) do { \
  4745. duk_int64_t duk__tmp = (duk_int64_t) (i); \
  4746. DUK_TVAL_SET_FASTINT((v), duk__tmp); \
  4747. } while (0)
  4748. /* XXX: clumsy sign extend and masking of 16 topmost bits */
  4749. #ifdef DUK_USE_DOUBLE_ME
  4750. #define DUK__TVAL_GET_FASTINT(v) (((duk_int64_t) ((((duk_uint64_t) (v)->ui[DUK_DBL_IDX_UI0]) << 32) | ((duk_uint64_t) (v)->ui[DUK_DBL_IDX_UI1]))) << 16 >> 16)
  4751. #else
  4752. #define DUK__TVAL_GET_FASTINT(v) ((((duk_int64_t) (v)->ull[DUK_DBL_IDX_ULL0]) << 16) >> 16)
  4753. #endif
  4754. #define DUK__TVAL_GET_FASTINT_U32(v) ((v)->ui[DUK_DBL_IDX_UI1])
  4755. #define DUK__TVAL_GET_FASTINT_I32(v) ((duk_int32_t) (v)->ui[DUK_DBL_IDX_UI1])
  4756. #endif /* DUK_USE_FASTINT */
  4757. #define DUK_TVAL_SET_UNDEFINED_ACTUAL(v) DUK_DBLUNION_SET_HIGH32((v), DUK_XTAG_UNDEFINED_ACTUAL)
  4758. #define DUK_TVAL_SET_UNDEFINED_UNUSED(v) DUK_DBLUNION_SET_HIGH32((v), DUK_XTAG_UNDEFINED_UNUSED)
  4759. /* Note: 16-bit initializer suffices (unlike for undefined/boolean) */
  4760. #define DUK_TVAL_SET_NULL(v) do { \
  4761. (v)->us[DUK_DBL_IDX_US0] = (duk_uint16_t) DUK_TAG_NULL; \
  4762. } while (0)
  4763. #define DUK_TVAL_SET_BOOLEAN(v,val) DUK_DBLUNION_SET_HIGH32((v), (((duk_uint32_t) DUK_TAG_BOOLEAN) << 16) | ((duk_uint32_t) (val)))
  4764. #define DUK_TVAL_SET_NAN(v) DUK_DBLUNION_SET_NAN_FULL((v))
  4765. /* Assumes that caller has normalized NaNs, otherwise trouble ahead. */
  4766. #if defined(DUK_USE_FASTINT)
  4767. #define DUK_TVAL_SET_DOUBLE(v,d) DUK_DBLUNION_SET_DOUBLE((v), (d))
  4768. #define DUK_TVAL_SET_FASTINT(v,i) DUK__TVAL_SET_FASTINT((v), (i))
  4769. #define DUK_TVAL_SET_FASTINT_I32(v,i) DUK__TVAL_SET_FASTINT_I32((v), (i))
  4770. #define DUK_TVAL_SET_FASTINT_U32(v,i) DUK__TVAL_SET_FASTINT_U32((v), (i))
  4771. #define DUK_TVAL_SET_NUMBER_CHKFAST(v,d) duk_tval_set_number_chkfast((v), (d))
  4772. #define DUK_TVAL_SET_NUMBER(v,d) DUK_DBLUNION_SET_DOUBLE((v), (d))
  4773. #define DUK_TVAL_CHKFAST_INPLACE(v) do { \
  4774. duk_tval *duk__tv; \
  4775. duk_double_t duk__d; \
  4776. duk__tv = (v); \
  4777. if (DUK_TVAL_IS_DOUBLE(duk__tv)) { \
  4778. duk__d = DUK_TVAL_GET_DOUBLE(duk__tv); \
  4779. DUK_TVAL_SET_NUMBER_CHKFAST(duk__tv, duk__d); \
  4780. } \
  4781. } while (0)
  4782. #else
  4783. #define DUK_TVAL_SET_NUMBER(v,d) DUK_DBLUNION_SET_DOUBLE((v), (d))
  4784. #define DUK_TVAL_SET_NUMBER_CHKFAST(v,d) DUK_TVAL_SET_NUMBER((v), (d))
  4785. #define DUK_TVAL_SET_DOUBLE(v,d) DUK_TVAL_SET_NUMBER((v), (d))
  4786. #define DUK_TVAL_CHKFAST_INPLACE(v) do { } while (0)
  4787. #endif
  4788. #define DUK_TVAL_SET_LIGHTFUNC(v,fp,flags) DUK__TVAL_SET_LIGHTFUNC((v), (fp), (flags))
  4789. #define DUK_TVAL_SET_STRING(v,h) DUK__TVAL_SET_TAGGEDPOINTER((v), (h), DUK_TAG_STRING)
  4790. #define DUK_TVAL_SET_OBJECT(v,h) DUK__TVAL_SET_TAGGEDPOINTER((v), (h), DUK_TAG_OBJECT)
  4791. #define DUK_TVAL_SET_BUFFER(v,h) DUK__TVAL_SET_TAGGEDPOINTER((v), (h), DUK_TAG_BUFFER)
  4792. #define DUK_TVAL_SET_POINTER(v,p) DUK__TVAL_SET_TAGGEDPOINTER((v), (p), DUK_TAG_POINTER)
  4793. #define DUK_TVAL_SET_TVAL(v,x) do { *(v) = *(x); } while (0)
  4794. /* getters */
  4795. #define DUK_TVAL_GET_BOOLEAN(v) ((int) (v)->us[DUK_DBL_IDX_US1])
  4796. #if defined(DUK_USE_FASTINT)
  4797. #define DUK_TVAL_GET_DOUBLE(v) ((v)->d)
  4798. #define DUK_TVAL_GET_FASTINT(v) DUK__TVAL_GET_FASTINT((v))
  4799. #define DUK_TVAL_GET_FASTINT_U32(v) DUK__TVAL_GET_FASTINT_U32((v))
  4800. #define DUK_TVAL_GET_FASTINT_I32(v) DUK__TVAL_GET_FASTINT_I32((v))
  4801. #define DUK_TVAL_GET_NUMBER(v) duk_tval_get_number_packed((v))
  4802. #else
  4803. #define DUK_TVAL_GET_NUMBER(v) ((v)->d)
  4804. #define DUK_TVAL_GET_DOUBLE(v) ((v)->d)
  4805. #endif
  4806. #define DUK_TVAL_GET_LIGHTFUNC(v,out_fp,out_flags) do { \
  4807. (out_flags) = (v)->ui[DUK_DBL_IDX_UI0] & 0xffffUL; \
  4808. (out_fp) = (duk_c_function) (v)->ui[DUK_DBL_IDX_UI1]; \
  4809. } while (0)
  4810. #define DUK_TVAL_GET_LIGHTFUNC_FUNCPTR(v) ((duk_c_function) ((v)->ui[DUK_DBL_IDX_UI1]))
  4811. #define DUK_TVAL_GET_LIGHTFUNC_FLAGS(v) (((int) (v)->ui[DUK_DBL_IDX_UI0]) & 0xffffUL)
  4812. #define DUK_TVAL_GET_STRING(v) ((duk_hstring *) (v)->vp[DUK_DBL_IDX_VP1])
  4813. #define DUK_TVAL_GET_OBJECT(v) ((duk_hobject *) (v)->vp[DUK_DBL_IDX_VP1])
  4814. #define DUK_TVAL_GET_BUFFER(v) ((duk_hbuffer *) (v)->vp[DUK_DBL_IDX_VP1])
  4815. #define DUK_TVAL_GET_POINTER(v) ((void *) (v)->vp[DUK_DBL_IDX_VP1])
  4816. #define DUK_TVAL_GET_HEAPHDR(v) ((duk_heaphdr *) (v)->vp[DUK_DBL_IDX_VP1])
  4817. /* decoding */
  4818. #define DUK_TVAL_GET_TAG(v) ((duk_small_uint_t) (v)->us[DUK_DBL_IDX_US0])
  4819. #define DUK_TVAL_IS_UNDEFINED(v) (DUK_TVAL_GET_TAG((v)) == DUK_TAG_UNDEFINED)
  4820. #define DUK_TVAL_IS_UNDEFINED_ACTUAL(v) ((v)->ui[DUK_DBL_IDX_UI0] == DUK_XTAG_UNDEFINED_ACTUAL)
  4821. #define DUK_TVAL_IS_UNDEFINED_UNUSED(v) ((v)->ui[DUK_DBL_IDX_UI0] == DUK_XTAG_UNDEFINED_UNUSED)
  4822. #define DUK_TVAL_IS_NULL(v) (DUK_TVAL_GET_TAG((v)) == DUK_TAG_NULL)
  4823. #define DUK_TVAL_IS_BOOLEAN(v) (DUK_TVAL_GET_TAG((v)) == DUK_TAG_BOOLEAN)
  4824. #define DUK_TVAL_IS_BOOLEAN_TRUE(v) ((v)->ui[DUK_DBL_IDX_UI0] == DUK_XTAG_BOOLEAN_TRUE)
  4825. #define DUK_TVAL_IS_BOOLEAN_FALSE(v) ((v)->ui[DUK_DBL_IDX_UI0] == DUK_XTAG_BOOLEAN_FALSE)
  4826. #define DUK_TVAL_IS_LIGHTFUNC(v) (DUK_TVAL_GET_TAG((v)) == DUK_TAG_LIGHTFUNC)
  4827. #define DUK_TVAL_IS_STRING(v) (DUK_TVAL_GET_TAG((v)) == DUK_TAG_STRING)
  4828. #define DUK_TVAL_IS_OBJECT(v) (DUK_TVAL_GET_TAG((v)) == DUK_TAG_OBJECT)
  4829. #define DUK_TVAL_IS_BUFFER(v) (DUK_TVAL_GET_TAG((v)) == DUK_TAG_BUFFER)
  4830. #define DUK_TVAL_IS_POINTER(v) (DUK_TVAL_GET_TAG((v)) == DUK_TAG_POINTER)
  4831. #if defined(DUK_USE_FASTINT)
  4832. /* 0xfff0 is -Infinity */
  4833. #define DUK_TVAL_IS_DOUBLE(v) (DUK_TVAL_GET_TAG((v)) <= 0xfff0UL)
  4834. #define DUK_TVAL_IS_FASTINT(v) (DUK_TVAL_GET_TAG((v)) == DUK_TAG_FASTINT)
  4835. #define DUK_TVAL_IS_NUMBER(v) (DUK_TVAL_GET_TAG((v)) <= 0xfff1UL)
  4836. #else
  4837. #define DUK_TVAL_IS_NUMBER(v) (DUK_TVAL_GET_TAG((v)) <= 0xfff0UL)
  4838. #define DUK_TVAL_IS_DOUBLE(v) DUK_TVAL_IS_NUMBER((v))
  4839. #endif
  4840. #define DUK_TVAL_IS_HEAP_ALLOCATED(v) (DUK_TVAL_GET_TAG((v)) >= DUK_TAG_STRING)
  4841. #if defined(DUK_USE_FASTINT)
  4842. /* Inlining is only effective in a single file build. */
  4843. DUK_INTERNAL_DECL DUK_ALWAYS_INLINE duk_double_t duk_tval_get_number_packed(duk_tval *tv);
  4844. #endif
  4845. #else /* DUK_USE_PACKED_TVAL */
  4846. /* ======================================================================== */
  4847. /*
  4848. * Portable 12-byte representation
  4849. */
  4850. /* Note: not initializing all bytes is normally not an issue: Duktape won't
  4851. * read or use the uninitialized bytes so valgrind won't issue warnings.
  4852. * In some special cases a harmless valgrind warning may be issued though.
  4853. * For example, the DumpHeap debugger command writes out a compiled function's
  4854. * 'data' area as is, including any uninitialized bytes, which causes a
  4855. * valgrind warning.
  4856. */
  4857. typedef struct duk_tval_struct duk_tval;
  4858. struct duk_tval_struct {
  4859. duk_small_uint_t t;
  4860. duk_small_uint_t v_extra;
  4861. union {
  4862. duk_double_t d;
  4863. duk_small_int_t i;
  4864. #if defined(DUK_USE_FASTINT)
  4865. duk_int64_t fi; /* if present, forces 16-byte duk_tval */
  4866. #endif
  4867. void *voidptr;
  4868. duk_hstring *hstring;
  4869. duk_hobject *hobject;
  4870. duk_hcompiledfunction *hcompiledfunction;
  4871. duk_hnativefunction *hnativefunction;
  4872. duk_hthread *hthread;
  4873. duk_hbuffer *hbuffer;
  4874. duk_heaphdr *heaphdr;
  4875. duk_c_function lightfunc;
  4876. } v;
  4877. };
  4878. #define DUK__TAG_NUMBER 0 /* not exposed */
  4879. #if defined(DUK_USE_FASTINT)
  4880. #define DUK_TAG_FASTINT 1
  4881. #endif
  4882. #define DUK_TAG_UNDEFINED 2
  4883. #define DUK_TAG_NULL 3
  4884. #define DUK_TAG_BOOLEAN 4
  4885. #define DUK_TAG_POINTER 5
  4886. #define DUK_TAG_LIGHTFUNC 6
  4887. #define DUK_TAG_STRING 7
  4888. #define DUK_TAG_OBJECT 8
  4889. #define DUK_TAG_BUFFER 9
  4890. /* DUK__TAG_NUMBER is intentionally first, as it is the default clause in code
  4891. * to support the 8-byte representation. Further, it is a non-heap-allocated
  4892. * type so it should come before DUK_TAG_STRING. Finally, it should not break
  4893. * the tag value ranges covered by case-clauses in a switch-case.
  4894. */
  4895. /* setters */
  4896. #define DUK_TVAL_SET_UNDEFINED_ACTUAL(tv) do { \
  4897. (tv)->t = DUK_TAG_UNDEFINED; \
  4898. (tv)->v.i = 0; \
  4899. } while (0)
  4900. #define DUK_TVAL_SET_UNDEFINED_UNUSED(tv) do { \
  4901. (tv)->t = DUK_TAG_UNDEFINED; \
  4902. (tv)->v.i = 1; \
  4903. } while (0)
  4904. #define DUK_TVAL_SET_NULL(tv) do { \
  4905. (tv)->t = DUK_TAG_NULL; \
  4906. } while (0)
  4907. #define DUK_TVAL_SET_BOOLEAN(tv,val) do { \
  4908. (tv)->t = DUK_TAG_BOOLEAN; \
  4909. (tv)->v.i = (val); \
  4910. } while (0)
  4911. #if defined(DUK_USE_FASTINT)
  4912. #define DUK_TVAL_SET_DOUBLE(tv,val) do { \
  4913. (tv)->t = DUK__TAG_NUMBER; \
  4914. (tv)->v.d = (val); \
  4915. } while (0)
  4916. #define DUK_TVAL_SET_FASTINT(tv,val) do { \
  4917. (tv)->t = DUK_TAG_FASTINT; \
  4918. (tv)->v.fi = (val); \
  4919. } while (0)
  4920. #define DUK_TVAL_SET_FASTINT_U32(tv,val) do { \
  4921. (tv)->t = DUK_TAG_FASTINT; \
  4922. (tv)->v.fi = (duk_int64_t) (val); \
  4923. } while (0)
  4924. #define DUK_TVAL_SET_FASTINT_I32(tv,val) do { \
  4925. (tv)->t = DUK_TAG_FASTINT; \
  4926. (tv)->v.fi = (duk_int64_t) (val); \
  4927. } while (0)
  4928. #define DUK_TVAL_SET_NUMBER_CHKFAST(tv,d) \
  4929. duk_tval_set_number_chkfast((tv), (d))
  4930. #define DUK_TVAL_SET_NUMBER(tv,val) \
  4931. DUK_TVAL_SET_DOUBLE((tv), (val))
  4932. #define DUK_TVAL_CHKFAST_INPLACE(v) do { \
  4933. duk_tval *duk__tv; \
  4934. duk_double_t duk__d; \
  4935. duk__tv = (v); \
  4936. if (DUK_TVAL_IS_DOUBLE(duk__tv)) { \
  4937. duk__d = DUK_TVAL_GET_DOUBLE(duk__tv); \
  4938. DUK_TVAL_SET_NUMBER_CHKFAST(duk__tv, duk__d); \
  4939. } \
  4940. } while (0)
  4941. #else
  4942. #define DUK_TVAL_SET_NUMBER(tv,val) do { \
  4943. (tv)->t = DUK__TAG_NUMBER; \
  4944. (tv)->v.d = (val); \
  4945. } while (0)
  4946. #define DUK_TVAL_SET_NUMBER_CHKFAST(v,d) \
  4947. DUK_TVAL_SET_NUMBER((tv), (d))
  4948. #define DUK_TVAL_SET_DOUBLE(v,d) \
  4949. DUK_TVAL_SET_NUMBER((tv), (d))
  4950. #define DUK_TVAL_CHKFAST_INPLACE(v) do { } while (0)
  4951. #endif /* DUK_USE_FASTINT */
  4952. #define DUK_TVAL_SET_POINTER(tv,hptr) do { \
  4953. (tv)->t = DUK_TAG_POINTER; \
  4954. (tv)->v.voidptr = (hptr); \
  4955. } while (0)
  4956. #define DUK_TVAL_SET_LIGHTFUNC(tv,fp,flags) do { \
  4957. (tv)->t = DUK_TAG_LIGHTFUNC; \
  4958. (tv)->v_extra = (flags); \
  4959. (tv)->v.lightfunc = (duk_c_function) (fp); \
  4960. } while (0)
  4961. #define DUK_TVAL_SET_STRING(tv,hptr) do { \
  4962. (tv)->t = DUK_TAG_STRING; \
  4963. (tv)->v.hstring = (hptr); \
  4964. } while (0)
  4965. #define DUK_TVAL_SET_OBJECT(tv,hptr) do { \
  4966. (tv)->t = DUK_TAG_OBJECT; \
  4967. (tv)->v.hobject = (hptr); \
  4968. } while (0)
  4969. #define DUK_TVAL_SET_BUFFER(tv,hptr) do { \
  4970. (tv)->t = DUK_TAG_BUFFER; \
  4971. (tv)->v.hbuffer = (hptr); \
  4972. } while (0)
  4973. #define DUK_TVAL_SET_NAN(tv) do { \
  4974. /* in non-packed representation we don't care about which NaN is used */ \
  4975. (tv)->t = DUK__TAG_NUMBER; \
  4976. (tv)->v.d = DUK_DOUBLE_NAN; \
  4977. } while (0)
  4978. #define DUK_TVAL_SET_TVAL(v,x) do { *(v) = *(x); } while (0)
  4979. /* getters */
  4980. #define DUK_TVAL_GET_BOOLEAN(tv) ((tv)->v.i)
  4981. #if defined(DUK_USE_FASTINT)
  4982. #define DUK_TVAL_GET_DOUBLE(tv) ((tv)->v.d)
  4983. #define DUK_TVAL_GET_FASTINT(tv) ((tv)->v.fi)
  4984. #define DUK_TVAL_GET_FASTINT_U32(tv) ((duk_uint32_t) ((tv)->v.fi))
  4985. #define DUK_TVAL_GET_FASTINT_I32(tv) ((duk_int32_t) ((tv)->v.fi))
  4986. #if 0
  4987. #define DUK_TVAL_GET_NUMBER(tv) (DUK_TVAL_IS_FASTINT((tv)) ? \
  4988. (duk_double_t) DUK_TVAL_GET_FASTINT((tv)) : \
  4989. DUK_TVAL_GET_DOUBLE((tv)))
  4990. #define DUK_TVAL_GET_NUMBER(tv) duk_tval_get_number_unpacked((tv))
  4991. #else
  4992. /* This seems reasonable overall. */
  4993. #define DUK_TVAL_GET_NUMBER(tv) (DUK_TVAL_IS_FASTINT((tv)) ? \
  4994. duk_tval_get_number_unpacked_fastint((tv)) : \
  4995. DUK_TVAL_GET_DOUBLE((tv)))
  4996. #endif
  4997. #else
  4998. #define DUK_TVAL_GET_NUMBER(tv) ((tv)->v.d)
  4999. #define DUK_TVAL_GET_DOUBLE(tv) ((tv)->v.d)
  5000. #endif /* DUK_USE_FASTINT */
  5001. #define DUK_TVAL_GET_POINTER(tv) ((tv)->v.voidptr)
  5002. #define DUK_TVAL_GET_LIGHTFUNC(tv,out_fp,out_flags) do { \
  5003. (out_flags) = (duk_uint32_t) (tv)->v_extra; \
  5004. (out_fp) = (tv)->v.lightfunc; \
  5005. } while (0)
  5006. #define DUK_TVAL_GET_LIGHTFUNC_FUNCPTR(tv) ((tv)->v.lightfunc)
  5007. #define DUK_TVAL_GET_LIGHTFUNC_FLAGS(tv) ((duk_uint32_t) ((tv)->v_extra))
  5008. #define DUK_TVAL_GET_STRING(tv) ((tv)->v.hstring)
  5009. #define DUK_TVAL_GET_OBJECT(tv) ((tv)->v.hobject)
  5010. #define DUK_TVAL_GET_BUFFER(tv) ((tv)->v.hbuffer)
  5011. #define DUK_TVAL_GET_HEAPHDR(tv) ((tv)->v.heaphdr)
  5012. /* decoding */
  5013. #define DUK_TVAL_GET_TAG(tv) ((tv)->t)
  5014. #define DUK_TVAL_IS_UNDEFINED(tv) ((tv)->t == DUK_TAG_UNDEFINED)
  5015. #define DUK_TVAL_IS_UNDEFINED_ACTUAL(tv) (((tv)->t == DUK_TAG_UNDEFINED) && ((tv)->v.i == 0))
  5016. #define DUK_TVAL_IS_UNDEFINED_UNUSED(tv) (((tv)->t == DUK_TAG_UNDEFINED) && ((tv)->v.i != 0))
  5017. #define DUK_TVAL_IS_NULL(tv) ((tv)->t == DUK_TAG_NULL)
  5018. #define DUK_TVAL_IS_BOOLEAN(tv) ((tv)->t == DUK_TAG_BOOLEAN)
  5019. #define DUK_TVAL_IS_BOOLEAN_TRUE(tv) (((tv)->t == DUK_TAG_BOOLEAN) && ((tv)->v.i != 0))
  5020. #define DUK_TVAL_IS_BOOLEAN_FALSE(tv) (((tv)->t == DUK_TAG_BOOLEAN) && ((tv)->v.i == 0))
  5021. #if defined(DUK_USE_FASTINT)
  5022. #define DUK_TVAL_IS_DOUBLE(tv) ((tv)->t == DUK__TAG_NUMBER)
  5023. #define DUK_TVAL_IS_FASTINT(tv) ((tv)->t == DUK_TAG_FASTINT)
  5024. #define DUK_TVAL_IS_NUMBER(tv) ((tv)->t == DUK__TAG_NUMBER || \
  5025. (tv)->t == DUK_TAG_FASTINT)
  5026. #else
  5027. #define DUK_TVAL_IS_NUMBER(tv) ((tv)->t == DUK__TAG_NUMBER)
  5028. #define DUK_TVAL_IS_DOUBLE(v) DUK_TVAL_IS_NUMBER((v))
  5029. #endif /* DUK_USE_FASTINT */
  5030. #define DUK_TVAL_IS_POINTER(tv) ((tv)->t == DUK_TAG_POINTER)
  5031. #define DUK_TVAL_IS_LIGHTFUNC(tv) ((tv)->t == DUK_TAG_LIGHTFUNC)
  5032. #define DUK_TVAL_IS_STRING(tv) ((tv)->t == DUK_TAG_STRING)
  5033. #define DUK_TVAL_IS_OBJECT(tv) ((tv)->t == DUK_TAG_OBJECT)
  5034. #define DUK_TVAL_IS_BUFFER(tv) ((tv)->t == DUK_TAG_BUFFER)
  5035. #define DUK_TVAL_IS_HEAP_ALLOCATED(tv) ((tv)->t >= DUK_TAG_STRING)
  5036. #if defined(DUK_USE_FASTINT)
  5037. /* Inlining is only effective in a single file build. */
  5038. #if 0
  5039. DUK_INTERNAL_DECL DUK_ALWAYS_INLINE duk_double_t duk_tval_get_number_unpacked(duk_tval *tv);
  5040. #endif
  5041. DUK_INTERNAL_DECL DUK_ALWAYS_INLINE duk_double_t duk_tval_get_number_unpacked_fastint(duk_tval *tv);
  5042. #endif
  5043. #endif /* DUK_USE_PACKED_TVAL */
  5044. /*
  5045. * Convenience (independent of representation)
  5046. */
  5047. #define DUK_TVAL_SET_BOOLEAN_TRUE(v) DUK_TVAL_SET_BOOLEAN(v, 1)
  5048. #define DUK_TVAL_SET_BOOLEAN_FALSE(v) DUK_TVAL_SET_BOOLEAN(v, 0)
  5049. /* Lightfunc flags packing and unpacking. */
  5050. /* Sign extend: 0x0000##00 -> 0x##000000 -> sign extend to 0xssssss## */
  5051. #define DUK_LFUNC_FLAGS_GET_MAGIC(lf_flags) \
  5052. ((((duk_int32_t) (lf_flags)) << 16) >> 24)
  5053. #define DUK_LFUNC_FLAGS_GET_LENGTH(lf_flags) \
  5054. (((lf_flags) >> 4) & 0x0f)
  5055. #define DUK_LFUNC_FLAGS_GET_NARGS(lf_flags) \
  5056. ((lf_flags) & 0x0f)
  5057. #define DUK_LFUNC_FLAGS_PACK(magic,length,nargs) \
  5058. (((magic) & 0xff) << 8) | ((length) << 4) | (nargs)
  5059. #define DUK_LFUNC_NARGS_VARARGS 0x0f /* varargs marker */
  5060. #define DUK_LFUNC_NARGS_MIN 0x00
  5061. #define DUK_LFUNC_NARGS_MAX 0x0e /* max, excl. varargs marker */
  5062. #define DUK_LFUNC_LENGTH_MIN 0x00
  5063. #define DUK_LFUNC_LENGTH_MAX 0x0f
  5064. #define DUK_LFUNC_MAGIC_MIN (-0x80)
  5065. #define DUK_LFUNC_MAGIC_MAX 0x7f
  5066. /* fastint constants etc */
  5067. #if defined(DUK_USE_FASTINT)
  5068. #define DUK_FASTINT_MIN (-0x800000000000LL)
  5069. #define DUK_FASTINT_MAX 0x7fffffffffffLL
  5070. #define DUK_FASTINT_BITS 48
  5071. DUK_INTERNAL_DECL void duk_tval_set_number_chkfast(duk_tval *tv, duk_double_t x);
  5072. #endif
  5073. #endif /* DUK_TVAL_H_INCLUDED */
  5074. #line 1 "duk_heaphdr.h"
  5075. /*
  5076. * Heap header definition and assorted macros, including ref counting.
  5077. * Access all fields through the accessor macros.
  5078. */
  5079. #ifndef DUK_HEAPHDR_H_INCLUDED
  5080. #define DUK_HEAPHDR_H_INCLUDED
  5081. /*
  5082. * Common heap header
  5083. *
  5084. * All heap objects share the same flags and refcount fields. Objects other
  5085. * than strings also need to have a single or double linked list pointers
  5086. * for insertion into the "heap allocated" list. Strings are held in the
  5087. * heap-wide string table so they don't need link pointers.
  5088. *
  5089. * Technically, 'h_refcount' must be wide enough to guarantee that it cannot
  5090. * wrap (otherwise objects might be freed incorrectly after wrapping). This
  5091. * means essentially that the refcount field must be as wide as data pointers.
  5092. * On 64-bit platforms this means that the refcount needs to be 64 bits even
  5093. * if an 'int' is 32 bits. This is a bit unfortunate, and compromising on
  5094. * this might be reasonable in the future.
  5095. *
  5096. * Heap header size on 32-bit platforms: 8 bytes without reference counting,
  5097. * 16 bytes with reference counting.
  5098. */
  5099. struct duk_heaphdr {
  5100. duk_uint32_t h_flags;
  5101. #if defined(DUK_USE_REFERENCE_COUNTING)
  5102. #if defined(DUK_USE_REFCOUNT16)
  5103. duk_uint16_t h_refcount16;
  5104. #else
  5105. duk_size_t h_refcount;
  5106. #endif
  5107. #endif
  5108. #if defined(DUK_USE_HEAPPTR16)
  5109. duk_uint16_t h_next16;
  5110. #else
  5111. duk_heaphdr *h_next;
  5112. #endif
  5113. #if defined(DUK_USE_DOUBLE_LINKED_HEAP)
  5114. /* refcounting requires direct heap frees, which in turn requires a dual linked heap */
  5115. #if defined(DUK_USE_HEAPPTR16)
  5116. duk_uint16_t h_prev16;
  5117. #else
  5118. duk_heaphdr *h_prev;
  5119. #endif
  5120. #endif
  5121. /* When DUK_USE_HEAPPTR16 (and DUK_USE_REFCOUNT16) is in use, the
  5122. * struct won't align nicely to 4 bytes. This 16-bit extra field
  5123. * is added to make the alignment clean; the field can be used by
  5124. * heap objects when 16-bit packing is used. This field is now
  5125. * conditional to DUK_USE_HEAPPTR16 only, but it is intended to be
  5126. * used with DUK_USE_REFCOUNT16 and DUK_USE_DOUBLE_LINKED_HEAP;
  5127. * this only matter to low memory environments anyway.
  5128. */
  5129. #if defined(DUK_USE_HEAPPTR16)
  5130. duk_uint16_t h_extra16;
  5131. #endif
  5132. };
  5133. struct duk_heaphdr_string {
  5134. /* 16 bits would be enough for shared heaphdr flags and duk_hstring
  5135. * flags. The initial parts of duk_heaphdr_string and duk_heaphdr
  5136. * must match so changing the flags field size here would be quite
  5137. * awkward. However, to minimize struct size, we can pack at least
  5138. * 16 bits of duk_hstring data into the flags field.
  5139. */
  5140. duk_uint32_t h_flags;
  5141. #if defined(DUK_USE_REFERENCE_COUNTING)
  5142. #if defined(DUK_USE_REFCOUNT16)
  5143. duk_uint16_t h_refcount16;
  5144. #else
  5145. duk_size_t h_refcount;
  5146. #endif
  5147. #endif
  5148. };
  5149. #define DUK_HEAPHDR_FLAGS_TYPE_MASK 0x00000003UL
  5150. #define DUK_HEAPHDR_FLAGS_FLAG_MASK (~DUK_HEAPHDR_FLAGS_TYPE_MASK)
  5151. /* 2 bits for heap type */
  5152. #define DUK_HEAPHDR_FLAGS_HEAP_START 2 /* 4 heap flags */
  5153. #define DUK_HEAPHDR_FLAGS_USER_START 6 /* 26 user flags */
  5154. #define DUK_HEAPHDR_HEAP_FLAG_NUMBER(n) (DUK_HEAPHDR_FLAGS_HEAP_START + (n))
  5155. #define DUK_HEAPHDR_USER_FLAG_NUMBER(n) (DUK_HEAPHDR_FLAGS_USER_START + (n))
  5156. #define DUK_HEAPHDR_HEAP_FLAG(n) (1UL << (DUK_HEAPHDR_FLAGS_HEAP_START + (n)))
  5157. #define DUK_HEAPHDR_USER_FLAG(n) (1UL << (DUK_HEAPHDR_FLAGS_USER_START + (n)))
  5158. #define DUK_HEAPHDR_FLAG_REACHABLE DUK_HEAPHDR_HEAP_FLAG(0) /* mark-and-sweep: reachable */
  5159. #define DUK_HEAPHDR_FLAG_TEMPROOT DUK_HEAPHDR_HEAP_FLAG(1) /* mark-and-sweep: children not processed */
  5160. #define DUK_HEAPHDR_FLAG_FINALIZABLE DUK_HEAPHDR_HEAP_FLAG(2) /* mark-and-sweep: finalizable (on current pass) */
  5161. #define DUK_HEAPHDR_FLAG_FINALIZED DUK_HEAPHDR_HEAP_FLAG(3) /* mark-and-sweep: finalized (on previous pass) */
  5162. #define DUK_HTYPE_MIN 1
  5163. #define DUK_HTYPE_STRING 1
  5164. #define DUK_HTYPE_OBJECT 2
  5165. #define DUK_HTYPE_BUFFER 3
  5166. #define DUK_HTYPE_MAX 3
  5167. #if defined(DUK_USE_HEAPPTR16)
  5168. #define DUK_HEAPHDR_GET_NEXT(heap,h) \
  5169. ((duk_heaphdr *) DUK_USE_HEAPPTR_DEC16((heap)->heap_udata, (h)->h_next16))
  5170. #define DUK_HEAPHDR_SET_NEXT(heap,h,val) do { \
  5171. (h)->h_next16 = DUK_USE_HEAPPTR_ENC16((heap)->heap_udata, (void *) val); \
  5172. } while (0)
  5173. #else
  5174. #define DUK_HEAPHDR_GET_NEXT(heap,h) ((h)->h_next)
  5175. #define DUK_HEAPHDR_SET_NEXT(heap,h,val) do { \
  5176. (h)->h_next = (val); \
  5177. } while (0)
  5178. #endif
  5179. #if defined(DUK_USE_DOUBLE_LINKED_HEAP)
  5180. #if defined(DUK_USE_HEAPPTR16)
  5181. #define DUK_HEAPHDR_GET_PREV(heap,h) \
  5182. ((duk_heaphdr *) DUK_USE_HEAPPTR_DEC16((heap)->heap_udata, (h)->h_prev16))
  5183. #define DUK_HEAPHDR_SET_PREV(heap,h,val) do { \
  5184. (h)->h_prev16 = DUK_USE_HEAPPTR_ENC16((heap)->heap_udata, (void *) (val)); \
  5185. } while (0)
  5186. #else
  5187. #define DUK_HEAPHDR_GET_PREV(heap,h) ((h)->h_prev)
  5188. #define DUK_HEAPHDR_SET_PREV(heap,h,val) do { \
  5189. (h)->h_prev = (val); \
  5190. } while (0)
  5191. #endif
  5192. #endif
  5193. #if defined(DUK_USE_REFERENCE_COUNTING)
  5194. #if defined(DUK_USE_REFCOUNT16)
  5195. #define DUK_HEAPHDR_GET_REFCOUNT(h) ((h)->h_refcount16)
  5196. #define DUK_HEAPHDR_SET_REFCOUNT(h,val) do { \
  5197. (h)->h_refcount16 = (val); \
  5198. } while (0)
  5199. #define DUK_HEAPHDR_PREINC_REFCOUNT(h) (++(h)->h_refcount16) /* result: updated refcount */
  5200. #define DUK_HEAPHDR_PREDEC_REFCOUNT(h) (--(h)->h_refcount16) /* result: updated refcount */
  5201. #else
  5202. #define DUK_HEAPHDR_GET_REFCOUNT(h) ((h)->h_refcount)
  5203. #define DUK_HEAPHDR_SET_REFCOUNT(h,val) do { \
  5204. (h)->h_refcount = (val); \
  5205. } while (0)
  5206. #define DUK_HEAPHDR_PREINC_REFCOUNT(h) (++(h)->h_refcount) /* result: updated refcount */
  5207. #define DUK_HEAPHDR_PREDEC_REFCOUNT(h) (--(h)->h_refcount) /* result: updated refcount */
  5208. #endif
  5209. #else
  5210. /* refcount macros not defined without refcounting, caller must #ifdef now */
  5211. #endif /* DUK_USE_REFERENCE_COUNTING */
  5212. /*
  5213. * Note: type is treated as a field separate from flags, so some masking is
  5214. * involved in the macros below.
  5215. */
  5216. #define DUK_HEAPHDR_GET_FLAGS_RAW(h) ((h)->h_flags)
  5217. #define DUK_HEAPHDR_GET_FLAGS(h) ((h)->h_flags & DUK_HEAPHDR_FLAGS_FLAG_MASK)
  5218. #define DUK_HEAPHDR_SET_FLAGS(h,val) do { \
  5219. (h)->h_flags = ((h)->h_flags & ~(DUK_HEAPHDR_FLAGS_FLAG_MASK)) | (val); \
  5220. } while (0)
  5221. #define DUK_HEAPHDR_GET_TYPE(h) ((h)->h_flags & DUK_HEAPHDR_FLAGS_TYPE_MASK)
  5222. #define DUK_HEAPHDR_SET_TYPE(h,val) do { \
  5223. (h)->h_flags = ((h)->h_flags & ~(DUK_HEAPHDR_FLAGS_TYPE_MASK)) | (val); \
  5224. } while (0)
  5225. #define DUK_HEAPHDR_HTYPE_VALID(h) ( \
  5226. DUK_HEAPHDR_GET_TYPE((h)) >= DUK_HTYPE_MIN && \
  5227. DUK_HEAPHDR_GET_TYPE((h)) <= DUK_HTYPE_MAX \
  5228. )
  5229. #define DUK_HEAPHDR_SET_TYPE_AND_FLAGS(h,tval,fval) do { \
  5230. (h)->h_flags = ((tval) & DUK_HEAPHDR_FLAGS_TYPE_MASK) | \
  5231. ((fval) & DUK_HEAPHDR_FLAGS_FLAG_MASK); \
  5232. } while (0)
  5233. #define DUK_HEAPHDR_SET_FLAG_BITS(h,bits) do { \
  5234. DUK_ASSERT(((bits) & ~(DUK_HEAPHDR_FLAGS_FLAG_MASK)) == 0); \
  5235. (h)->h_flags |= (bits); \
  5236. } while (0)
  5237. #define DUK_HEAPHDR_CLEAR_FLAG_BITS(h,bits) do { \
  5238. DUK_ASSERT(((bits) & ~(DUK_HEAPHDR_FLAGS_FLAG_MASK)) == 0); \
  5239. (h)->h_flags &= ~((bits)); \
  5240. } while (0)
  5241. #define DUK_HEAPHDR_CHECK_FLAG_BITS(h,bits) (((h)->h_flags & (bits)) != 0)
  5242. #define DUK_HEAPHDR_SET_REACHABLE(h) DUK_HEAPHDR_SET_FLAG_BITS((h),DUK_HEAPHDR_FLAG_REACHABLE)
  5243. #define DUK_HEAPHDR_CLEAR_REACHABLE(h) DUK_HEAPHDR_CLEAR_FLAG_BITS((h),DUK_HEAPHDR_FLAG_REACHABLE)
  5244. #define DUK_HEAPHDR_HAS_REACHABLE(h) DUK_HEAPHDR_CHECK_FLAG_BITS((h),DUK_HEAPHDR_FLAG_REACHABLE)
  5245. #define DUK_HEAPHDR_SET_TEMPROOT(h) DUK_HEAPHDR_SET_FLAG_BITS((h),DUK_HEAPHDR_FLAG_TEMPROOT)
  5246. #define DUK_HEAPHDR_CLEAR_TEMPROOT(h) DUK_HEAPHDR_CLEAR_FLAG_BITS((h),DUK_HEAPHDR_FLAG_TEMPROOT)
  5247. #define DUK_HEAPHDR_HAS_TEMPROOT(h) DUK_HEAPHDR_CHECK_FLAG_BITS((h),DUK_HEAPHDR_FLAG_TEMPROOT)
  5248. #define DUK_HEAPHDR_SET_FINALIZABLE(h) DUK_HEAPHDR_SET_FLAG_BITS((h),DUK_HEAPHDR_FLAG_FINALIZABLE)
  5249. #define DUK_HEAPHDR_CLEAR_FINALIZABLE(h) DUK_HEAPHDR_CLEAR_FLAG_BITS((h),DUK_HEAPHDR_FLAG_FINALIZABLE)
  5250. #define DUK_HEAPHDR_HAS_FINALIZABLE(h) DUK_HEAPHDR_CHECK_FLAG_BITS((h),DUK_HEAPHDR_FLAG_FINALIZABLE)
  5251. #define DUK_HEAPHDR_SET_FINALIZED(h) DUK_HEAPHDR_SET_FLAG_BITS((h),DUK_HEAPHDR_FLAG_FINALIZED)
  5252. #define DUK_HEAPHDR_CLEAR_FINALIZED(h) DUK_HEAPHDR_CLEAR_FLAG_BITS((h),DUK_HEAPHDR_FLAG_FINALIZED)
  5253. #define DUK_HEAPHDR_HAS_FINALIZED(h) DUK_HEAPHDR_CHECK_FLAG_BITS((h),DUK_HEAPHDR_FLAG_FINALIZED)
  5254. /* get or set a range of flags; m=first bit number, n=number of bits */
  5255. #define DUK_HEAPHDR_GET_FLAG_RANGE(h,m,n) (((h)->h_flags >> (m)) & ((1UL << (n)) - 1UL))
  5256. #define DUK_HEAPHDR_SET_FLAG_RANGE(h,m,n,v) do { \
  5257. (h)->h_flags = \
  5258. ((h)->h_flags & (~(((1 << (n)) - 1) << (m)))) \
  5259. | ((v) << (m)); \
  5260. } while (0)
  5261. /* init pointer fields to null */
  5262. #if defined(DUK_USE_DOUBLE_LINKED_HEAP)
  5263. #define DUK_HEAPHDR_INIT_NULLS(h) do { \
  5264. DUK_HEAPHDR_SET_NEXT((h), (void *) NULL); \
  5265. DUK_HEAPHDR_SET_PREV((h), (void *) NULL); \
  5266. } while (0)
  5267. #else
  5268. #define DUK_HEAPHDR_INIT_NULLS(h) do { \
  5269. DUK_HEAPHDR_SET_NEXT((h), (void *) NULL); \
  5270. } while (0)
  5271. #endif
  5272. #define DUK_HEAPHDR_STRING_INIT_NULLS(h) /* currently nop */
  5273. /*
  5274. * Reference counting helper macros. The macros take a thread argument
  5275. * and must thus always be executed in a specific thread context. The
  5276. * thread argument is needed for features like finalization. Currently
  5277. * it is not required for INCREF, but it is included just in case.
  5278. *
  5279. * Note that 'raw' macros such as DUK_HEAPHDR_GET_REFCOUNT() are not
  5280. * defined without DUK_USE_REFERENCE_COUNTING, so caller must #ifdef
  5281. * around them.
  5282. */
  5283. #if defined(DUK_USE_REFERENCE_COUNTING)
  5284. /* Fast variants, inline refcount operations except for refzero handling.
  5285. * Can be used explicitly when speed is always more important than size.
  5286. * For a good compiler and a single file build, these are basically the
  5287. * same as a forced inline.
  5288. */
  5289. #define DUK_TVAL_INCREF_FAST(thr,tv) do { \
  5290. duk_tval *duk__tv = (tv); \
  5291. DUK_ASSERT(duk__tv != NULL); \
  5292. if (DUK_TVAL_IS_HEAP_ALLOCATED(duk__tv)) { \
  5293. duk_heaphdr *duk__h = DUK_TVAL_GET_HEAPHDR(duk__tv); \
  5294. DUK_ASSERT(duk__h != NULL); \
  5295. DUK_ASSERT(DUK_HEAPHDR_HTYPE_VALID(duk__h)); \
  5296. DUK_HEAPHDR_PREINC_REFCOUNT(duk__h); \
  5297. } \
  5298. } while (0)
  5299. #define DUK_TVAL_DECREF_FAST(thr,tv) do { \
  5300. duk_tval *duk__tv = (tv); \
  5301. DUK_ASSERT(duk__tv != NULL); \
  5302. if (DUK_TVAL_IS_HEAP_ALLOCATED(duk__tv)) { \
  5303. duk_heaphdr *duk__h = DUK_TVAL_GET_HEAPHDR(duk__tv); \
  5304. DUK_ASSERT(duk__h != NULL); \
  5305. DUK_ASSERT(DUK_HEAPHDR_HTYPE_VALID(duk__h)); \
  5306. DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT(duk__h) > 0); \
  5307. if (DUK_HEAPHDR_PREDEC_REFCOUNT(duk__h) == 0) { \
  5308. duk_heaphdr_refzero((thr), duk__h); \
  5309. } \
  5310. } \
  5311. } while (0)
  5312. #define DUK_HEAPHDR_INCREF_FAST(thr,h) do { \
  5313. duk_heaphdr *duk__h = (duk_heaphdr *) (h); \
  5314. DUK_ASSERT(duk__h != NULL); \
  5315. DUK_ASSERT(DUK_HEAPHDR_HTYPE_VALID(duk__h)); \
  5316. DUK_HEAPHDR_PREINC_REFCOUNT(duk__h); \
  5317. } while (0)
  5318. #define DUK_HEAPHDR_DECREF_FAST(thr,h) do { \
  5319. duk_heaphdr *duk__h = (duk_heaphdr *) (h); \
  5320. DUK_ASSERT(duk__h != NULL); \
  5321. DUK_ASSERT(DUK_HEAPHDR_HTYPE_VALID(duk__h)); \
  5322. DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT(duk__h) > 0); \
  5323. if (DUK_HEAPHDR_PREDEC_REFCOUNT(duk__h) == 0) { \
  5324. duk_heaphdr_refzero((thr), duk__h); \
  5325. } \
  5326. } while (0)
  5327. /* Slow variants, call to a helper to reduce code size.
  5328. * Can be used explicitly when size is always more important than speed.
  5329. */
  5330. #define DUK_TVAL_INCREF_SLOW(thr,tv) do { \
  5331. duk_tval_incref((tv)); \
  5332. } while (0)
  5333. #define DUK_TVAL_DECREF_SLOW(thr,tv) do { \
  5334. duk_tval_decref((thr), (tv)); \
  5335. } while (0)
  5336. #define DUK_HEAPHDR_INCREF_SLOW(thr,h) do { \
  5337. duk_heaphdr_incref((duk_heaphdr *) (h)); \
  5338. } while (0)
  5339. #define DUK_HEAPHDR_DECREF_SLOW(thr,h) do { \
  5340. duk_heaphdr_decref((thr), (duk_heaphdr *) (h)); \
  5341. } while (0)
  5342. /* Default variants. Selection depends on speed/size preference.
  5343. * Concretely: with gcc 4.8.1 -Os x64 the difference in final binary
  5344. * is about +1kB for _FAST variants.
  5345. */
  5346. #if defined(DUK_USE_FAST_REFCOUNT_DEFAULT)
  5347. #define DUK_TVAL_INCREF(thr,tv) DUK_TVAL_INCREF_FAST((thr),(tv))
  5348. #define DUK_TVAL_DECREF(thr,tv) DUK_TVAL_DECREF_FAST((thr),(tv))
  5349. #define DUK_HEAPHDR_INCREF(thr,h) DUK_HEAPHDR_INCREF_FAST((thr),(h))
  5350. #define DUK_HEAPHDR_DECREF(thr,h) DUK_HEAPHDR_DECREF_FAST((thr),(h))
  5351. #else
  5352. #define DUK_TVAL_INCREF(thr,tv) DUK_TVAL_INCREF_SLOW((thr),(tv))
  5353. #define DUK_TVAL_DECREF(thr,tv) DUK_TVAL_DECREF_SLOW((thr),(tv))
  5354. #define DUK_HEAPHDR_INCREF(thr,h) DUK_HEAPHDR_INCREF_SLOW((thr),(h))
  5355. #define DUK_HEAPHDR_DECREF(thr,h) DUK_HEAPHDR_DECREF_SLOW((thr),(h))
  5356. #endif
  5357. /* Casting convenience. */
  5358. #define DUK_HSTRING_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) (h))
  5359. #define DUK_HSTRING_DECREF(thr,h) DUK_HEAPHDR_DECREF((thr),(duk_heaphdr *) (h))
  5360. #define DUK_HOBJECT_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) (h))
  5361. #define DUK_HOBJECT_DECREF(thr,h) DUK_HEAPHDR_DECREF((thr),(duk_heaphdr *) (h))
  5362. #define DUK_HBUFFER_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) (h))
  5363. #define DUK_HBUFFER_DECREF(thr,h) DUK_HEAPHDR_DECREF((thr),(duk_heaphdr *) (h))
  5364. #define DUK_HCOMPILEDFUNCTION_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) &(h)->obj)
  5365. #define DUK_HCOMPILEDFUNCTION_DECREF(thr,h) DUK_HEAPHDR_DECREF((thr),(duk_heaphdr *) &(h)->obj)
  5366. #define DUK_HNATIVEFUNCTION_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) &(h)->obj)
  5367. #define DUK_HNATIVEFUNCTION_DECREF(thr,h) DUK_HEAPHDR_DECREF((thr),(duk_heaphdr *) &(h)->obj)
  5368. #define DUK_HTHREAD_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) &(h)->obj)
  5369. #define DUK_HTHREAD_DECREF(thr,h) DUK_HEAPHDR_DECREF((thr),(duk_heaphdr *) &(h)->obj)
  5370. /* Convenience for some situations; the above macros don't allow NULLs
  5371. * for performance reasons.
  5372. */
  5373. #define DUK_HOBJECT_INCREF_ALLOWNULL(thr,h) do { \
  5374. if ((h) != NULL) { \
  5375. DUK_HEAPHDR_INCREF((thr), (duk_heaphdr *) (h)); \
  5376. } \
  5377. } while (0)
  5378. #define DUK_HOBJECT_DECREF_ALLOWNULL(thr,h) do { \
  5379. if ((h) != NULL) { \
  5380. DUK_HEAPHDR_DECREF((thr), (duk_heaphdr *) (h)); \
  5381. } \
  5382. } while (0)
  5383. #else /* DUK_USE_REFERENCE_COUNTING */
  5384. #define DUK_TVAL_INCREF_FAST(thr,v) do {} while (0) /* nop */
  5385. #define DUK_TVAL_DECREF_FAST(thr,v) do {} while (0) /* nop */
  5386. #define DUK_TVAL_INCREF_SLOW(thr,v) do {} while (0) /* nop */
  5387. #define DUK_TVAL_DECREF_SLOW(thr,v) do {} while (0) /* nop */
  5388. #define DUK_TVAL_INCREF(thr,v) do {} while (0) /* nop */
  5389. #define DUK_TVAL_DECREF(thr,v) do {} while (0) /* nop */
  5390. #define DUK_HEAPHDR_INCREF_FAST(thr,h) do {} while (0) /* nop */
  5391. #define DUK_HEAPHDR_DECREF_FAST(thr,h) do {} while (0) /* nop */
  5392. #define DUK_HEAPHDR_INCREF_SLOW(thr,h) do {} while (0) /* nop */
  5393. #define DUK_HEAPHDR_DECREF_SLOW(thr,h) do {} while (0) /* nop */
  5394. #define DUK_HEAPHDR_INCREF(thr,h) do {} while (0) /* nop */
  5395. #define DUK_HEAPHDR_DECREF(thr,h) do {} while (0) /* nop */
  5396. #define DUK_HSTRING_INCREF(thr,h) do {} while (0) /* nop */
  5397. #define DUK_HSTRING_DECREF(thr,h) do {} while (0) /* nop */
  5398. #define DUK_HOBJECT_INCREF(thr,h) do {} while (0) /* nop */
  5399. #define DUK_HOBJECT_DECREF(thr,h) do {} while (0) /* nop */
  5400. #define DUK_HBUFFER_INCREF(thr,h) do {} while (0) /* nop */
  5401. #define DUK_HBUFFER_DECREF(thr,h) do {} while (0) /* nop */
  5402. #define DUK_HCOMPILEDFUNCTION_INCREF(thr,h) do {} while (0) /* nop */
  5403. #define DUK_HCOMPILEDFUNCTION_DECREF(thr,h) do {} while (0) /* nop */
  5404. #define DUK_HNATIVEFUNCTION_INCREF(thr,h) do {} while (0) /* nop */
  5405. #define DUK_HNATIVEFUNCTION_DECREF(thr,h) do {} while (0) /* nop */
  5406. #define DUK_HTHREAD_INCREF(thr,h) do {} while (0) /* nop */
  5407. #define DUK_HTHREAD_DECREF(thr,h) do {} while (0) /* nop */
  5408. #define DUK_HOBJECT_INCREF_ALLOWNULL(thr,h) do {} while (0) /* nop */
  5409. #define DUK_HOBJECT_DECREF_ALLOWNULL(thr,h) do {} while (0) /* nop */
  5410. #endif /* DUK_USE_REFERENCE_COUNTING */
  5411. #endif /* DUK_HEAPHDR_H_INCLUDED */
  5412. #line 1 "duk_api_internal.h"
  5413. /*
  5414. * Internal API calls which have (stack and other) semantics similar
  5415. * to the public API.
  5416. */
  5417. #ifndef DUK_API_INTERNAL_H_INCLUDED
  5418. #define DUK_API_INTERNAL_H_INCLUDED
  5419. /* duk_push_sprintf constants */
  5420. #define DUK_PUSH_SPRINTF_INITIAL_SIZE 256L
  5421. #define DUK_PUSH_SPRINTF_SANITY_LIMIT (1L * 1024L * 1024L * 1024L)
  5422. /* Flag ORed to err_code to indicate __FILE__ / __LINE__ is not
  5423. * blamed as source of error for error fileName / lineNumber.
  5424. */
  5425. #define DUK_ERRCODE_FLAG_NOBLAME_FILELINE (1L << 24)
  5426. /* Valstack resize flags */
  5427. #define DUK_VSRESIZE_FLAG_SHRINK (1 << 0)
  5428. #define DUK_VSRESIZE_FLAG_COMPACT (1 << 1)
  5429. #define DUK_VSRESIZE_FLAG_THROW (1 << 2)
  5430. /* Current convention is to use duk_size_t for value stack sizes and global indices,
  5431. * and duk_idx_t for local frame indices.
  5432. */
  5433. DUK_INTERNAL_DECL
  5434. duk_bool_t duk_valstack_resize_raw(duk_context *ctx,
  5435. duk_size_t min_new_size,
  5436. duk_small_uint_t flags);
  5437. DUK_INTERNAL_DECL duk_tval *duk_get_tval(duk_context *ctx, duk_idx_t index);
  5438. DUK_INTERNAL_DECL duk_tval *duk_require_tval(duk_context *ctx, duk_idx_t index);
  5439. DUK_INTERNAL_DECL void duk_push_tval(duk_context *ctx, duk_tval *tv);
  5440. /* Push the current 'this' binding; throw TypeError if binding is not object
  5441. * coercible (CheckObjectCoercible).
  5442. */
  5443. DUK_INTERNAL_DECL void duk_push_this_check_object_coercible(duk_context *ctx);
  5444. /* duk_push_this() + CheckObjectCoercible() + duk_to_object() */
  5445. DUK_INTERNAL_DECL duk_hobject *duk_push_this_coercible_to_object(duk_context *ctx);
  5446. /* duk_push_this() + CheckObjectCoercible() + duk_to_string() */
  5447. DUK_INTERNAL_DECL duk_hstring *duk_push_this_coercible_to_string(duk_context *ctx);
  5448. /* duk_push_(u)int() is guaranteed to support at least (un)signed 32-bit range */
  5449. #define duk_push_u32(ctx,val) \
  5450. duk_push_uint((ctx), (duk_uint_t) (val))
  5451. #define duk_push_i32(ctx,val) \
  5452. duk_push_int((ctx), (duk_int_t) (val))
  5453. /* sometimes stack and array indices need to go on the stack */
  5454. #define duk_push_idx(ctx,val) \
  5455. duk_push_int((ctx), (duk_int_t) (val))
  5456. #define duk_push_uarridx(ctx,val) \
  5457. duk_push_uint((ctx), (duk_uint_t) (val))
  5458. #define duk_push_size_t(ctx,val) \
  5459. duk_push_uint((ctx), (duk_uint_t) (val)) /* XXX: assumed to fit for now */
  5460. /* internal helper for looking up a tagged type */
  5461. #define DUK_GETTAGGED_FLAG_ALLOW_NULL (1L << 24)
  5462. #define DUK_GETTAGGED_FLAG_CHECK_CLASS (1L << 25)
  5463. #define DUK_GETTAGGED_CLASS_SHIFT 16
  5464. DUK_INTERNAL_DECL duk_heaphdr *duk_get_tagged_heaphdr_raw(duk_context *ctx, duk_idx_t index, duk_uint_t flags_and_tag);
  5465. DUK_INTERNAL_DECL duk_hstring *duk_get_hstring(duk_context *ctx, duk_idx_t index);
  5466. DUK_INTERNAL_DECL duk_hobject *duk_get_hobject(duk_context *ctx, duk_idx_t index);
  5467. DUK_INTERNAL_DECL duk_hbuffer *duk_get_hbuffer(duk_context *ctx, duk_idx_t index);
  5468. DUK_INTERNAL_DECL duk_hthread *duk_get_hthread(duk_context *ctx, duk_idx_t index);
  5469. DUK_INTERNAL_DECL duk_hcompiledfunction *duk_get_hcompiledfunction(duk_context *ctx, duk_idx_t index);
  5470. DUK_INTERNAL_DECL duk_hnativefunction *duk_get_hnativefunction(duk_context *ctx, duk_idx_t index);
  5471. #define duk_get_hobject_with_class(ctx,index,classnum) \
  5472. ((duk_hobject *) duk_get_tagged_heaphdr_raw((ctx), (index), \
  5473. DUK_TAG_OBJECT | DUK_GETTAGGED_FLAG_ALLOW_NULL | \
  5474. DUK_GETTAGGED_FLAG_CHECK_CLASS | ((classnum) << DUK_GETTAGGED_CLASS_SHIFT)))
  5475. #if 0 /* This would be pointless: unexpected type and lightfunc would both return NULL */
  5476. DUK_INTERNAL_DECL duk_hobject *duk_get_hobject_or_lfunc(duk_context *ctx, duk_idx_t index);
  5477. #endif
  5478. DUK_INTERNAL_DECL duk_hobject *duk_get_hobject_or_lfunc_coerce(duk_context *ctx, duk_idx_t index);
  5479. #if 0 /*unused*/
  5480. DUK_INTERNAL_DECL void *duk_get_voidptr(duk_context *ctx, duk_idx_t index);
  5481. #endif
  5482. DUK_INTERNAL_DECL duk_hstring *duk_to_hstring(duk_context *ctx, duk_idx_t index);
  5483. DUK_INTERNAL_DECL duk_int_t duk_to_int_clamped_raw(duk_context *ctx, duk_idx_t index, duk_int_t minval, duk_int_t maxval, duk_bool_t *out_clamped); /* out_clamped=NULL, RangeError if outside range */
  5484. DUK_INTERNAL_DECL duk_int_t duk_to_int_clamped(duk_context *ctx, duk_idx_t index, duk_int_t minval, duk_int_t maxval);
  5485. DUK_INTERNAL_DECL duk_int_t duk_to_int_check_range(duk_context *ctx, duk_idx_t index, duk_int_t minval, duk_int_t maxval);
  5486. DUK_INTERNAL_DECL duk_hstring *duk_require_hstring(duk_context *ctx, duk_idx_t index);
  5487. DUK_INTERNAL_DECL duk_hobject *duk_require_hobject(duk_context *ctx, duk_idx_t index);
  5488. DUK_INTERNAL_DECL duk_hbuffer *duk_require_hbuffer(duk_context *ctx, duk_idx_t index);
  5489. DUK_INTERNAL_DECL duk_hthread *duk_require_hthread(duk_context *ctx, duk_idx_t index);
  5490. #if 0 /*unused */
  5491. DUK_INTERNAL_DECL duk_hcompiledfunction *duk_require_hcompiledfunction(duk_context *ctx, duk_idx_t index);
  5492. #endif
  5493. DUK_INTERNAL_DECL duk_hnativefunction *duk_require_hnativefunction(duk_context *ctx, duk_idx_t index);
  5494. #define duk_require_hobject_with_class(ctx,index,classnum) \
  5495. ((duk_hobject *) duk_get_tagged_heaphdr_raw((ctx), (index), \
  5496. DUK_TAG_OBJECT | \
  5497. DUK_GETTAGGED_FLAG_CHECK_CLASS | ((classnum) << DUK_GETTAGGED_CLASS_SHIFT)))
  5498. DUK_INTERNAL_DECL duk_hobject *duk_require_hobject_or_lfunc(duk_context *ctx, duk_idx_t index);
  5499. DUK_INTERNAL_DECL duk_hobject *duk_require_hobject_or_lfunc_coerce(duk_context *ctx, duk_idx_t index);
  5500. #if defined(DUK_USE_DEBUGGER_SUPPORT)
  5501. DUK_INTERNAL_DECL void duk_push_unused(duk_context *ctx);
  5502. #endif
  5503. DUK_INTERNAL_DECL void duk_push_hstring(duk_context *ctx, duk_hstring *h);
  5504. DUK_INTERNAL_DECL void duk_push_hstring_stridx(duk_context *ctx, duk_small_int_t stridx);
  5505. DUK_INTERNAL_DECL void duk_push_hobject(duk_context *ctx, duk_hobject *h);
  5506. DUK_INTERNAL_DECL void duk_push_hbuffer(duk_context *ctx, duk_hbuffer *h);
  5507. #define duk_push_hthread(ctx,h) \
  5508. duk_push_hobject((ctx), (duk_hobject *) (h))
  5509. #define duk_push_hcompiledfunction(ctx,h) \
  5510. duk_push_hobject((ctx), (duk_hobject *) (h))
  5511. #define duk_push_hnativefunction(ctx,h) \
  5512. duk_push_hobject((ctx), (duk_hobject *) (h))
  5513. DUK_INTERNAL_DECL void duk_push_hobject_bidx(duk_context *ctx, duk_small_int_t builtin_idx);
  5514. DUK_INTERNAL_DECL duk_idx_t duk_push_object_helper(duk_context *ctx, duk_uint_t hobject_flags_and_class, duk_small_int_t prototype_bidx);
  5515. DUK_INTERNAL_DECL duk_idx_t duk_push_object_helper_proto(duk_context *ctx, duk_uint_t hobject_flags_and_class, duk_hobject *proto);
  5516. DUK_INTERNAL_DECL duk_idx_t duk_push_object_internal(duk_context *ctx);
  5517. DUK_INTERNAL_DECL duk_idx_t duk_push_compiledfunction(duk_context *ctx);
  5518. DUK_INTERNAL_DECL void duk_push_c_function_noexotic(duk_context *ctx, duk_c_function func, duk_int_t nargs);
  5519. DUK_INTERNAL_DECL void duk_push_c_function_noconstruct_noexotic(duk_context *ctx, duk_c_function func, duk_int_t nargs);
  5520. DUK_INTERNAL_DECL void duk_push_string_funcptr(duk_context *ctx, duk_uint8_t *ptr, duk_size_t sz);
  5521. DUK_INTERNAL_DECL void duk_push_lightfunc_name(duk_context *ctx, duk_tval *tv);
  5522. DUK_INTERNAL_DECL void duk_push_lightfunc_tostring(duk_context *ctx, duk_tval *tv);
  5523. DUK_INTERNAL_DECL duk_bool_t duk_get_prop_stridx(duk_context *ctx, duk_idx_t obj_index, duk_small_int_t stridx); /* [] -> [val] */
  5524. DUK_INTERNAL_DECL duk_bool_t duk_put_prop_stridx(duk_context *ctx, duk_idx_t obj_index, duk_small_int_t stridx); /* [val] -> [] */
  5525. DUK_INTERNAL_DECL duk_bool_t duk_del_prop_stridx(duk_context *ctx, duk_idx_t obj_index, duk_small_int_t stridx); /* [] -> [] */
  5526. DUK_INTERNAL_DECL duk_bool_t duk_has_prop_stridx(duk_context *ctx, duk_idx_t obj_index, duk_small_int_t stridx); /* [] -> [] */
  5527. DUK_INTERNAL_DECL duk_bool_t duk_get_prop_stridx_boolean(duk_context *ctx, duk_idx_t obj_index, duk_small_int_t stridx, duk_bool_t *out_has_prop); /* [] -> [] */
  5528. DUK_INTERNAL_DECL void duk_xdef_prop(duk_context *ctx, duk_idx_t obj_index, duk_small_uint_t desc_flags); /* [key val] -> [] */
  5529. DUK_INTERNAL_DECL void duk_xdef_prop_index(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index, duk_small_uint_t desc_flags); /* [val] -> [] */
  5530. DUK_INTERNAL_DECL void duk_xdef_prop_stridx(duk_context *ctx, duk_idx_t obj_index, duk_small_int_t stridx, duk_small_uint_t desc_flags); /* [val] -> [] */
  5531. DUK_INTERNAL_DECL void duk_xdef_prop_stridx_builtin(duk_context *ctx, duk_idx_t obj_index, duk_small_int_t stridx, duk_small_int_t builtin_idx, duk_small_uint_t desc_flags); /* [] -> [] */
  5532. DUK_INTERNAL_DECL void duk_xdef_prop_stridx_thrower(duk_context *ctx, duk_idx_t obj_index, duk_small_int_t stridx, duk_small_uint_t desc_flags); /* [] -> [] */
  5533. /* These are macros for now, but could be separate functions to reduce code
  5534. * footprint (check call site count before refactoring).
  5535. */
  5536. #define duk_xdef_prop_wec(ctx,obj_index) \
  5537. duk_xdef_prop((ctx), (obj_index), DUK_PROPDESC_FLAGS_WEC)
  5538. #define duk_xdef_prop_index_wec(ctx,obj_index,arr_index) \
  5539. duk_xdef_prop_index((ctx), (obj_index), (arr_index), DUK_PROPDESC_FLAGS_WEC)
  5540. #define duk_xdef_prop_stridx_wec(ctx,obj_index,stridx) \
  5541. duk_xdef_prop_stridx((ctx), (obj_index), (stridx), DUK_PROPDESC_FLAGS_WEC)
  5542. /* Set object 'length'. */
  5543. DUK_INTERNAL_DECL void duk_set_length(duk_context *ctx, duk_idx_t index, duk_size_t length);
  5544. #endif /* DUK_API_INTERNAL_H_INCLUDED */
  5545. #line 1 "duk_hstring.h"
  5546. /*
  5547. * Heap string representation.
  5548. *
  5549. * Strings are byte sequences ordinarily stored in extended UTF-8 format,
  5550. * allowing values larger than the official UTF-8 range (used internally)
  5551. * and also allowing UTF-8 encoding of surrogate pairs (CESU-8 format).
  5552. * Strings may also be invalid UTF-8 altogether which is the case e.g. with
  5553. * strings used as internal property names and raw buffers converted to
  5554. * strings. In such cases the 'clen' field contains an inaccurate value.
  5555. *
  5556. * Ecmascript requires support for 32-bit long strings. However, since each
  5557. * 16-bit codepoint can take 3 bytes in CESU-8, this representation can only
  5558. * support about 1.4G codepoint long strings in extreme cases. This is not
  5559. * really a practical issue.
  5560. */
  5561. #ifndef DUK_HSTRING_H_INCLUDED
  5562. #define DUK_HSTRING_H_INCLUDED
  5563. /* Impose a maximum string length for now. Restricted artificially to
  5564. * ensure adding a heap header length won't overflow size_t. The limit
  5565. * should be synchronized with DUK_HBUFFER_MAX_BYTELEN.
  5566. *
  5567. * E5.1 makes provisions to support strings longer than 4G characters.
  5568. * This limit should be eliminated on 64-bit platforms (and increased
  5569. * closer to maximum support on 32-bit platforms).
  5570. */
  5571. #if defined(DUK_USE_STRLEN16)
  5572. #define DUK_HSTRING_MAX_BYTELEN (0x0000ffffUL)
  5573. #else
  5574. #define DUK_HSTRING_MAX_BYTELEN (0x7fffffffUL)
  5575. #endif
  5576. /* XXX: could add flags for "is valid CESU-8" (Ecmascript compatible strings),
  5577. * "is valid UTF-8", "is valid extended UTF-8" (internal strings are not,
  5578. * regexp bytecode is), and "contains non-BMP characters". These are not
  5579. * needed right now.
  5580. */
  5581. #define DUK_HSTRING_FLAG_ARRIDX DUK_HEAPHDR_USER_FLAG(0) /* string is a valid array index */
  5582. #define DUK_HSTRING_FLAG_INTERNAL DUK_HEAPHDR_USER_FLAG(1) /* string is internal */
  5583. #define DUK_HSTRING_FLAG_RESERVED_WORD DUK_HEAPHDR_USER_FLAG(2) /* string is a reserved word (non-strict) */
  5584. #define DUK_HSTRING_FLAG_STRICT_RESERVED_WORD DUK_HEAPHDR_USER_FLAG(3) /* string is a reserved word (strict) */
  5585. #define DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS DUK_HEAPHDR_USER_FLAG(4) /* string is 'eval' or 'arguments' */
  5586. #define DUK_HSTRING_FLAG_EXTDATA DUK_HEAPHDR_USER_FLAG(5) /* string data is external (duk_hstring_external) */
  5587. #define DUK_HSTRING_HAS_ARRIDX(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ARRIDX)
  5588. #define DUK_HSTRING_HAS_INTERNAL(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_INTERNAL)
  5589. #define DUK_HSTRING_HAS_RESERVED_WORD(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_RESERVED_WORD)
  5590. #define DUK_HSTRING_HAS_STRICT_RESERVED_WORD(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_STRICT_RESERVED_WORD)
  5591. #define DUK_HSTRING_HAS_EVAL_OR_ARGUMENTS(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS)
  5592. #define DUK_HSTRING_HAS_EXTDATA(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EXTDATA)
  5593. #define DUK_HSTRING_SET_ARRIDX(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ARRIDX)
  5594. #define DUK_HSTRING_SET_INTERNAL(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_INTERNAL)
  5595. #define DUK_HSTRING_SET_RESERVED_WORD(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_RESERVED_WORD)
  5596. #define DUK_HSTRING_SET_STRICT_RESERVED_WORD(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_STRICT_RESERVED_WORD)
  5597. #define DUK_HSTRING_SET_EVAL_OR_ARGUMENTS(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS)
  5598. #define DUK_HSTRING_SET_EXTDATA(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EXTDATA)
  5599. #define DUK_HSTRING_CLEAR_ARRIDX(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ARRIDX)
  5600. #define DUK_HSTRING_CLEAR_INTERNAL(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_INTERNAL)
  5601. #define DUK_HSTRING_CLEAR_RESERVED_WORD(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_RESERVED_WORD)
  5602. #define DUK_HSTRING_CLEAR_STRICT_RESERVED_WORD(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_STRICT_RESERVED_WORD)
  5603. #define DUK_HSTRING_CLEAR_EVAL_OR_ARGUMENTS(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS)
  5604. #define DUK_HSTRING_CLEAR_EXTDATA(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EXTDATA)
  5605. #define DUK_HSTRING_IS_ASCII(x) (DUK_HSTRING_GET_BYTELEN((x)) == DUK_HSTRING_GET_CHARLEN((x)))
  5606. #define DUK_HSTRING_IS_EMPTY(x) (DUK_HSTRING_GET_BYTELEN((x)) == 0)
  5607. #if defined(DUK_USE_STRHASH16)
  5608. #define DUK_HSTRING_GET_HASH(x) ((x)->hdr.h_flags >> 16)
  5609. #define DUK_HSTRING_SET_HASH(x,v) do { \
  5610. (x)->hdr.h_flags = ((x)->hdr.h_flags & 0x0000ffffUL) | ((v) << 16); \
  5611. } while (0)
  5612. #else
  5613. #define DUK_HSTRING_GET_HASH(x) ((x)->hash)
  5614. #define DUK_HSTRING_SET_HASH(x,v) do { \
  5615. (x)->hash = (v); \
  5616. } while (0)
  5617. #endif
  5618. #if defined(DUK_USE_STRLEN16)
  5619. #define DUK_HSTRING_GET_BYTELEN(x) ((x)->blen16)
  5620. #define DUK_HSTRING_SET_BYTELEN(x,v) do { \
  5621. (x)->blen16 = (v); \
  5622. } while (0)
  5623. #define DUK_HSTRING_GET_CHARLEN(x) ((x)->clen16)
  5624. #define DUK_HSTRING_SET_CHARLEN(x,v) do { \
  5625. (x)->clen16 = (v); \
  5626. } while (0)
  5627. #else
  5628. #define DUK_HSTRING_GET_BYTELEN(x) ((x)->blen)
  5629. #define DUK_HSTRING_SET_BYTELEN(x,v) do { \
  5630. (x)->blen = (v); \
  5631. } while (0)
  5632. #define DUK_HSTRING_GET_CHARLEN(x) ((x)->clen)
  5633. #define DUK_HSTRING_SET_CHARLEN(x,v) do { \
  5634. (x)->clen = (v); \
  5635. } while (0)
  5636. #endif
  5637. #if defined(DUK_USE_HSTRING_EXTDATA)
  5638. #define DUK_HSTRING_GET_EXTDATA(x) \
  5639. ((x)->extdata)
  5640. #define DUK_HSTRING_GET_DATA(x) \
  5641. (DUK_HSTRING_HAS_EXTDATA((x)) ? \
  5642. DUK_HSTRING_GET_EXTDATA((duk_hstring_external *) (x)) : ((const duk_uint8_t *) ((x) + 1)))
  5643. #else
  5644. #define DUK_HSTRING_GET_DATA(x) \
  5645. ((const duk_uint8_t *) ((x) + 1))
  5646. #endif
  5647. #define DUK_HSTRING_GET_DATA_END(x) \
  5648. (DUK_HSTRING_GET_DATA((x)) + (x)->blen)
  5649. /* marker value; in E5 2^32-1 is not a valid array index (2^32-2 is highest valid) */
  5650. #define DUK_HSTRING_NO_ARRAY_INDEX (0xffffffffUL)
  5651. /* get array index related to string (or return DUK_HSTRING_NO_ARRAY_INDEX);
  5652. * avoids helper call if string has no array index value.
  5653. */
  5654. #define DUK_HSTRING_GET_ARRIDX_FAST(h) \
  5655. (DUK_HSTRING_HAS_ARRIDX((h)) ? duk_js_to_arrayindex_string_helper((h)) : DUK_HSTRING_NO_ARRAY_INDEX)
  5656. /* slower but more compact variant */
  5657. #define DUK_HSTRING_GET_ARRIDX_SLOW(h) \
  5658. (duk_js_to_arrayindex_string_helper((h)))
  5659. /*
  5660. * Misc
  5661. */
  5662. struct duk_hstring {
  5663. /* Smaller heaphdr than for other objects, because strings are held
  5664. * in string intern table which requires no link pointers. Much of
  5665. * the 32-bit flags field is unused by flags, so we can stuff a 16-bit
  5666. * field in there.
  5667. */
  5668. duk_heaphdr_string hdr;
  5669. /* Note: we could try to stuff a partial hash (e.g. 16 bits) into the
  5670. * shared heap header. Good hashing needs more hash bits though.
  5671. */
  5672. /* string hash */
  5673. #if defined(DUK_USE_STRHASH16)
  5674. /* If 16-bit hash is in use, stuff it into duk_heaphdr_string flags. */
  5675. #else
  5676. duk_uint32_t hash;
  5677. #endif
  5678. /* length in bytes (not counting NUL term) */
  5679. #if defined(DUK_USE_STRLEN16)
  5680. duk_uint16_t blen16;
  5681. #else
  5682. duk_uint32_t blen;
  5683. #endif
  5684. /* length in codepoints (must be E5 compatible) */
  5685. #if defined(DUK_USE_STRLEN16)
  5686. duk_uint16_t clen16;
  5687. #else
  5688. duk_uint32_t clen;
  5689. #endif
  5690. /*
  5691. * String value of 'blen+1' bytes follows (+1 for NUL termination
  5692. * convenience for C API). No alignment needs to be guaranteed
  5693. * for strings, but fields above should guarantee alignment-by-4
  5694. * (but not alignment-by-8).
  5695. */
  5696. };
  5697. /* The external string struct is defined even when the feature is inactive. */
  5698. struct duk_hstring_external {
  5699. duk_hstring str;
  5700. /*
  5701. * For an external string, the NUL-terminated string data is stored
  5702. * externally. The user must guarantee that data behind this pointer
  5703. * doesn't change while it's used.
  5704. */
  5705. const duk_uint8_t *extdata;
  5706. };
  5707. /*
  5708. * Prototypes
  5709. */
  5710. DUK_INTERNAL_DECL duk_ucodepoint_t duk_hstring_char_code_at_raw(duk_hthread *thr, duk_hstring *h, duk_uint_t pos);
  5711. #endif /* DUK_HSTRING_H_INCLUDED */
  5712. #line 1 "duk_hobject.h"
  5713. /*
  5714. * Heap object representation.
  5715. *
  5716. * Heap objects are used for Ecmascript objects, arrays, and functions,
  5717. * but also for internal control like declarative and object environment
  5718. * records. Compiled functions, native functions, and threads are also
  5719. * objects but with an extended C struct.
  5720. *
  5721. * Objects provide the required Ecmascript semantics and exotic behaviors
  5722. * especially for property access.
  5723. *
  5724. * Properties are stored in three conceptual parts:
  5725. *
  5726. * 1. A linear 'entry part' contains ordered key-value-attributes triples
  5727. * and is the main method of string properties.
  5728. *
  5729. * 2. An optional linear 'array part' is used for array objects to store a
  5730. * (dense) range of [0,N[ array indexed entries with default attributes
  5731. * (writable, enumerable, configurable). If the array part would become
  5732. * sparse or non-default attributes are required, the array part is
  5733. * abandoned and moved to the 'entry part'.
  5734. *
  5735. * 3. An optional 'hash part' is used to optimize lookups of the entry
  5736. * part; it is used only for objects with sufficiently many properties
  5737. * and can be abandoned without loss of information.
  5738. *
  5739. * These three conceptual parts are stored in a single memory allocated area.
  5740. * This minimizes memory allocation overhead but also means that all three
  5741. * parts are resized together, and makes property access a bit complicated.
  5742. */
  5743. #ifndef DUK_HOBJECT_H_INCLUDED
  5744. #define DUK_HOBJECT_H_INCLUDED
  5745. /* there are currently 26 flag bits available */
  5746. #define DUK_HOBJECT_FLAG_EXTENSIBLE DUK_HEAPHDR_USER_FLAG(0) /* object is extensible */
  5747. #define DUK_HOBJECT_FLAG_CONSTRUCTABLE DUK_HEAPHDR_USER_FLAG(1) /* object is constructable */
  5748. #define DUK_HOBJECT_FLAG_BOUND DUK_HEAPHDR_USER_FLAG(2) /* object established using Function.prototype.bind() */
  5749. #define DUK_HOBJECT_FLAG_COMPILEDFUNCTION DUK_HEAPHDR_USER_FLAG(4) /* object is a compiled function (duk_hcompiledfunction) */
  5750. #define DUK_HOBJECT_FLAG_NATIVEFUNCTION DUK_HEAPHDR_USER_FLAG(5) /* object is a native function (duk_hnativefunction) */
  5751. #define DUK_HOBJECT_FLAG_THREAD DUK_HEAPHDR_USER_FLAG(6) /* object is a thread (duk_hthread) */
  5752. #define DUK_HOBJECT_FLAG_ARRAY_PART DUK_HEAPHDR_USER_FLAG(7) /* object has an array part (a_size may still be 0) */
  5753. #define DUK_HOBJECT_FLAG_STRICT DUK_HEAPHDR_USER_FLAG(8) /* function: function object is strict */
  5754. #define DUK_HOBJECT_FLAG_NOTAIL DUK_HEAPHDR_USER_FLAG(9) /* function: function must not be tailcalled */
  5755. #define DUK_HOBJECT_FLAG_NEWENV DUK_HEAPHDR_USER_FLAG(10) /* function: create new environment when called (see duk_hcompiledfunction) */
  5756. #define DUK_HOBJECT_FLAG_NAMEBINDING DUK_HEAPHDR_USER_FLAG(11) /* function: create binding for func name (function templates only, used for named function expressions) */
  5757. #define DUK_HOBJECT_FLAG_CREATEARGS DUK_HEAPHDR_USER_FLAG(12) /* function: create an arguments object on function call */
  5758. #define DUK_HOBJECT_FLAG_ENVRECCLOSED DUK_HEAPHDR_USER_FLAG(13) /* envrec: (declarative) record is closed */
  5759. #define DUK_HOBJECT_FLAG_EXOTIC_ARRAY DUK_HEAPHDR_USER_FLAG(14) /* 'Array' object, array length and index exotic behavior */
  5760. #define DUK_HOBJECT_FLAG_EXOTIC_STRINGOBJ DUK_HEAPHDR_USER_FLAG(15) /* 'String' object, array index exotic behavior */
  5761. #define DUK_HOBJECT_FLAG_EXOTIC_ARGUMENTS DUK_HEAPHDR_USER_FLAG(16) /* 'Arguments' object and has arguments exotic behavior (non-strict callee) */
  5762. #define DUK_HOBJECT_FLAG_EXOTIC_DUKFUNC DUK_HEAPHDR_USER_FLAG(17) /* Duktape/C (nativefunction) object, exotic 'length' */
  5763. #define DUK_HOBJECT_FLAG_EXOTIC_BUFFEROBJ DUK_HEAPHDR_USER_FLAG(18) /* 'Buffer' object, array index exotic behavior, virtual 'length' */
  5764. #define DUK_HOBJECT_FLAG_EXOTIC_PROXYOBJ DUK_HEAPHDR_USER_FLAG(19) /* 'Proxy' object */
  5765. /* bit 20 unused */
  5766. #define DUK_HOBJECT_FLAG_CLASS_BASE DUK_HEAPHDR_USER_FLAG_NUMBER(21)
  5767. #define DUK_HOBJECT_FLAG_CLASS_BITS 5
  5768. #define DUK_HOBJECT_GET_CLASS_NUMBER(h) \
  5769. DUK_HEAPHDR_GET_FLAG_RANGE(&(h)->hdr, DUK_HOBJECT_FLAG_CLASS_BASE, DUK_HOBJECT_FLAG_CLASS_BITS)
  5770. #define DUK_HOBJECT_SET_CLASS_NUMBER(h,v) \
  5771. DUK_HEAPHDR_SET_FLAG_RANGE(&(h)->hdr, DUK_HOBJECT_FLAG_CLASS_BASE, DUK_HOBJECT_FLAG_CLASS_BITS, (v))
  5772. /* Macro for creating flag initializer from a class number.
  5773. * Unsigned type cast is needed to avoid warnings about coercing
  5774. * a signed integer to an unsigned one; the largest class values
  5775. * have the highest bit (bit 31) set which causes this.
  5776. */
  5777. #define DUK_HOBJECT_CLASS_AS_FLAGS(v) (((duk_uint_t) (v)) << DUK_HOBJECT_FLAG_CLASS_BASE)
  5778. /* E5 Section 8.6.2 + custom classes */
  5779. #define DUK_HOBJECT_CLASS_UNUSED 0
  5780. #define DUK_HOBJECT_CLASS_ARGUMENTS 1
  5781. #define DUK_HOBJECT_CLASS_ARRAY 2
  5782. #define DUK_HOBJECT_CLASS_BOOLEAN 3
  5783. #define DUK_HOBJECT_CLASS_DATE 4
  5784. #define DUK_HOBJECT_CLASS_ERROR 5
  5785. #define DUK_HOBJECT_CLASS_FUNCTION 6
  5786. #define DUK_HOBJECT_CLASS_JSON 7
  5787. #define DUK_HOBJECT_CLASS_MATH 8
  5788. #define DUK_HOBJECT_CLASS_NUMBER 9
  5789. #define DUK_HOBJECT_CLASS_OBJECT 10
  5790. #define DUK_HOBJECT_CLASS_REGEXP 11
  5791. #define DUK_HOBJECT_CLASS_STRING 12
  5792. #define DUK_HOBJECT_CLASS_GLOBAL 13
  5793. #define DUK_HOBJECT_CLASS_OBJENV 14 /* custom */
  5794. #define DUK_HOBJECT_CLASS_DECENV 15 /* custom */
  5795. #define DUK_HOBJECT_CLASS_BUFFER 16 /* custom */
  5796. #define DUK_HOBJECT_CLASS_POINTER 17 /* custom */
  5797. #define DUK_HOBJECT_CLASS_THREAD 18 /* custom */
  5798. #define DUK_HOBJECT_IS_OBJENV(h) (DUK_HOBJECT_GET_CLASS_NUMBER((h)) == DUK_HOBJECT_CLASS_OBJENV)
  5799. #define DUK_HOBJECT_IS_DECENV(h) (DUK_HOBJECT_GET_CLASS_NUMBER((h)) == DUK_HOBJECT_CLASS_DECENV)
  5800. #define DUK_HOBJECT_IS_ENV(h) (DUK_HOBJECT_IS_OBJENV((h)) || DUK_HOBJECT_IS_DECENV((h)))
  5801. #define DUK_HOBJECT_IS_ARRAY(h) (DUK_HOBJECT_GET_CLASS_NUMBER((h)) == DUK_HOBJECT_CLASS_ARRAY)
  5802. #define DUK_HOBJECT_IS_COMPILEDFUNCTION(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_COMPILEDFUNCTION)
  5803. #define DUK_HOBJECT_IS_NATIVEFUNCTION(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_NATIVEFUNCTION)
  5804. #define DUK_HOBJECT_IS_THREAD(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_THREAD)
  5805. #define DUK_HOBJECT_IS_NONBOUND_FUNCTION(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, \
  5806. DUK_HOBJECT_FLAG_COMPILEDFUNCTION | \
  5807. DUK_HOBJECT_FLAG_NATIVEFUNCTION)
  5808. #define DUK_HOBJECT_IS_FUNCTION(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, \
  5809. DUK_HOBJECT_FLAG_BOUND | \
  5810. DUK_HOBJECT_FLAG_COMPILEDFUNCTION | \
  5811. DUK_HOBJECT_FLAG_NATIVEFUNCTION)
  5812. #define DUK_HOBJECT_IS_CALLABLE(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, \
  5813. DUK_HOBJECT_FLAG_BOUND | \
  5814. DUK_HOBJECT_FLAG_COMPILEDFUNCTION | \
  5815. DUK_HOBJECT_FLAG_NATIVEFUNCTION)
  5816. /* object has any exotic behavior(s) */
  5817. #define DUK_HOBJECT_EXOTIC_BEHAVIOR_FLAGS (DUK_HOBJECT_FLAG_EXOTIC_ARRAY | \
  5818. DUK_HOBJECT_FLAG_EXOTIC_ARGUMENTS | \
  5819. DUK_HOBJECT_FLAG_EXOTIC_STRINGOBJ | \