hot path optimizations in uma_zalloc() & uma_zfree()

Andriy Tkachuk andrit at ukr.net
Thu Jun 30 14:44:40 GMT 2005


I just checked the object code - you right, it almost the same:

-   bucket->ub_bucket[bucket->ub_cnt] = item;
-    22b9: 0f bf 43 08           movswl 0x8(%ebx),%eax
-    22bd: 8b 4d 0c              mov    0xc(%ebp),%ecx
-    22c0: 89 4c 83 0c           mov    %ecx,0xc(%ebx,%eax,4)
-   bucket->ub_cnt++;
-    22c4: 8d 42 01              lea    0x1(%edx),%eax
-    22c7: 66 89 43 08           mov    %ax,0x8(%ebx)
+   bucket->ub_bucket[bucket->ub_cnt++] = item;
+    22b9: 0f bf c2              movswl %dx,%eax
+    22bc: 8b 4d 0c              mov    0xc(%ebp),%ecx
+    22bf: 89 4c 83 0c           mov    %ecx,0xc(%ebx,%eax,4)
+    22c3: 8d 42 01              lea    0x1(%edx),%eax
+    22c6: 66 89 43 08           mov    %ax,0x8(%ebx)

but still there is some minor difference in first line.
I'm not familiar with assembler, can somebody explain
whether this difference is assential or not?


in decrementation there is no difference at all:

-                       bucket->ub_cnt--;
+                       item = bucket->ub_bucket[--bucket->ub_cnt];
     1bbe:      66 ff 49 08             decw   0x8(%ecx)
-                       item = bucket->ub_bucket[bucket->ub_cnt];
     1bc2:      0f bf 41 08             movswl 0x8(%ecx),%eax
     1bc6:      8b 44 81 0c             mov    0xc(%ecx,%eax,4),%eax
     1bca:      89 45 f0                mov    %eax,0xfffffff0(%ebp)


----- Original Message ----- 
From: "Max Laier" <max at love2party.net>
To: <freebsd-hackers at freebsd.org>
Cc: "ant" <andrit at ukr.net>
Sent: Thursday, June 30, 2005 3:15 PM
Subject: Re: hot path optimizations in uma_zalloc() & uma_zfree()

> Another optimization is very trivial, for example:
> -   bucket->ub_cnt--;
> -   item = bucket->ub_bucket[bucket->ub_cnt];
> +   item = bucket->ub_bucket[--bucket->ub_cnt];
> (see the patch)

Might be me, but this doesn't change the generated object code at all (modulo 
the changed __line__ in debugging).





More information about the freebsd-hackers mailing list