fixed issue with records being size of their reference (8 bytes) not their actual total
This commit is contained in:
@ -182,8 +182,9 @@ TableNode *setRecOffsetInfo(SymbolTable* scope, TableNode *node) {
|
|||||||
largest = 8;
|
largest = 8;
|
||||||
counter++;
|
counter++;
|
||||||
}
|
}
|
||||||
else if((getAdInfoType(this) == TYPE_RECORD) && (node != getTypeEntry(this))){
|
else if((getAdInfoType(this) == TYPE_RECORD)){
|
||||||
offsets[counter] = getRecTotal(getTypeEntry(this));
|
offsets[counter] = 8;
|
||||||
|
printf("hitting record and adding to largest");
|
||||||
total_size = total_size + offsets[counter];
|
total_size = total_size + offsets[counter];
|
||||||
largest = offsets[counter];
|
largest = offsets[counter];
|
||||||
counter++;
|
counter++;
|
||||||
@ -202,7 +203,8 @@ TableNode *setRecOffsetInfo(SymbolTable* scope, TableNode *node) {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
printdebug(
|
printdebug(
|
||||||
"[TYPE CHECK] passed an invalid (first) parameter to a function definition. seeing %d",getAdInfoType(this));
|
"[TYPE CHECK] passed an invalid (first) parameter to a function definition. seeing %d. Type of entry is %s. Name attempted to pass is %s.",getAdInfoType(this),getType(this),getName(this));
|
||||||
|
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
this = getNextEntry(this);
|
this = getNextEntry(this);
|
||||||
@ -237,8 +239,8 @@ TableNode *setRecOffsetInfo(SymbolTable* scope, TableNode *node) {
|
|||||||
counter++;
|
counter++;
|
||||||
this = getNextEntry(this);
|
this = getNextEntry(this);
|
||||||
}
|
}
|
||||||
else if((getAdInfoType(this) == TYPE_RECORD) && (node != getTypeEntry(this))){
|
else if((getAdInfoType(this) == TYPE_RECORD)){
|
||||||
int s = getRecTotal(getTypeEntry(this));
|
int s = 8;
|
||||||
if (s > largest) {
|
if (s > largest) {
|
||||||
largest = s;
|
largest = s;
|
||||||
}
|
}
|
||||||
@ -1365,7 +1367,7 @@ TableNode *getNextEntry(TableNode *tn) {
|
|||||||
// Uses pointers to the table node to print the info
|
// Uses pointers to the table node to print the info
|
||||||
TableNode *printTableNode(TableNode *tn) {
|
TableNode *printTableNode(TableNode *tn) {
|
||||||
if (DEBUG == 0) {
|
if (DEBUG == 0) {
|
||||||
return tn;
|
return tn;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tn == NULL) {
|
if (tn == NULL) {
|
||||||
|
@ -48,6 +48,7 @@ foo (x) := {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bar1(a,b) := {
|
bar1(a,b) := {
|
||||||
|
[integer : t]
|
||||||
return a * b;
|
return a * b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user