diff --git a/pkgs/base/info.rkt b/pkgs/base/info.rkt index b346d3b4b5..18acdb180a 100644 --- a/pkgs/base/info.rkt +++ b/pkgs/base/info.rkt @@ -12,7 +12,7 @@ (define collection 'multi) -(define version "7.2.0.9") +(define version "7.2.0.10") (define deps `("racket-lib" ["racket" #:version ,version])) diff --git a/pkgs/racket-doc/scribblings/reference/unsafe.scrbl b/pkgs/racket-doc/scribblings/reference/unsafe.scrbl index 77349fca97..ae1f88a1a1 100644 --- a/pkgs/racket-doc/scribblings/reference/unsafe.scrbl +++ b/pkgs/racket-doc/scribblings/reference/unsafe.scrbl @@ -553,6 +553,17 @@ since an index cannot become invalid for an immutable @racket[hash]. @history[#:added "6.4.0.6" #:changed "7.0.0.10" @elem{Added the optional @racket[bad-index-v] argument.}]} +@defproc[(unsafe-make-srcloc [source any/c] + [line (or/c exact-positive-integer? #f)] + [column (or/c exact-nonnegative-integer? #f)] + [position (or/c exact-positive-integer? #f)] + [span (or/c exact-nonnegative-integer? #f)]) + srcloc?]{ + +Unsafe version of @racket[srcloc]. + +@history[#:added "7.2.0.10"]} + @; ------------------------------------------------------------------------ @section[#:tag "unsafeextfl"]{Unsafe Extflonum Operations} diff --git a/racket/src/cs/primitive/kernel.ss b/racket/src/cs/primitive/kernel.ss index 5cebbb29f1..094f780d3b 100644 --- a/racket/src/cs/primitive/kernel.ss +++ b/racket/src/cs/primitive/kernel.ss @@ -767,7 +767,7 @@ [sleep (known-procedure 3)] [split-path (known-procedure 2)] [sqrt (known-procedure 2)] - [srcloc (known-constant)] + [srcloc (known-procedure/has-unsafe 32 'unsafe-make-srcloc)] [srcloc->string (known-procedure 2)] [srcloc-column (known-procedure 2)] [srcloc-line (known-procedure 2)] diff --git a/racket/src/racket/src/schminc.h b/racket/src/racket/src/schminc.h index fac50b9ab3..71c5d9bc65 100644 --- a/racket/src/racket/src/schminc.h +++ b/racket/src/racket/src/schminc.h @@ -14,7 +14,7 @@ #define USE_COMPILED_STARTUP 1 -#define EXPECTED_PRIM_COUNT 1451 +#define EXPECTED_PRIM_COUNT 1452 #ifdef MZSCHEME_SOMETHING_OMITTED # undef USE_COMPILED_STARTUP diff --git a/racket/src/racket/src/schpriv.h b/racket/src/racket/src/schpriv.h index c6142cad41..f392b386f3 100644 --- a/racket/src/racket/src/schpriv.h +++ b/racket/src/racket/src/schpriv.h @@ -3807,6 +3807,7 @@ Scheme_Object *scheme_copy_list(Scheme_Object *l); Scheme_Object *scheme_append_strings(Scheme_Object *s1, Scheme_Object *s2); Scheme_Object *scheme_unsafe_make_location(void); +Scheme_Object *scheme_unsafe_make_srcloc(int argc, Scheme_Object **argv); void scheme_reset_hash_table(Scheme_Hash_Table *ht, int *history); diff --git a/racket/src/racket/src/schvers.h b/racket/src/racket/src/schvers.h index b898153ede..c6798e2013 100644 --- a/racket/src/racket/src/schvers.h +++ b/racket/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "7.2.0.9" +#define MZSCHEME_VERSION "7.2.0.10" #define MZSCHEME_VERSION_X 7 #define MZSCHEME_VERSION_Y 2 #define MZSCHEME_VERSION_Z 0 -#define MZSCHEME_VERSION_W 9 +#define MZSCHEME_VERSION_W 10 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) diff --git a/racket/src/racket/src/struct.c b/racket/src/racket/src/struct.c index b6bff883c4..459d99626d 100644 --- a/racket/src/racket/src/struct.c +++ b/racket/src/racket/src/struct.c @@ -5763,6 +5763,21 @@ Scheme_Object *scheme_unsafe_make_location(void) return (Scheme_Object *)inst; } +Scheme_Object *scheme_unsafe_make_srcloc(int argc, Scheme_Object **argv) +{ + Scheme_Object *srcloc; + + srcloc = scheme_unsafe_make_location(); + + ((Scheme_Structure *)srcloc)->slots[0] = argv[0]; + ((Scheme_Structure *)srcloc)->slots[1] = argv[1]; + ((Scheme_Structure *)srcloc)->slots[2] = argv[2]; + ((Scheme_Structure *)srcloc)->slots[3] = argv[3]; + ((Scheme_Structure *)srcloc)->slots[4] = argv[4]; + + return srcloc; +} + int scheme_is_location(Scheme_Object *o) { if (SCHEME_CHAPERONEP(o)) diff --git a/racket/src/racket/src/thread.c b/racket/src/racket/src/thread.c index d39a57d4ed..c976514d8e 100644 --- a/racket/src/racket/src/thread.c +++ b/racket/src/racket/src/thread.c @@ -692,6 +692,8 @@ scheme_init_unsafe_thread (Scheme_Startup_Env *env) SCHEME_PRIM_PROC_FLAGS(p) |= scheme_intern_prim_opt_flags(SCHEME_PRIM_IS_BINARY_INLINED | SCHEME_PRIM_AD_HOC_OPT); scheme_addto_prim_instance("unsafe-place-local-set!", p, env); + + ADD_PRIM_W_ARITY("unsafe-make-srcloc", scheme_unsafe_make_srcloc, 5, 5, env); } void scheme_init_thread_places(void) {