From d49a1e1fa1f2bceb0dab8daa2a657f8d267a6635 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 8 Jul 2011 19:38:59 -0600 Subject: [PATCH] JIT-inline `path?' --- src/racket/src/file.c | 11 ++++++----- src/racket/src/jitinline.c | 3 +++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/racket/src/file.c b/src/racket/src/file.c index d62f2d827d..457a84c294 100644 --- a/src/racket/src/file.c +++ b/src/racket/src/file.c @@ -251,6 +251,8 @@ SHARED_OK static gid_t egid; void scheme_init_file(Scheme_Env *env) { + Scheme_Object *p; + REGISTER_SO(up_symbol); REGISTER_SO(relative_symbol); REGISTER_SO(same_symbol); @@ -305,11 +307,10 @@ void scheme_init_file(Scheme_Env *env) windows_symbol = scheme_intern_symbol("windows"); unix_symbol = scheme_intern_symbol("unix"); - scheme_add_global_constant("path?", - scheme_make_prim_w_arity(path_p, - "path?", - 1, 1), - env); + p = scheme_make_prim_w_arity(path_p, "path?", 1, 1); + SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED; + scheme_add_global_constant("path?", p, env); + scheme_add_global_constant("path-for-some-system?", scheme_make_folding_prim(general_path_p, "path-for-some-system?", diff --git a/src/racket/src/jitinline.c b/src/racket/src/jitinline.c index 04d3acff41..1c9782e7c7 100644 --- a/src/racket/src/jitinline.c +++ b/src/racket/src/jitinline.c @@ -473,6 +473,9 @@ int scheme_generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in } else if (IS_NAMED_PRIM(rator, "bytes?")) { generate_inlined_type_test(jitter, app, scheme_byte_string_type, scheme_byte_string_type, 0, for_branch, branch_short, need_sync); return 1; + } else if (IS_NAMED_PRIM(rator, "path?")) { + generate_inlined_type_test(jitter, app, SCHEME_PLATFORM_PATH_KIND, SCHEME_PLATFORM_PATH_KIND, 0, for_branch, branch_short, need_sync); + return 1; } else if (IS_NAMED_PRIM(rator, "eof-object?")) { generate_inlined_constant_test(jitter, app, scheme_eof, NULL, for_branch, branch_short, need_sync); return 1;