JIT: Inline keyword?
This commit is contained in:
parent
cdea0da566
commit
a1f04604df
|
@ -34,7 +34,7 @@
|
|||
(unless (memq name '(eq? eqv? equal?
|
||||
not null? pair? list?
|
||||
real? number? boolean?
|
||||
procedure? symbol?
|
||||
procedure? symbol? keyword?
|
||||
string? bytes?
|
||||
vector? box?
|
||||
eof-object?
|
||||
|
@ -205,6 +205,8 @@
|
|||
(un #t 'procedure? (lambda (x) 10))
|
||||
(un #t 'symbol? 'ok)
|
||||
(un #f 'symbol? #f)
|
||||
(un #t 'keyword? '#:ok)
|
||||
(un #f 'keyword? #f)
|
||||
(un #t 'vector? (vector 1 2 3))
|
||||
(un #f 'vector? #f)
|
||||
(un #t 'box? (box 10))
|
||||
|
@ -2590,6 +2592,7 @@
|
|||
(test-pred 'null?)
|
||||
(test-pred 'void?)
|
||||
(test-pred 'symbol?)
|
||||
(test-pred 'keyword?)
|
||||
(test-pred 'string?)
|
||||
(test-pred 'bytes?)
|
||||
(test-pred 'path?)
|
||||
|
|
|
@ -999,6 +999,9 @@ int scheme_generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in
|
|||
} else if (IS_NAMED_PRIM(rator, "symbol?")) {
|
||||
generate_inlined_type_test(jitter, app, scheme_symbol_type, scheme_symbol_type, 0, for_branch, branch_short, need_sync, dest);
|
||||
return 1;
|
||||
} else if (IS_NAMED_PRIM(rator, "keyword?")) {
|
||||
generate_inlined_type_test(jitter, app, scheme_keyword_type, scheme_keyword_type, 0, for_branch, branch_short, need_sync, dest);
|
||||
return 1;
|
||||
} else if (IS_NAMED_PRIM(rator, "syntax?")) {
|
||||
generate_inlined_type_test(jitter, app, scheme_stx_type, scheme_stx_type, 0, for_branch, branch_short, need_sync, dest);
|
||||
return 1;
|
||||
|
|
|
@ -340,7 +340,12 @@ scheme_init_symbol (Scheme_Env *env)
|
|||
GLOBAL_IMMED_PRIM("string->uninterned-symbol", string_to_uninterned_symbol_prim, 1, 1, env);
|
||||
GLOBAL_IMMED_PRIM("string->unreadable-symbol", string_to_unreadable_symbol_prim, 1, 1, env);
|
||||
GLOBAL_IMMED_PRIM("symbol->string", symbol_to_string_prim, 1, 1, env);
|
||||
GLOBAL_FOLDING_PRIM("keyword?", keyword_p_prim, 1, 1, 1, env);
|
||||
|
||||
p = scheme_make_folding_prim(keyword_p_prim, "keyword?", 1, 1, 1);
|
||||
SCHEME_PRIM_PROC_FLAGS(p) |= scheme_intern_prim_opt_flags(SCHEME_PRIM_IS_UNARY_INLINED
|
||||
| SCHEME_PRIM_IS_OMITABLE);
|
||||
scheme_add_global_constant("keyword?", p, env);
|
||||
|
||||
GLOBAL_FOLDING_PRIM("keyword<?", keyword_lt, 2, -1, 1, env);
|
||||
GLOBAL_IMMED_PRIM("string->keyword", string_to_keyword_prim, 1, 1, env);
|
||||
GLOBAL_IMMED_PRIM("keyword->string", keyword_to_string_prim, 1, 1, env);
|
||||
|
|
Loading…
Reference in New Issue
Block a user