Skip to content

Commit 55416d4

Browse files
committed
follow up on 4276
1 parent 578c21a commit 55416d4

File tree

3 files changed

+39
-9
lines changed

3 files changed

+39
-9
lines changed

jscomp/runtime/caml_obj.ml

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,20 @@ let caml_lazy_make (fn : _ -> _) =
134134
whose tag is 0, we optimize that case
135135
*)
136136
let caml_update_dummy : _ -> _ -> unit= [%raw{|function(x,y){
137-
for (var k in y){
138-
x[k] = y[k]
139-
}
137+
var k
138+
if(Array.isArray(y)){
139+
for(k = 0; k < y.length ; ++k){
140+
x[k] = y[k]
141+
}
142+
if(y.tag !== undefined){
143+
x.tag = y.tag
144+
}
145+
} else {
146+
for (var k in y){
147+
x[k] = y[k]
148+
}
140149
}
150+
}
141151
|}]
142152

143153
(* Caml_obj_extern.set_length x (Caml_obj_extern.length y) *)

lib/es6/caml_obj.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,20 @@ function caml_lazy_make(fn) {
5555
}
5656

5757
var caml_update_dummy = (function(x,y){
58-
for (var k in y){
59-
x[k] = y[k]
58+
var k
59+
if(Array.isArray(y)){
60+
for(k = 0; k < y.length ; ++k){
61+
x[k] = y[k]
62+
}
63+
if(y.tag !== undefined){
64+
x.tag = y.tag
65+
}
66+
} else {
67+
for (var k in y){
68+
x[k] = y[k]
69+
}
6070
}
61-
});
71+
});
6272

6373
function caml_compare(_a, _b) {
6474
while(true) {

lib/js/caml_obj.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,20 @@ function caml_lazy_make(fn) {
5555
}
5656

5757
var caml_update_dummy = (function(x,y){
58-
for (var k in y){
59-
x[k] = y[k]
58+
var k
59+
if(Array.isArray(y)){
60+
for(k = 0; k < y.length ; ++k){
61+
x[k] = y[k]
62+
}
63+
if(y.tag !== undefined){
64+
x.tag = y.tag
65+
}
66+
} else {
67+
for (var k in y){
68+
x[k] = y[k]
69+
}
6070
}
61-
});
71+
});
6272

6373
function caml_compare(_a, _b) {
6474
while(true) {

0 commit comments

Comments
 (0)