diff --git a/runtime/io.js b/runtime/io.js index dba2c2f47d..467a46a751 100644 --- a/runtime/io.js +++ b/runtime/io.js @@ -170,14 +170,14 @@ function caml_ml_close_channel (chanid) { } //Provides: caml_ml_channel_size -//Requires: caml_ml_string_length, caml_ml_channels +//Requires: caml_ml_channels function caml_ml_channel_size(chanid) { var chan = caml_ml_channels[chanid]; return chan.file.length(); } //Provides: caml_ml_channel_size_64 -//Requires: caml_ml_channel_size,caml_int64_of_float,caml_ml_string_length, caml_ml_channels +//Requires: caml_int64_of_float,caml_ml_channels function caml_ml_channel_size_64(chanid) { var chan = caml_ml_channels[chanid]; return caml_int64_of_float(chan.file.length ()); @@ -199,17 +199,17 @@ function caml_ml_set_channel_refill(chanid,f) { } //Provides: caml_ml_refill_input -//Requires: caml_ml_string_length +//Requires: caml_ml_bytes_length function caml_ml_refill_input (chan) { var str = chan.refill(); - var str_len = caml_ml_string_length(str); + var str_len = caml_ml_bytes_length(str); if (str_len == 0) chan.refill = null; chan.file.write(chan.file.length(), str, 0, str_len); return str_len; } //Provides: caml_ml_may_refill_input -//Requires: caml_ml_string_length, caml_ml_refill_input, caml_ml_channels +//Requires: caml_ml_refill_input, caml_ml_channels function caml_ml_may_refill_input (chanid) { var chan = caml_ml_channels[chanid]; if (chan.refill == null) return; @@ -251,7 +251,7 @@ function caml_input_value (chanid) { //Provides: caml_ml_input_char //Requires: caml_raise_end_of_file, caml_array_bound_error -//Requires: caml_ml_string_length, caml_ml_may_refill_input, caml_ml_channels +//Requires: caml_ml_may_refill_input, caml_ml_channels function caml_ml_input_char (chanid) { var chan = caml_ml_channels[chanid]; caml_ml_may_refill_input(chanid); @@ -264,7 +264,7 @@ function caml_ml_input_char (chanid) { //Provides: caml_ml_input_int //Requires: caml_raise_end_of_file -//Requires: caml_ml_string_length, caml_string_unsafe_get, caml_ml_refill_input, caml_ml_channels +//Requires: caml_ml_refill_input, caml_ml_channels function caml_ml_input_int (chanid) { var chan = caml_ml_channels[chanid]; var file = chan.file; @@ -308,7 +308,7 @@ function caml_ml_pos_in(chanid) {return caml_ml_channels[chanid].offset} function caml_ml_pos_in_64(chanid) {return caml_int64_of_float(caml_ml_channels[chanid].offset)} //Provides: caml_ml_input_scan_line -//Requires: caml_array_bound_error, caml_ml_string_length +//Requires: caml_array_bound_error //Requires: caml_ml_may_refill_input, caml_ml_channels function caml_ml_input_scan_line(chanid){ var chan = caml_ml_channels[chanid]; @@ -344,14 +344,14 @@ function caml_ml_flush (chanid) { //output to out_channel -//Provides: caml_ml_output -//Requires: caml_ml_flush,caml_ml_string_length +//Provides: caml_ml_output_bytes +//Requires: caml_ml_flush,caml_ml_bytes_length //Requires: caml_create_bytes, caml_blit_bytes, caml_raise_sys_error, caml_ml_channels -function caml_ml_output (chanid,buffer,offset,len) { +function caml_ml_output_bytes(chanid,buffer,offset,len) { var chan = caml_ml_channels[chanid]; if(! chan.opened) caml_raise_sys_error("Cannot output to a closed channel"); var string; - if(offset == 0 && caml_ml_string_length(buffer) == len) + if(offset == 0 && caml_ml_bytes_length(buffer) == len) string = buffer; else { string = caml_create_bytes(len); @@ -369,13 +369,15 @@ function caml_ml_output (chanid,buffer,offset,len) { return 0; } -//Provides: caml_ml_output_bytes -//Requires: caml_ml_output -var caml_ml_output_bytes = caml_ml_output +//Provides: caml_ml_output +//Requires: caml_ml_output_bytes +function caml_ml_output(chanid,buffer,offset,len){ + return caml_ml_output_bytes(chanid,buffer,offset,len); +} //Provides: caml_ml_output_char //Requires: caml_ml_output -//Requires: caml_new_string, caml_ml_channels +//Requires: caml_new_string function caml_ml_output_char (chanid,c) { var s = caml_new_string(String.fromCharCode(c)); caml_ml_output(chanid,s,0,1); @@ -383,7 +385,7 @@ function caml_ml_output_char (chanid,c) { } //Provides: caml_output_value -//Requires: caml_output_value_to_string, caml_ml_output,caml_ml_string_length, caml_ml_channels +//Requires: caml_output_value_to_string, caml_ml_output,caml_ml_string_length function caml_output_value (chanid,v,_flags) { var s = caml_output_value_to_string(v); caml_ml_output(chanid,s,0,caml_ml_string_length(s)); diff --git a/runtime/marshal.js b/runtime/marshal.js index 8baf1b6880..e351844d07 100644 --- a/runtime/marshal.js +++ b/runtime/marshal.js @@ -317,13 +317,13 @@ function caml_input_value_from_reader(reader, ofs) { } //Provides: caml_marshal_data_size mutable -//Requires: caml_failwith, caml_string_unsafe_get +//Requires: caml_failwith, caml_bytes_unsafe_get function caml_marshal_data_size (s, ofs) { function get32(s,i) { - return (caml_string_unsafe_get(s, i) << 24) | - (caml_string_unsafe_get(s, i + 1) << 16) | - (caml_string_unsafe_get(s, i + 2) << 8) | - caml_string_unsafe_get(s, i + 3); + return (caml_bytes_unsafe_get(s, i) << 24) | + (caml_bytes_unsafe_get(s, i + 1) << 16) | + (caml_bytes_unsafe_get(s, i + 2) << 8) | + caml_bytes_unsafe_get(s, i + 3); } if (get32(s, ofs) != (0x8495A6BE|0)) caml_failwith("Marshal.data_size: bad object"); diff --git a/runtime/md5.js b/runtime/md5.js index db0b5ecf59..70efc750d7 100644 --- a/runtime/md5.js +++ b/runtime/md5.js @@ -19,7 +19,7 @@ //Provides: caml_md5_chan -//Requires: caml_md5_string, caml_string_of_array,caml_ml_string_length, caml_ml_channels +//Requires: caml_md5_string, caml_string_of_array,caml_ml_channels //Requires: caml_raise_end_of_file, caml_create_bytes function caml_md5_chan(chanid,len){ var chan = caml_ml_channels[chanid]; diff --git a/runtime/mlString.js b/runtime/mlString.js index 16ad0fa502..cbab27e3d2 100644 --- a/runtime/mlString.js +++ b/runtime/mlString.js @@ -213,20 +213,9 @@ function caml_bytes_unsafe_get (s, i) { } //Provides: caml_string_unsafe_set -//Requires: caml_convert_string_to_array -function caml_string_unsafe_set (s, i, c) { - // The OCaml compiler uses Char.unsafe_chr on integers larger than 255! - c &= 0xff; - if (s.t != 4 /* ARRAY */) { - if (i == s.c.length) { - s.c += String.fromCharCode (c); - if (i + 1 == s.l) s.t = 0; /*BYTES | UNKOWN*/ - return 0; - } - caml_convert_string_to_array (s); - } - s.c[i] = c; - return 0; +//Requires: caml_bytes_unsafe_set +function caml_string_unsafe_set(s, i, c) { + return caml_bytes_unsafe_set(s, i, c) } //Provides: caml_bytes_unsafe_set @@ -299,7 +288,7 @@ function caml_bytes_get (s, i) { } //Provides: caml_string_set -//Requires: caml_string_bound_error, caml_string_unsafe_set +//Requires: caml_string_unsafe_set function caml_string_set (s, i, c) { if (i >>> 0 >= s.l) caml_string_bound_error(); return caml_string_unsafe_set (s, i, c);