瀏覽代碼

amunits, arosunits, morphunits: don't pass the calculated object address through a local var in OCLASS, it's not needed really. also allow inlining of the macros. this results in better code generated

git-svn-id: trunk@32703 -
Károly Balogh 9 年之前
父節點
當前提交
c10272d879

+ 4 - 7
packages/amunits/src/coreunits/intuition.pas

@@ -4189,9 +4189,9 @@ PROCEDURE ZipWindow(window : pWindow location 'a0'); syscall _IntuitionBase 504;
 function INST_DATA (cl: pIClass; o: p_Object): Pointer;
 function SIZEOF_INSTANCE (cl: pIClass): Longint;
 function BASEOBJECT (o: p_Object): Pointer;
-function _OBJ(o: p_Object): p_Object;
-function __OBJECT (o: Pointer): p_Object;
-function OCLASS (o: Pointer): pIClass;
+function _OBJ(o: p_Object): p_Object; inline;
+function __OBJECT (o: Pointer): p_Object; inline;
+function OCLASS (o: Pointer): pIClass; inline;
 function SHIFTITEM (n: smallint): word;
 function SHIFTMENU (n: smallint): word;
 function SHIFTSUB (n: smallint): word;
@@ -4243,11 +4243,8 @@ begin
 end;
 
 function OCLASS (o: Pointer): pIClass; inline;
-var
-    obj: p_Object;
 begin
-    obj := p_Object(Longint(o) - sizeof(t_Object));
-    OCLASS := obj^.o_Class;
+    OCLASS := p_Object(o - sizeof(t_Object))^.o_Class;
 end;
 
 function SHIFTITEM (n: smallint): word; inline;

+ 7 - 10
packages/arosunits/src/intuition.pas

@@ -3367,9 +3367,9 @@ function Is_Children(Win: PWindow): Boolean;
 function INST_DATA(Cl: PIClass; O: P_Object): Pointer;
 function SIZEOF_INSTANCE(Cl: PIClass): LongInt;
 function BASEOBJECT(O: P_Object): Pointer;
-function _OBJ(O: Pointer): P_Object;
-function __OBJECT(O: Pointer): P_Object;
-function OCLASS(O: Pointer): PIClass;
+function _OBJ(O: Pointer): P_Object; inline;
+function __OBJECT(O: Pointer): P_Object; inline;
+function OCLASS(O: Pointer): PIClass; inline;
 function SHIFTITEM(N: SmallInt): Word;
 function SHIFTMENU(N: SmallInt): Word;
 function SHIFTSUB(N: SmallInt): Word;
@@ -3567,22 +3567,19 @@ begin
   BASEOBJECT := Pointer(PtrUInt(O) + SizeOf(T_Object));
 end;
 
-function _OBJ(O: Pointer): P_Object;
+function _OBJ(O: Pointer): P_Object; inline;
 begin
  _OBJ := P_Object(O);
 end;
 
-function __OBJECT(O: Pointer): P_Object;
+function __OBJECT(O: Pointer): P_Object; inline;
 begin
   __OBJECT := P_Object(PtrUInt(O) - SizeOf(T_Object))
 end;
 
-function OCLASS(O: Pointer): PIClass;
-var
-  Obj: P_Object;
+function OCLASS(O: Pointer): PIClass; inline;
 begin
-  Obj := P_Object(PtrUInt(O) - SizeOf(T_Object));
-  OCLASS := Obj^.o_Class;
+  OCLASS := P_Object(PtrUInt(O) - SizeOf(T_Object))^.o_Class;
 end;
 
 function SHIFTITEM(N: SmallInt): Word;

+ 5 - 8
packages/morphunits/src/intuition.pas

@@ -4449,9 +4449,9 @@ SysCall IntuitionBase 954;
 function INST_DATA (cl: pIClass; o: p_Object): Pointer;
 function SIZEOF_INSTANCE (cl: pIClass): Longint;
 function BASEOBJECT (o: p_Object): Pointer;
-function _OBJ(o: p_Object): p_Object;
-function __OBJECT (o: Pointer): p_Object;
-function OCLASS (o: Pointer): pIClass;
+function _OBJ(o: p_Object): p_Object; inline;
+function __OBJECT (o: Pointer): p_Object; inline;
+function OCLASS (o: Pointer): pIClass; inline;
 function SHIFTITEM (n: smallint): word;
 function SHIFTMENU (n: smallint): word;
 function SHIFTSUB (n: smallint): word;
@@ -4533,12 +4533,9 @@ begin
     __OBJECT := p_Object(Longint(o) - sizeof(t_Object))
 end;
 
-function OCLASS (o: Pointer): pIClass;
-var
-    obj: p_Object;
+function OCLASS (o: Pointer): pIClass; inline;
 begin
-    obj := p_Object(Longint(o) - sizeof(t_Object));
-    OCLASS := obj^.o_Class;
+  OCLASS := p_Object(o - sizeof(t_Object))^.o_Class;
 end;
 
 function SHIFTITEM (n: smallint): word;