aboutsummaryrefslogtreecommitdiff
path: root/src/runtime.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime.js')
-rw-r--r--src/runtime.js18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/runtime.js b/src/runtime.js
index 10aab3c9..0b809d6b 100644
--- a/src/runtime.js
+++ b/src/runtime.js
@@ -131,6 +131,24 @@ Runtime = {
}
type.needsFlattening = (type.flatFactor != 1);
return type.flatIndexes;
+ },
+
+ // Given details about a structure, returns its alignment. For example,
+ // generateStructInfo(
+ // [
+ // ['i32', 'field1'],
+ // ['i8', 'field2']
+ // ]
+ // ) will return
+ // { field1: 0, field2: 4 } (depending on QUANTUM_SIZE)
+ generateStructInfo: function(struct) {
+ var fields = struct.map(function(item) { return item[0] });
+ var alignment = Runtime.calculateStructAlignment({ fields: fields });
+ var ret = {};
+ struct.forEach(function(item, i) {
+ ret[item[1]] = alignment[i];
+ });
+ return ret;
}
};