aboutsummaryrefslogtreecommitdiff
path: root/src/parseTools.js
diff options
context:
space:
mode:
authorAlon Zakai <azakai@mozilla.com>2010-12-25 17:18:19 -0800
committerAlon Zakai <azakai@mozilla.com>2010-12-25 17:18:19 -0800
commit2f8f8a72fffffdd2b9f4114c0d7e7d8bc941c1d2 (patch)
treefa50bf720b24980b25a1233d8797d089b5eccd17 /src/parseTools.js
parentb2fd961d06812c0bfcecc19521a040b8c0a06d24 (diff)
clean up getNativeFieldSize
Diffstat (limited to 'src/parseTools.js')
-rw-r--r--src/parseTools.js31
1 files changed, 14 insertions, 17 deletions
diff --git a/src/parseTools.js b/src/parseTools.js
index a5a20939..ac212248 100644
--- a/src/parseTools.js
+++ b/src/parseTools.js
@@ -335,7 +335,7 @@ function parseLLVMFunctionCall(segment) {
assertTrue(['inreg', 'byval'].indexOf(segment[1].text) == -1);
assert(segment[1].text in PARSABLE_LLVM_FUNCTIONS);
while (!segment[2].item) {
- segment.splice(2, 1); // XXX Remove modifiers - should look into them some day
+ segment.splice(2, 1); // Remove modifiers
if (!segment[2]) throw 'Invalid segment!';
}
var ret = {
@@ -452,23 +452,20 @@ function getLabelIds(labels) {
//! @param alone Whether this is inside a structure (so padding is
//! used) or alone (line in char*, where no padding is done).
function getNativeFieldSize(field, alone) {
- var size;
- if (QUANTUM_SIZE > 1) {
- size = {
- 'i1': alone ? 1 : 4, // inside a struct, aligned to 4,
- 'i8': alone ? 1 : 4, // most likely...? XXX
- 'i16': alone ? 2 : 4, // ditto
- 'i32': 4,
- 'i64': 8,
- 'float': 4,
- 'double':8
- }[field]; // XXX 32/64 bit stuff
- if (!size) {
- size = 4; // Must be a pointer XXX 32/64
- }
- } else {
- size = 1;
+ if (QUANTUM_SIZE == 1) return 1;
+ var size = {
+ 'i1': 1,
+ 'i8': 1,
+ 'i16': 2,
+ 'i32': 4,
+ 'i64': 8,
+ 'float': 4,
+ 'double':8
+ }[field];
+ if (!size) {
+ size = QUANTUM_SIZE; // A pointer
}
+ if (!alone) size = Math.max(size, QUANTUM_SIZE);
return size;
}