aboutsummaryrefslogtreecommitdiff
path: root/src/analyzer.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/analyzer.js')
-rw-r--r--src/analyzer.js5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/analyzer.js b/src/analyzer.js
index 47c7281b..92aa0a8a 100644
--- a/src/analyzer.js
+++ b/src/analyzer.js
@@ -177,7 +177,7 @@ function analyzer(data) {
var soFar = type.flatSize;
var size;
if (isNumberType(field) || isPointerType(field)) {
- size = getNativeFieldSize(field);
+ size = getNativeFieldSize(field, true); // pack char; char; in structs, also char[X]s.
} else if (isStructType(field)) {
size = item.types[field].flatSize;
} else {
@@ -185,8 +185,9 @@ function analyzer(data) {
}
type.flatSize += size;
sizes.push(size);
- return soFar;
+ return Runtime.alignMemory(soFar, Math.min(QUANTUM_SIZE, size)); // if necessary, place this on aligned memory
});
+ type.flatSize = Runtime.alignMemory(type.flatSize); // padding at end
if (dedup(sizes).length == 1) {
type.flatFactor = sizes[0];
}