diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-02-14 20:05:13 -0500 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-02-14 20:05:13 -0500 |
commit | 96a29d6e19bcd9617de7881d673f31a63e0728d6 (patch) | |
tree | 0de22e8e82c4ee4d213898d87fbad4c34359c9b0 /src | |
parent | 5466df2a6197e700a8e9d2b32e6c61eae7279ea3 (diff) |
handle the case of the initial alloca being a variable one
Diffstat (limited to 'src')
-rw-r--r-- | src/analyzer.js | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/analyzer.js b/src/analyzer.js index 1c643303..54e1ab43 100644 --- a/src/analyzer.js +++ b/src/analyzer.js @@ -1223,8 +1223,7 @@ function analyzer(data, sidePass) { var lines = func.labels[0].lines; for (var i = 0; i < lines.length; i++) { var item = lines[i]; - if (!item.assignTo || item.intertype != 'alloca') break; - assert(isNumber(item.allocatedNum)); + if (!item.assignTo || item.intertype != 'alloca' || !isNumber(item.allocatedNum)) break; item.allocatedSize = func.variables[item.assignTo].impl === VAR_EMULATED ? calcAllocatedSize(item.allocatedType)*item.allocatedNum: 0; if (USE_TYPED_ARRAYS === 2) { @@ -1235,7 +1234,7 @@ function analyzer(data, sidePass) { var index = 0; for (var i = 0; i < lines.length; i++) { var item = lines[i]; - if (!item.assignTo || item.intertype != 'alloca') break; + if (!item.assignTo || item.intertype != 'alloca' || !isNumber(item.allocatedNum)) break; item.allocatedIndex = index; index += item.allocatedSize; delete item.allocatedSize; @@ -1260,7 +1259,7 @@ function analyzer(data, sidePass) { var finishedInitial = false; for (var i = 0; i < lines.length; i++) { var item = lines[i]; - if (!item.assignTo || item.intertype != 'alloca') { + if (!item.assignTo || item.intertype != 'alloca' || !isNumber(item.allocatedNum)) { finishedInitial = true; continue; } |