cbc/net/loveruby/cflat/ast
Minero Aoki 355873c1ea * net/loveruby/cflat/parser/Parser.jj: parse sizeof expr.
* net/loveruby/cflat/compiler/Visitor.java: support SizeofTypeNode, SizeofExprNode.
* net/loveruby/cflat/compiler/TypeResolver.java: ditto.
* net/loveruby/cflat/compiler/CodeGenerator.java: ditto.
* net/loveruby/cflat/ast/ASTVisitor.java: ditto.
* net/loveruby/cflat/ast/SizeofTypeNode.java: new file.
* net/loveruby/cflat/ast/SizeofExprNode.java: new file.
* net/loveruby/cflat/type/Type.java: default alignment equals to size, not allocSize (e.g. int[4] should be aligned on 4, not 16).
* net/loveruby/cflat/type/StructType.java: element offset calculation was wrong. Elements should be aligned on its own alignment.
* net/loveruby/cflat/type/StructType.java: size calculation was wrong.  Struct size is align(last-offset, max-element-alignment).
* net/loveruby/cflat/type/UnionType.java: union's alignment equals to element's max alignment.
* net/loveruby/cflat/type/ComplexType.java: cache computed alignment.
* net/loveruby/cflat/type/ArrayType.java: array's alignment equals to elements' alignment.
* net/loveruby/cflat/ast/Slot.java: new method #allocSize, #alignment.
* net/loveruby/cflat/asm/Assembler.java: new method #align (moved from CodeGenerator).
* test


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3999 1b9489fe-b721-0410-924e-b54b9192deb8
2008-09-06 20:10:49 +00:00
..
AST.java * net/loveruby/cflat/asm/Reference.java: new constructor Reference(String) for instance. 2008-02-10 13:33:19 +00:00
ASTVisitor.java * net/loveruby/cflat/parser/Parser.jj: parse sizeof expr. 2008-09-06 20:10:49 +00:00
AbstractAssignNode.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
AddressNode.java * AST class hierarchy grand restruct: remove and unify many operator nodes. 2008-01-05 14:48:18 +00:00
ArefNode.java ArefNode is not a constant address. 2008-08-31 11:07:10 +00:00
AssignNode.java * introduce ExprNode class for all expression nodes. 2008-01-02 11:53:41 +00:00
BinaryOpNode.java * net/loveruby/cflat/ast/UnaryOpNode.java (_dump): show operator. 2008-01-05 17:27:32 +00:00
BlockNode.java * net/loveruby/cflat/ast/LocalScope.java: new subclass of Scope. 2008-02-10 19:26:07 +00:00
BreakNode.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
BreakableStmt.java import cbc from stdcompiler repository (rev185) 2007-12-24 08:19:51 +00:00
CaseNode.java * net/loveruby/cflat/parser/Parser.jj: pass location node to the CaseNode explicitly. 2008-08-31 16:49:26 +00:00
CastNode.java * net/loveruby/cflat/ast/CastNode.java: remove unused method #resolve. 2008-08-31 11:09:14 +00:00
ComplexTypeDefinition.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
CondExprNode.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
ConstantEntry.java import cbc from stdcompiler repository (rev185) 2007-12-24 08:19:51 +00:00
ConstantTable.java * net/loveruby/cflat/ast/Scope.java: use LinkedHashMap to unify entities and entitiesMap (entities should be ordered). 2008-02-10 18:59:21 +00:00
ContinueNode.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
ContinueableStmt.java import cbc from stdcompiler repository (rev185) 2007-12-24 08:19:51 +00:00
Declarations.java * net/loveruby/cflat/ast/Declarations.java: reject duplicated symbols to support duplicated import. 2008-08-31 06:18:26 +00:00
DefinedFunction.java * net/loveruby/cflat/compiler/CodeGenerator.java: lvar overrapped allocation. 2008-08-30 08:36:24 +00:00
DefinedVariable.java * net/loveruby/cflat/ast/Scope.java: ban all allocate* methods, privateEntitiesMap. Use #declareEntity instead. 2008-02-10 18:13:29 +00:00
DereferenceNode.java * AST class hierarchy grand restruct: remove and unify many operator nodes. 2008-01-05 14:48:18 +00:00
DoWhileNode.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
Dumper.java * net/loveruby/cflat/compiler/Compiler.java: use #dumpString. 2008-09-06 17:46:17 +00:00
Entity.java * net/loveruby/cflat/ast/Entity.java (alignment): fetch value from its type. 2008-09-06 14:19:55 +00:00
ExprNode.java * net/loveruby/cflat/compiler/TypeChecker.java: check returning void value. 2008-02-17 19:08:48 +00:00
FixedParams.java * net/loveruby/cflat/type/Type.java: make #isCompatible and #isCastable abstract. 2008-01-12 19:47:28 +00:00
ForNode.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
FuncallNode.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
Function.java * net/loveruby/cflat/ast/Function.java: reduce a warning using Reference. 2008-08-31 10:40:30 +00:00
GotoNode.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
IfNode.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
IntegerLiteralNode.java * net/loveruby/cflat/parser/Parser.jj: unify IntegerLiteralNode and CharacterLiteralNode. 2008-01-13 17:21:25 +00:00
LabelNode.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
LiteralNode.java * net/loveruby/cflat/ast/ExprNode.java: has all LHSNode methods. 2008-01-05 03:52:41 +00:00
LocalScope.java * net/loveruby/cflat/compiler/CodeGenerator.java: lvar overrapped allocation. 2008-08-30 08:36:24 +00:00
Location.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
LogicalAndNode.java * AST class hierarchy grand restruct: remove and unify many operator nodes. 2008-01-05 14:48:18 +00:00
LogicalOrNode.java * AST class hierarchy grand restruct: remove and unify many operator nodes. 2008-01-05 14:48:18 +00:00
LoopNode.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
MemberNode.java * net/loveruby/cflat/ast/MemberNode.java: has always non-constant address. 2008-08-31 10:59:40 +00:00
Node.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
OpAssignNode.java * AST class hierarchy grand restruct: remove and unify many operator nodes. 2008-01-05 14:48:18 +00:00
Parameter.java * net/loveruby/cflat/ast/Parameter.java: simplify dump output. 2008-01-20 15:42:54 +00:00
Params.java * net/loveruby/cflat/type/Type.java: make #isCompatible and #isCastable abstract. 2008-01-12 19:47:28 +00:00
PrefixOpNode.java * net/loveruby/cflat/compiler/TypeChecker.java: transform pointer arithmetic to normal arithmetic (e.g. ptr+7 => ptr+(7*sizeof(*ptr))). 2008-08-31 10:24:40 +00:00
PtrMemberNode.java * net/loveruby/cflat/ast/MemberNode.java: #name -> #member. 2008-01-05 04:24:00 +00:00
ReturnNode.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
Scope.java * net/loveruby/cflat/ast/LocalScope.java: new subclass of Scope. 2008-02-10 19:26:07 +00:00
SizeofExprNode.java * net/loveruby/cflat/parser/Parser.jj: parse sizeof expr. 2008-09-06 20:10:49 +00:00
SizeofTypeNode.java * net/loveruby/cflat/parser/Parser.jj: parse sizeof expr. 2008-09-06 20:10:49 +00:00
Slot.java * net/loveruby/cflat/parser/Parser.jj: parse sizeof expr. 2008-09-06 20:10:49 +00:00
StmtNode.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
StringLiteralNode.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
StructNode.java * net/loveruby/cflat/compiler/TypeResolver.java: extract method #defineTypes again. 2008-02-11 15:46:32 +00:00
SuffixOpNode.java * net/loveruby/cflat/compiler/TypeChecker.java: transform pointer arithmetic to normal arithmetic (e.g. ptr+7 => ptr+(7*sizeof(*ptr))). 2008-08-31 10:24:40 +00:00
SwitchNode.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00
ToplevelScope.java * net/loveruby/cflat/ast/LocalScope.java: new subclass of Scope. 2008-02-10 19:26:07 +00:00
TypeDefinition.java * net/loveruby/cflat/compiler/TypeResolver.java: extract method #defineTypes again. 2008-02-11 15:46:32 +00:00
TypeNode.java * net/loveruby/cflat/compiler/TypeChecker.java: fork DereferenceChecker, to reduce catch(SemanticError). 2008-01-12 19:48:31 +00:00
TypedefNode.java * net/loveruby/cflat/compiler/TypeResolver.java: extract method #defineTypes again. 2008-02-11 15:46:32 +00:00
UnaryArithmeticOpNode.java * net/loveruby/cflat/compiler/TypeChecker.java: transform pointer arithmetic to normal arithmetic (e.g. ptr+7 => ptr+(7*sizeof(*ptr))). 2008-08-31 10:24:40 +00:00
UnaryOpNode.java * net/loveruby/cflat/compiler/TypeChecker.java: implement usual arithmetic conversion for BinaryOpNode. 2008-02-24 14:41:05 +00:00
UndefinedFunction.java * net/loveruby/cflat/ast/Scope.java: ban all allocate* methods, privateEntitiesMap. Use #declareEntity instead. 2008-02-10 18:13:29 +00:00
UndefinedVariable.java * net/loveruby/cflat/ast/UndefinedVariable.java: should always be NOT private. 2008-02-17 17:33:19 +00:00
UnionNode.java * net/loveruby/cflat/compiler/TypeResolver.java: extract method #defineTypes again. 2008-02-11 15:46:32 +00:00
VarParams.java * net/loveruby/cflat/type/Type.java: make #isCompatible and #isCastable abstract. 2008-01-12 19:47:28 +00:00
Variable.java * net/loveruby/cflat/compiler/TypeChecker.java: check returning void value. 2008-02-17 19:08:48 +00:00
VariableNode.java * net/loveruby/cflat/compiler/TypeChecker.java: check returning void value. 2008-02-17 19:08:48 +00:00
WhileNode.java * net/loveruby/cflat/ast/Node.java: all nodes must contain Location. 2008-01-05 01:34:27 +00:00