aboutsummaryrefslogtreecommitdiff
path: root/src/runtime.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2011-05-14 21:09:37 -0700
committerAlon Zakai <alonzakai@gmail.com>2011-05-14 21:09:37 -0700
commitf66293c6affe4e4c4ddb5ec40dff802dee989094 (patch)
tree1b30939eae7599027c35e215e22dc6d05cc4916c /src/runtime.js
parent9d376d8bde5816e357c702fea6dc463992dab02a (diff)
library stuff
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;
}
};