* Fixed internalerror 7843 issue

This commit is contained in:
daniel 2003-03-06 11:35:50 +00:00
parent f574af7331
commit 436e47a87d
2 changed files with 18 additions and 7 deletions

View File

@ -818,7 +818,8 @@ implementation
(methodpointer.resulttype.def.deftype=classrefdef) and (methodpointer.resulttype.def.deftype=classrefdef) and
is_class(tclassrefdef(methodpointer.resulttype.def).pointertype.def) then is_class(tclassrefdef(methodpointer.resulttype.def).pointertype.def) then
cg.a_param_const(exprasmlist,OS_INT,1,paramanager.getintparaloc(1)); cg.a_param_const(exprasmlist,OS_INT,1,paramanager.getintparaloc(1));
r.enum:=self_pointer_reg; r.enum:=R_INTREGISTER;
r.number:=NR_SELF_POINTER_REG;
cg.a_param_reg(exprasmlist,OS_ADDR,r,paramanager.getintparaloc(1)); cg.a_param_reg(exprasmlist,OS_ADDR,r,paramanager.getintparaloc(1));
end; end;
end; end;
@ -1314,7 +1315,10 @@ begin
end. end.
{ {
$Log$ $Log$
Revision 1.82 2003-02-19 22:00:15 daniel Revision 1.83 2003-03-06 11:35:50 daniel
* Fixed internalerror 7843 issue
Revision 1.82 2003/02/19 22:00:15 daniel
* Code generator converted to new register notation * Code generator converted to new register notation
- Horribily outdated todo.txt removed - Horribily outdated todo.txt removed

View File

@ -1140,7 +1140,8 @@ implementation
(inlined or (inlined or
(right=nil)) then (right=nil)) then
begin begin
r.enum:=self_pointer_reg; r.enum:=R_INTREGISTER;
r.number:=NR_SELF_POINTER_REG;
cg.a_param_reg(exprasmlist,OS_ADDR,r,paramanager.getintparaloc(1)); cg.a_param_reg(exprasmlist,OS_ADDR,r,paramanager.getintparaloc(1));
reference_reset_base(href,r,0); reference_reset_base(href,r,0);
tmpreg:=cg.get_scratch_reg_address(exprasmlist); tmpreg:=cg.get_scratch_reg_address(exprasmlist);
@ -1372,8 +1373,10 @@ implementation
(methodpointer.nodetype<>typen) then (methodpointer.nodetype<>typen) then
begin begin
objectlibrary.getlabel(constructorfailed); objectlibrary.getlabel(constructorfailed);
r.enum:=self_pointer_reg; r.enum:=R_INTREGISTER;
r2.enum:=accumulator; r.number:=NR_SELF_POINTER_REG;
r2.enum:=R_INTREGISTER;
r2.number:=NR_ACCUMULATOR;
cg.a_cmp_const_reg_label(exprasmlist,OS_ADDR,OC_EQ,0,r,constructorfailed); cg.a_cmp_const_reg_label(exprasmlist,OS_ADDR,OC_EQ,0,r,constructorfailed);
cg.a_param_reg(exprasmlist,OS_ADDR,r2,paramanager.getintparaloc(1)); cg.a_param_reg(exprasmlist,OS_ADDR,r2,paramanager.getintparaloc(1));
reference_reset_base(href,r,0); reference_reset_base(href,r,0);
@ -1400,7 +1403,8 @@ implementation
end; end;
{$ifdef i386} {$ifdef i386}
r.enum:=R_ESP; r.enum:=R_INTREGISTER;
r.number:=NR_ESP;
if pop_size>0 then if pop_size>0 then
emit_const_reg(A_ADD,S_L,pop_size,r); emit_const_reg(A_ADD,S_L,pop_size,r);
{$endif i386} {$endif i386}
@ -1662,7 +1666,10 @@ begin
end. end.
{ {
$Log$ $Log$
Revision 1.39 2003-02-19 22:00:14 daniel Revision 1.40 2003-03-06 11:35:50 daniel
* Fixed internalerror 7843 issue
Revision 1.39 2003/02/19 22:00:14 daniel
* Code generator converted to new register notation * Code generator converted to new register notation
- Horribily outdated todo.txt removed - Horribily outdated todo.txt removed