Hi!
Look at this piece. The original code wastes 8 bytes per Record variable
in 64-bits.
Do you see any problem with this change?
----------------
diff --git a/src/jrd/req.h b/src/jrd/req.h
index 8271b3e..7db0f39 100644
--- a/src/jrd/req.h
+++ b/src/jrd/req.h
@@ -161,8 +161,11 @@ public:
const Format* rec_fmt_bk; // backup format to cope with
Borland's ill null signaling
UCHAR rec_flags; // misc record flags
RecordNumber rec_number; // original record_param number - used
for undoing multiple updates
- double rec_dummy; // this is to force next field to a
double boundary
- UCHAR rec_data[1]; // THIS VARIABLE MUST BE ALIGNED ON A
DOUBLE BOUNDARY
+ union
+ {
+ double rec_dummy; // this is to force next field to a
double boundary
+ UCHAR rec_data[1]; // THIS VARIABLE MUST BE ALIGNED ON A
DOUBLE BOUNDARY
+ };
};
// rec_flags
----------------
Also look in ProcedureScan.cpp on the usage of irsb_message.
The VaryingString could be replaced by a UCHAR[], and since the memory
is dynamic allocated, it must be surely aligned even for doubles (then
not needing to add FB_ALIGNMENT).
Adriano
------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security
threats, fraudulent activity, and more. Splunk takes this data and makes
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2dcopy2
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel