Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[js] Support associative access on type objects.
  • Loading branch information
pmurias committed Nov 7, 2015
1 parent 19a7c2e commit 02f0f5e
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 8 deletions.
9 changes: 3 additions & 6 deletions src/vm/js/nqp-runtime/deserialization.js
Expand Up @@ -511,14 +511,11 @@ BinaryCursor.prototype.deserialize = function(sc) {
if (objects[i].is_array) {
sc.root_objects[i] = [];
} else {
sc.root_objects[i] = new (STable_for_obj.obj_constructor)();
sc.root_objects[i] = objects[i].is_concrete
? new (STable_for_obj.obj_constructor)()
: STable_for_obj.createTypeObject();
sc.root_objects[i]._SC = sc;
}

if (!objects[i].is_concrete) {
// TODO think more about it
sc.root_objects[i].type_object_ = 1;
}
}

for (var i = 0; i < STables.length; i++) {
Expand Down
4 changes: 2 additions & 2 deletions src/vm/js/nqp-runtime/reprs.js
Expand Up @@ -5,10 +5,10 @@ var NQPInt = require('./nqp-int.js');
function basic_type_object_for(HOW) {
var st = new sixmodel.STable(this, HOW);
this._STable = st;
var obj = new st.obj_constructor();

var obj = st.createTypeObject();
this._STable.WHAT = obj;
obj.type_object_ = 1;

return obj;
}

Expand Down
9 changes: 9 additions & 0 deletions src/vm/js/nqp-runtime/sixmodel.js
Expand Up @@ -67,6 +67,15 @@ function injectMethod(proto, name, method) {
};
}

STable.prototype.createTypeObject = function() {
var obj = new this.obj_constructor();
obj.type_object_ = 1;
obj.$$atkey = function(key) {
return null;
};
return obj;
};

STable.prototype.setMethodCache = function(method_cache) {
// TODO delete old methods
var proto = this.obj_constructor.prototype;
Expand Down

0 comments on commit 02f0f5e

Please sign in to comment.