Emmanuele Bassi 026375b395 datetime: Avoid excessive copies in add_full()
The current implementation of g_date_time_add_full() creates multiple
GDateTime temporary objects and unrefs them immediately; even with the
slice allocator this could result in a performance bottleneck,
especially if the atomic integer operations fall back to slow paths.

We can isolate the components of the add_full() operation and create
internal modifiers that operate on an existing GDateTime; this brings
down the number of GDateTime copies created from six to one.

While at it, the test suite for add_full() should have more checks for
roll-over of months and days.

Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
2010-08-25 23:04:42 +01:00
..
2010-07-12 15:33:05 -04:00
2010-07-12 15:33:05 -04:00
2010-08-08 23:55:11 -04:00
2010-07-07 19:34:35 -04:00
2010-07-10 23:56:45 -04:00
2010-07-07 19:34:35 -04:00
2010-08-08 23:55:11 -04:00
2010-07-07 19:34:35 -04:00
2010-01-30 12:32:37 -05:00
2010-08-03 10:25:54 -04:00
2010-07-10 23:56:45 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2008-06-15 00:03:54 +00:00
2010-07-07 19:34:35 -04:00
2010-06-23 22:32:35 -04:00
2010-08-13 21:11:19 -04:00
2010-08-08 23:55:11 -04:00
2010-07-07 19:34:35 -04:00
2010-08-24 23:41:21 +01:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2009-05-23 17:52:58 +02:00
2010-07-07 19:34:35 -04:00
2009-09-04 22:45:07 +02:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-05-08 21:30:27 -04:00
2010-06-15 16:06:18 +01:00
2010-08-24 23:41:21 +01:00
2010-07-07 19:34:35 -04:00
2010-02-04 00:12:50 +02:00
2010-08-24 23:41:21 +01:00
2010-08-24 22:48:15 +01:00
2010-07-07 19:34:35 -04:00
2010-04-23 15:26:49 +01:00
2010-07-10 23:56:45 -04:00
2010-07-10 23:56:45 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2008-07-28 16:52:15 +00:00
2010-07-12 17:31:03 -04:00
2010-07-07 19:34:35 -04:00
2009-06-27 11:03:47 +03:00
2010-07-07 19:34:35 -04:00
2010-07-08 19:26:25 -04:00
2010-02-21 17:59:15 -05:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-07-10 23:56:45 -04:00
2010-07-07 19:34:35 -04:00
2010-07-08 19:23:42 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-08-16 15:30:04 -04:00
2010-08-08 23:55:11 -04:00
2010-07-07 19:34:35 -04:00
2010-06-23 22:32:35 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-07-12 16:56:52 -04:00
2010-03-30 20:46:46 +03:00
2010-07-12 16:56:52 -04:00
2010-07-07 19:34:35 -04:00
2010-07-12 16:56:52 -04:00
2010-07-12 16:56:52 -04:00
2010-07-13 11:59:16 -04:00
2010-07-07 19:34:35 -04:00
2010-01-28 12:40:46 -05:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2009-11-30 19:53:30 -05:00
2010-07-07 19:34:35 -04:00
2010-06-20 01:14:55 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-07-12 16:56:52 -04:00
2010-07-07 19:34:35 -04:00
2010-02-10 11:35:01 -05:00
2010-07-31 02:07:38 -04:00
2010-07-07 19:34:35 -04:00
2010-08-24 23:41:21 +01:00
2010-07-07 19:34:35 -04:00