Skip to content

Commit fcce8ab

Browse files
committed
[js] Multi cache native refs separately
1 parent 7f05f60 commit fcce8ab

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

src/vm/js/nqp-runtime/multicache.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ const NativeIntArg = nativeArgs.NativeIntArg;
1111
const NativeNumArg = nativeArgs.NativeNumArg;
1212
const NativeStrArg = nativeArgs.NativeStrArg;
1313

14+
const reprs = require('./reprs.js');
15+
1416
class MultiCache {
1517
constructor() {
1618
this.cache = [];
@@ -34,16 +36,20 @@ function posTypes(ctx, capture) {
3436

3537
/* TODO - think if having flags wouldn't be faster/cleaner then weird objects */
3638
if (obj.$$isrwcont()) {
37-
if (deconted.typeObject_) {
38-
if (deconted._STable.typeObjectCachedAsRW === undefined) {
39-
deconted._STable.typeObjectCachedAsRW = {};
40-
}
41-
types[i] = deconted._STable.typeObjectCachedAsRW;
39+
if (obj._STable.REPR instanceof reprs.NativeRef) {
40+
types[i] = obj._STable;
4241
} else {
43-
if (deconted._STable.cachedAsRW === undefined) {
44-
deconted._STable.cachedAsRW = {};
42+
if (deconted.typeObject_) {
43+
if (deconted._STable.typeObjectCachedAsRW === undefined) {
44+
deconted._STable.typeObjectCachedAsRW = {};
45+
}
46+
types[i] = deconted._STable.typeObjectCachedAsRW;
47+
} else {
48+
if (deconted._STable.cachedAsRW === undefined) {
49+
deconted._STable.cachedAsRW = {};
50+
}
51+
types[i] = deconted._STable.cachedAsRW;
4552
}
46-
types[i] = deconted._STable.cachedAsRW;
4753
}
4854
} else {
4955
types[i] = deconted.typeObject_ ? deconted : deconted._STable;

0 commit comments

Comments
 (0)