Skip to content

Commit

Permalink
Runtime: misc
Browse files Browse the repository at this point in the history
  • Loading branch information
hhugo committed Mar 23, 2018
1 parent ec2c3cc commit 5d1fc96
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 38 deletions.
36 changes: 19 additions & 17 deletions runtime/io.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 ());
Expand All @@ -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;
Expand Down Expand Up @@ -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);
Expand All @@ -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;
Expand Down Expand Up @@ -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];
Expand Down Expand Up @@ -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);
Expand All @@ -369,21 +369,23 @@ 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);
return 0;
}

//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));
Expand Down
10 changes: 5 additions & 5 deletions runtime/marshal.js
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
2 changes: 1 addition & 1 deletion runtime/md5.js
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand Down
19 changes: 4 additions & 15 deletions runtime/mlString.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 5d1fc96

Please sign in to comment.