@@ -297,7 +297,7 @@ static jsval_t mkentity(struct js *js, jsoff_t b, const void *buf, size_t len) {
297
297
return mkval (b & 3 , ofs );
298
298
}
299
299
300
- static jsval_t mkstr (struct js * js , const void * ptr , size_t len ) {
300
+ jsval_t js_mkstr (struct js * js , const void * ptr , size_t len ) {
301
301
// printf("MKSTR: [%.*s] -> off %u\n", (int) len, (char *) ptr, js->brk);
302
302
return mkentity (js , (jsoff_t ) (((len + 1 ) << 2 ) | T_STR ), ptr , len + 1 );
303
303
}
@@ -653,7 +653,7 @@ static jsval_t do_string_op(struct js *js, uint8_t op, jsval_t l, jsval_t r) {
653
653
jsoff_t n1 , off1 = vstr (js , l , & n1 );
654
654
jsoff_t n2 , off2 = vstr (js , r , & n2 );
655
655
if (op == TOK_PLUS ) {
656
- jsval_t res = mkstr (js , NULL , n1 + n2 );
656
+ jsval_t res = js_mkstr (js , NULL , n1 + n2 );
657
657
if (vtype (res ) == T_STR ) {
658
658
jsoff_t n , off = vstr (js , res , & n );
659
659
memmove (& js -> mem [off ], & js -> mem [off1 ], n1 );
@@ -844,7 +844,7 @@ static jsval_t call_c(struct js *js, const char *fn, int fnlen, jsoff_t fnoff) {
844
844
case 'i' : return tov ((int ) res .u64 );
845
845
case 'd' : return tov (res .d );
846
846
case 'b' : return mkval (T_BOOL , res .w ? 1 : 0 );
847
- case 's' : return mkstr (js , (char * ) (intptr_t ) res .w , strlen ((char * ) (intptr_t ) res .w ));
847
+ case 's' : return js_mkstr (js , (char * ) (intptr_t ) res .w , strlen ((char * ) (intptr_t ) res .w ));
848
848
case 'v' : return mkval (T_UNDEF , 0 );
849
849
case 'j' : return (jsval_t ) res .u64 ;
850
850
}
@@ -873,7 +873,7 @@ static jsval_t call_js(struct js *js, const char *fn, int fnlen) {
873
873
: js_expr (js , TOK_COMMA , TOK_RPAREN );
874
874
// printf("[%s]\n", js_str(js, v));
875
875
// Set argument in the function scope
876
- setprop (js , js -> scope , mkstr (js , & fn [fnpos ], identlen ), v );
876
+ setprop (js , js -> scope , js_mkstr (js , & fn [fnpos ], identlen ), v );
877
877
js -> pos = skiptonext (js -> code , js -> clen , js -> pos );
878
878
if (js -> pos < js -> clen && js -> code [js -> pos ] == ',' ) js -> pos ++ ;
879
879
fnpos = skiptonext (fn , fnlen , fnpos + identlen ); // Skip past identifier
@@ -924,7 +924,7 @@ static jsval_t do_op(struct js *js, uint8_t op, jsval_t lhs, jsval_t rhs) {
924
924
switch (op ) {
925
925
case TOK_LAND : return mkval (T_BOOL , js_truthy (js , l ) && js_truthy (js , r ) ? 1 : 0 );
926
926
case TOK_LOR : return do_logical_or (js , l , r );
927
- case TOK_TYPEOF : return mkstr (js , typestr (vtype (r )), strlen (typestr (vtype (r ))));
927
+ case TOK_TYPEOF : return js_mkstr (js , typestr (vtype (r )), strlen (typestr (vtype (r ))));
928
928
case TOK_CALL : return do_call_op (js , l , r );
929
929
case TOK_ASSIGN : return assign (js , lhs , r );
930
930
case TOK_POSTINC : { do_assign_op (js , TOK_PLUS_ASSIGN , lhs , tov (1 )); return l ; }
@@ -998,7 +998,7 @@ static jsval_t js_str_literal(struct js *js) {
998
998
out [n1 ++ ] = js -> code [js -> toff + n2 ];
999
999
}
1000
1000
}
1001
- return mkstr (js , NULL , n1 );
1001
+ return js_mkstr (js , NULL , n1 );
1002
1002
}
1003
1003
1004
1004
static jsval_t js_obj_literal (struct js * js ) {
@@ -1014,7 +1014,7 @@ static jsval_t js_obj_literal(struct js *js) {
1014
1014
if (exe ) {
1015
1015
// printf("XXXX [%s] scope: %lu\n", js_str(js, val), vdata(js->scope));
1016
1016
if (is_err (val )) return val ;
1017
- jsval_t key = mkstr (js , js -> code + koff , klen );
1017
+ jsval_t key = js_mkstr (js , js -> code + koff , klen );
1018
1018
if (is_err (key )) return key ;
1019
1019
jsval_t res = setprop (js , obj , key , resolveprop (js , val ));
1020
1020
if (is_err (res )) return res ;
@@ -1043,7 +1043,7 @@ static jsval_t js_func_literal(struct js *js) {
1043
1043
jsval_t res = js_block (js , false); // Skip function body - no exec
1044
1044
if (is_err (res )) return res ; // But fail short on parse error
1045
1045
js -> flags = flags ; // Restore flags
1046
- jsval_t str = mkstr (js , & js -> code [pos ], js -> pos - pos );
1046
+ jsval_t str = js_mkstr (js , & js -> code [pos ], js -> pos - pos );
1047
1047
// printf("FUNC: %u [%.*s]\n", pos, js->pos - pos, &js->code[pos]);
1048
1048
return mkval (T_FUNC , vdata (str ));
1049
1049
}
@@ -1155,7 +1155,7 @@ static jsval_t js_let(struct js *js) {
1155
1155
if (lkp (js , js -> scope , name , nlen ) > 0 )
1156
1156
return js_err (js , "'%.*s' already declared" , (int ) nlen , name );
1157
1157
jsval_t x =
1158
- setprop (js , js -> scope , mkstr (js , name , nlen ), resolveprop (js , v ));
1158
+ setprop (js , js -> scope , js_mkstr (js , name , nlen ), resolveprop (js , v ));
1159
1159
if (is_err (x )) return x ;
1160
1160
}
1161
1161
if (js -> tok == TOK_SEMICOLON || js -> tok == TOK_EOF ) break ; // Stop
@@ -1285,6 +1285,11 @@ struct js *js_create(void *buf, size_t len) {
1285
1285
return js ;
1286
1286
}
1287
1287
1288
+ jsval_t js_mknum (struct js * js , double value ) {
1289
+ (void ) js ;
1290
+ return tov (value );
1291
+ }
1292
+
1288
1293
jsval_t js_mkobj (struct js * js ) {
1289
1294
return mkobj (js , 0 );
1290
1295
}
@@ -1295,7 +1300,7 @@ jsval_t js_glob(struct js *js) {
1295
1300
}
1296
1301
1297
1302
void js_set (struct js * js , jsval_t obj , const char * key , jsval_t val ) {
1298
- is_err (setprop (js , obj , mkstr (js , key , strlen (key )), val ));
1303
+ is_err (setprop (js , obj , js_mkstr (js , key , strlen (key )), val ));
1299
1304
}
1300
1305
1301
1306
int js_usage (struct js * js ) {
@@ -1305,7 +1310,7 @@ int js_usage(struct js *js) {
1305
1310
jsval_t js_import (struct js * js , uintptr_t fn , const char * signature ) {
1306
1311
char buf [64 ];
1307
1312
size_t n = snprintf (buf , sizeof (buf ), "%s@%" PRIxPTR , signature , fn );
1308
- jsval_t str = mkstr (js , buf , n );
1313
+ jsval_t str = js_mkstr (js , buf , n );
1309
1314
return mkval (T_FUNC , vdata (str ));
1310
1315
}
1311
1316
0 commit comments