diff --git a/src/mzscheme/src/fun.c b/src/mzscheme/src/fun.c index 6957578f32..7003aa4493 100644 --- a/src/mzscheme/src/fun.c +++ b/src/mzscheme/src/fun.c @@ -189,11 +189,12 @@ scheme_init_fun (Scheme_Env *env) REGISTER_SO(cached_dv_stx); REGISTER_SO(cached_ds_stx); - scheme_add_global_constant("procedure?", - scheme_make_folding_prim(procedure_p, - "procedure?", - 1, 1, 1), - env); + o = scheme_make_folding_prim(procedure_p, + "procedure?", + 1, 1, 1); + SCHEME_PRIM_PROC_FLAGS(o) |= SCHEME_PRIM_IS_UNARY_INLINED; + scheme_add_global_constant("procedure?", o, env); + scheme_add_global_constant("apply", scheme_make_prim_w_arity2(apply, "apply", diff --git a/src/mzscheme/src/jit.c b/src/mzscheme/src/jit.c index fef0ad2d39..0359becdda 100644 --- a/src/mzscheme/src/jit.c +++ b/src/mzscheme/src/jit.c @@ -2051,6 +2051,18 @@ static int generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in } else if (IS_NAMED_PRIM(rator, "real?")) { generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_complex_izi_type, for_branch, branch_short); return 1; + } else if (IS_NAMED_PRIM(rator, "procedure?")) { + generate_inlined_type_test(jitter, app, scheme_prim_type, scheme_native_closure_type, for_branch, branch_short); + return 1; + } else if (IS_NAMED_PRIM(rator, "vector?")) { + generate_inlined_type_test(jitter, app, scheme_vector_type, scheme_vector_type, for_branch, branch_short); + return 1; + } else if (IS_NAMED_PRIM(rator, "string?")) { + generate_inlined_type_test(jitter, app, scheme_char_string_type, scheme_char_string_type, for_branch, branch_short); + return 1; + } else if (IS_NAMED_PRIM(rator, "bytes?")) { + generate_inlined_type_test(jitter, app, scheme_byte_string_type, scheme_byte_string_type, for_branch, branch_short); + return 1; } else if (IS_NAMED_PRIM(rator, "eof-object?")) { generate_inlined_constant_test(jitter, app, scheme_eof, NULL, for_branch, branch_short); return 1; diff --git a/src/mzscheme/src/string.c b/src/mzscheme/src/string.c index f9664a86d7..f8932eae31 100644 --- a/src/mzscheme/src/string.c +++ b/src/mzscheme/src/string.c @@ -288,6 +288,8 @@ static Scheme_Object *complete_symbol, *continues_symbol, *aborts_symbol, *error void scheme_init_string (Scheme_Env *env) { + Scheme_Object *p; + REGISTER_SO(sys_symbol); sys_symbol = scheme_intern_symbol(SYSTEM_TYPE_NAME); @@ -327,11 +329,10 @@ scheme_init_string (Scheme_Env *env) REGISTER_SO(embedding_banner); REGISTER_SO(current_locale_name); - scheme_add_global_constant("string?", - scheme_make_folding_prim(string_p, - "string?", - 1, 1, 1), - env); + p = scheme_make_folding_prim(string_p, "string?", 1, 1, 1); + SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED; + scheme_add_global_constant("string?", p, env); + scheme_add_global_constant("make-string", scheme_make_noncm_prim(make_string, "make-string", @@ -597,11 +598,10 @@ scheme_init_string (Scheme_Env *env) 1, 1, 1), env); - scheme_add_global_constant("bytes?", - scheme_make_folding_prim(byte_string_p, - "bytes?", - 1, 1, 1), - env); + p = scheme_make_folding_prim(byte_string_p, "bytes?", 1, 1, 1); + SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED; + scheme_add_global_constant("bytes?", p, env); + scheme_add_global_constant("make-bytes", scheme_make_noncm_prim(make_byte_string, "make-bytes", diff --git a/src/mzscheme/src/vector.c b/src/mzscheme/src/vector.c index 9057e1fe31..0f84fa28a9 100644 --- a/src/mzscheme/src/vector.c +++ b/src/mzscheme/src/vector.c @@ -49,11 +49,10 @@ scheme_init_vector (Scheme_Env *env) zero_length_vector->type = scheme_vector_type; SCHEME_VEC_SIZE(zero_length_vector) = 0; - scheme_add_global_constant("vector?", - scheme_make_folding_prim(vector_p, - "vector?", - 1, 1, 1), - env); + p = scheme_make_folding_prim(vector_p, "vector?", 1, 1, 1); + SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED; + scheme_add_global_constant("vector?", p, env); + scheme_add_global_constant("make-vector", scheme_make_noncm_prim(make_vector, "make-vector",