Places: Fix symbol serialization
This commit is contained in:
parent
de11fd4351
commit
60f0d0b69c
|
@ -165,8 +165,11 @@ Scheme_Object *scheme_place(int argc, Scheme_Object *args[]) {
|
|||
place_data->ready = ready;
|
||||
|
||||
if (argc == 2 || argc == 3 ) {
|
||||
place_data->module = args[0];
|
||||
place_data->function = args[1];
|
||||
Scheme_Object *so;
|
||||
so = scheme_places_deep_copy_in_master(args[0]);
|
||||
place_data->module = so;
|
||||
so = scheme_places_deep_copy_in_master(args[1]);
|
||||
place_data->function = so;
|
||||
place_data->ready = ready;
|
||||
if (argc == 2) {
|
||||
Scheme_Object *channel;
|
||||
|
@ -754,9 +757,13 @@ Scheme_Object *scheme_places_deep_copy_worker(Scheme_Object *so, Scheme_Hash_Tab
|
|||
if (SCHEME_SYM_UNINTERNEDP(so)) {
|
||||
scheme_log_abort("cannot copy uninterned symbol");
|
||||
abort();
|
||||
} else
|
||||
scheme_log_abort("NEED SERIALZATION WORK");
|
||||
new_so = so;
|
||||
} else {
|
||||
new_so = scheme_make_sized_offset_byte_string(SCHEME_SYM_VAL(so), 0, SCHEME_SYM_LEN(so), 1);
|
||||
new_so->type = scheme_serialized_symbol_type;
|
||||
}
|
||||
break;
|
||||
case scheme_serialized_symbol_type:
|
||||
new_so = scheme_intern_exact_symbol(SCHEME_BYTE_STR_VAL(so), SCHEME_BYTE_STRLEN_VAL(so));
|
||||
break;
|
||||
case scheme_pair_type:
|
||||
{
|
||||
|
@ -894,7 +901,7 @@ static void *place_start_proc_after_stack(void *data_arg, void *stack_base) {
|
|||
/* scheme_make_thread behaves differently if the above global vars are not null */
|
||||
scheme_place_instance_init(stack_base);
|
||||
|
||||
a[0] = place_data->current_library_collection_paths;
|
||||
a[0] = scheme_places_deep_copy(place_data->current_library_collection_paths);
|
||||
scheme_current_library_collection_paths(1, a);
|
||||
|
||||
a[0] = scheme_places_deep_copy(place_data->module);
|
||||
|
@ -997,6 +1004,7 @@ Scheme_Object *scheme_place_send(int argc, Scheme_Object *args[]) {
|
|||
|
||||
Scheme_Object *scheme_place_recv(int argc, Scheme_Object *args[]) {
|
||||
if (argc == 1) {
|
||||
Scheme_Object *mso;
|
||||
Scheme_Place_Bi_Channel *ch;
|
||||
if (SAME_TYPE(SCHEME_TYPE(args[0]), scheme_place_type)) {
|
||||
ch = (Scheme_Place_Bi_Channel *) ((Scheme_Place *) args[0])->channel;
|
||||
|
@ -1004,7 +1012,8 @@ Scheme_Object *scheme_place_recv(int argc, Scheme_Object *args[]) {
|
|||
else {
|
||||
ch = (Scheme_Place_Bi_Channel *) args[0];
|
||||
}
|
||||
return scheme_place_async_recv((Scheme_Place_Async_Channel *) ch->recvch);
|
||||
mso = scheme_place_async_recv((Scheme_Place_Async_Channel *) ch->recvch);
|
||||
return scheme_places_deep_copy(mso);
|
||||
}
|
||||
else {
|
||||
scheme_wrong_count_m("place-channel-recv", 1, 2, argc, args, 0);
|
||||
|
|
|
@ -180,80 +180,81 @@ enum {
|
|||
scheme_place_async_channel_type, /* 161 */
|
||||
scheme_place_bi_channel_type, /* 162 */
|
||||
scheme_once_used_type, /* 163 */
|
||||
scheme_serialized_symbol_type, /* 164 */
|
||||
|
||||
#ifdef MZTAG_REQUIRED
|
||||
_scheme_last_normal_type_, /* 164 */
|
||||
_scheme_last_normal_type_, /* 165 */
|
||||
|
||||
scheme_rt_weak_array, /* 165 */
|
||||
scheme_rt_weak_array, /* 166 */
|
||||
|
||||
scheme_rt_comp_env, /* 166 */
|
||||
scheme_rt_constant_binding, /* 167 */
|
||||
scheme_rt_resolve_info, /* 168 */
|
||||
scheme_rt_optimize_info, /* 169 */
|
||||
scheme_rt_compile_info, /* 170 */
|
||||
scheme_rt_cont_mark, /* 171 */
|
||||
scheme_rt_saved_stack, /* 172 */
|
||||
scheme_rt_reply_item, /* 173 */
|
||||
scheme_rt_closure_info, /* 174 */
|
||||
scheme_rt_overflow, /* 175 */
|
||||
scheme_rt_overflow_jmp, /* 176 */
|
||||
scheme_rt_meta_cont, /* 177 */
|
||||
scheme_rt_dyn_wind_cell, /* 178 */
|
||||
scheme_rt_dyn_wind_info, /* 179 */
|
||||
scheme_rt_dyn_wind, /* 180 */
|
||||
scheme_rt_dup_check, /* 181 */
|
||||
scheme_rt_thread_memory, /* 182 */
|
||||
scheme_rt_input_file, /* 183 */
|
||||
scheme_rt_input_fd, /* 184 */
|
||||
scheme_rt_oskit_console_input, /* 185 */
|
||||
scheme_rt_tested_input_file, /* 186 */
|
||||
scheme_rt_tested_output_file, /* 187 */
|
||||
scheme_rt_indexed_string, /* 188 */
|
||||
scheme_rt_output_file, /* 189 */
|
||||
scheme_rt_load_handler_data, /* 190 */
|
||||
scheme_rt_pipe, /* 191 */
|
||||
scheme_rt_beos_process, /* 192 */
|
||||
scheme_rt_system_child, /* 193 */
|
||||
scheme_rt_tcp, /* 194 */
|
||||
scheme_rt_write_data, /* 195 */
|
||||
scheme_rt_tcp_select_info, /* 196 */
|
||||
scheme_rt_param_data, /* 197 */
|
||||
scheme_rt_will, /* 198 */
|
||||
scheme_rt_struct_proc_info, /* 199 */
|
||||
scheme_rt_linker_name, /* 200 */
|
||||
scheme_rt_param_map, /* 201 */
|
||||
scheme_rt_finalization, /* 202 */
|
||||
scheme_rt_finalizations, /* 203 */
|
||||
scheme_rt_cpp_object, /* 204 */
|
||||
scheme_rt_cpp_array_object, /* 205 */
|
||||
scheme_rt_stack_object, /* 206 */
|
||||
scheme_rt_preallocated_object, /* 207 */
|
||||
scheme_thread_hop_type, /* 208 */
|
||||
scheme_rt_srcloc, /* 209 */
|
||||
scheme_rt_evt, /* 210 */
|
||||
scheme_rt_syncing, /* 211 */
|
||||
scheme_rt_comp_prefix, /* 212 */
|
||||
scheme_rt_user_input, /* 213 */
|
||||
scheme_rt_user_output, /* 214 */
|
||||
scheme_rt_compact_port, /* 215 */
|
||||
scheme_rt_read_special_dw, /* 216 */
|
||||
scheme_rt_regwork, /* 217 */
|
||||
scheme_rt_buf_holder, /* 218 */
|
||||
scheme_rt_parameterization, /* 219 */
|
||||
scheme_rt_print_params, /* 220 */
|
||||
scheme_rt_read_params, /* 221 */
|
||||
scheme_rt_native_code, /* 222 */
|
||||
scheme_rt_native_code_plus_case, /* 223 */
|
||||
scheme_rt_jitter_data, /* 224 */
|
||||
scheme_rt_module_exports, /* 225 */
|
||||
scheme_rt_delay_load_info, /* 226 */
|
||||
scheme_rt_marshal_info, /* 227 */
|
||||
scheme_rt_unmarshal_info, /* 228 */
|
||||
scheme_rt_runstack, /* 229 */
|
||||
scheme_rt_sfs_info, /* 230 */
|
||||
scheme_rt_validate_clearing, /* 231 */
|
||||
scheme_rt_rb_node, /* 232 */
|
||||
scheme_rt_frozen_tramp, /* 233 */
|
||||
scheme_rt_comp_env, /* 167 */
|
||||
scheme_rt_constant_binding, /* 168 */
|
||||
scheme_rt_resolve_info, /* 169 */
|
||||
scheme_rt_optimize_info, /* 170 */
|
||||
scheme_rt_compile_info, /* 171 */
|
||||
scheme_rt_cont_mark, /* 172 */
|
||||
scheme_rt_saved_stack, /* 173 */
|
||||
scheme_rt_reply_item, /* 174 */
|
||||
scheme_rt_closure_info, /* 175 */
|
||||
scheme_rt_overflow, /* 176 */
|
||||
scheme_rt_overflow_jmp, /* 177 */
|
||||
scheme_rt_meta_cont, /* 178 */
|
||||
scheme_rt_dyn_wind_cell, /* 179 */
|
||||
scheme_rt_dyn_wind_info, /* 180 */
|
||||
scheme_rt_dyn_wind, /* 181 */
|
||||
scheme_rt_dup_check, /* 182 */
|
||||
scheme_rt_thread_memory, /* 183 */
|
||||
scheme_rt_input_file, /* 184 */
|
||||
scheme_rt_input_fd, /* 185 */
|
||||
scheme_rt_oskit_console_input, /* 186 */
|
||||
scheme_rt_tested_input_file, /* 187 */
|
||||
scheme_rt_tested_output_file, /* 188 */
|
||||
scheme_rt_indexed_string, /* 189 */
|
||||
scheme_rt_output_file, /* 190 */
|
||||
scheme_rt_load_handler_data, /* 191 */
|
||||
scheme_rt_pipe, /* 192 */
|
||||
scheme_rt_beos_process, /* 193 */
|
||||
scheme_rt_system_child, /* 194 */
|
||||
scheme_rt_tcp, /* 195 */
|
||||
scheme_rt_write_data, /* 196 */
|
||||
scheme_rt_tcp_select_info, /* 197 */
|
||||
scheme_rt_param_data, /* 198 */
|
||||
scheme_rt_will, /* 199 */
|
||||
scheme_rt_struct_proc_info, /* 200 */
|
||||
scheme_rt_linker_name, /* 201 */
|
||||
scheme_rt_param_map, /* 202 */
|
||||
scheme_rt_finalization, /* 203 */
|
||||
scheme_rt_finalizations, /* 204 */
|
||||
scheme_rt_cpp_object, /* 205 */
|
||||
scheme_rt_cpp_array_object, /* 206 */
|
||||
scheme_rt_stack_object, /* 207 */
|
||||
scheme_rt_preallocated_object, /* 208 */
|
||||
scheme_thread_hop_type, /* 209 */
|
||||
scheme_rt_srcloc, /* 210 */
|
||||
scheme_rt_evt, /* 211 */
|
||||
scheme_rt_syncing, /* 212 */
|
||||
scheme_rt_comp_prefix, /* 213 */
|
||||
scheme_rt_user_input, /* 214 */
|
||||
scheme_rt_user_output, /* 215 */
|
||||
scheme_rt_compact_port, /* 216 */
|
||||
scheme_rt_read_special_dw, /* 217 */
|
||||
scheme_rt_regwork, /* 218 */
|
||||
scheme_rt_buf_holder, /* 219 */
|
||||
scheme_rt_parameterization, /* 220 */
|
||||
scheme_rt_print_params, /* 221 */
|
||||
scheme_rt_read_params, /* 222 */
|
||||
scheme_rt_native_code, /* 223 */
|
||||
scheme_rt_native_code_plus_case, /* 224 */
|
||||
scheme_rt_jitter_data, /* 225 */
|
||||
scheme_rt_module_exports, /* 226 */
|
||||
scheme_rt_delay_load_info, /* 227 */
|
||||
scheme_rt_marshal_info, /* 228 */
|
||||
scheme_rt_unmarshal_info, /* 229 */
|
||||
scheme_rt_runstack, /* 230 */
|
||||
scheme_rt_sfs_info, /* 231 */
|
||||
scheme_rt_validate_clearing, /* 232 */
|
||||
scheme_rt_rb_node, /* 233 */
|
||||
scheme_rt_frozen_tramp, /* 234 */
|
||||
#endif
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user