Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify JSAtom creation #412

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Simplify JSAtom creation #412

wants to merge 1 commit into from

Conversation

chqrlie
Copy link
Collaborator

@chqrlie chqrlie commented May 21, 2024

  • use single JS_NewAtomRT API to create atoms with or without ctx takes a UTF-8 string and flags, optionally detects numeric atoms
  • simplify `__JS_NewAtom
  • add js_realloc_rt2 with slack handling
  • simplify JS_NewAtomLen and JS_NewAtom̀
  • simplify JS_NewAtomUInt32, JS_NewAtomInt64, JS_NewClass

- use single `JS_NewAtomRT` API to create atoms with or without `ctx`
  takes a UTF-8 string and flags, optionally detects numeric atoms
- simplify `__JS_NewAtom
- add `js_realloc_rt2` with slack handling
- simplify `JS_NewAtomLen` and `JS_NewAtom̀`
- simplify `JS_NewAtomUInt32`, `JS_NewAtomInt64`, `JS_NewClass`
Copy link
Contributor

@saghul saghul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, but I left some questions.

Return `JS_ATOM_NULL` if error.
Exception is thrown if `ctx` is not a null pointer.
*/
static JSAtom __JS_NewAtom(JSRuntime *rt, JSContext *ctx, JSString *str, int atom_type)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This reads a bit weird. When would one pass rt but not ctx ?

memcpy(p->u.str8, str, len);
p->u.str8[len] = '\0';
return __JS_NewAtom(rt, p, atom_type);
if (is_digit(*str) && len < 11) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why 11?

p->u.str8[len] = '\0';
return __JS_NewAtom(rt, p, atom_type);
if (is_digit(*str) && len < 11) {
if (*str == '0') {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why the special case just for 0 and not for every single digit string?

@saghul
Copy link
Contributor

saghul commented Jun 24, 2024

Sorry for the delay!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants