From f0bf33260a9b29f5f9401f3db4811d3085685ba7 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 6 Aug 2009 20:43:19 +0000 Subject: Revert. --- cpukit/score/src/objectextendinformation.c | 71 +++++++++--------------------- 1 file changed, 22 insertions(+), 49 deletions(-) (limited to 'cpukit/score/src/objectextendinformation.c') diff --git a/cpukit/score/src/objectextendinformation.c b/cpukit/score/src/objectextendinformation.c index 0a3558318f..6718122abf 100644 --- a/cpukit/score/src/objectextendinformation.c +++ b/cpukit/score/src/objectextendinformation.c @@ -53,7 +53,6 @@ void _Objects_Extend_information( uint32_t index_base; uint32_t minimum_index; uint32_t index; - void *new_object_block; /* * Search for a free block of indexes. The block variable ends up set @@ -77,29 +76,6 @@ void _Objects_Extend_information( } } - /* - * Allocate the name table, and the objects and if it fails either return or - * generate a fatal error depending on auto-extending being active. - */ - - new_object_block = - _Workspace_Allocate( - (information->allocation_size * information->size) - ); - - if ( new_object_block == NULL ) { - if ( information->auto_extend ) { - return; - } - else { - _Internal_error_Occurred( - INTERNAL_ERROR_CORE, - true, - INTERNAL_ERROR_WORKSPACE_ALLOCATION - ); - } - } - /* * If the index_base is the maximum we need to grow the tables. */ @@ -136,23 +112,15 @@ void _Objects_Extend_information( block_count++; - maximum = (uint32_t) information->maximum + information->allocation_size; + maximum = information->maximum + information->allocation_size; /* * We need to limit the number of objects to the maximum number * representable in the index portion of the object Id. In the * case of 16-bit Ids, this is only 256 object instances. */ - if ( maximum > OBJECTS_ID_FINAL_INDEX ) { - if ( !_Workspace_Free( new_object_block ) ) { - _Internal_error_Occurred( - INTERNAL_ERROR_CORE, - true, - INTERNAL_ERROR_WORKSPACE_ALLOCATION - ); - } + if ( maximum > OBJECTS_ID_FINAL_INDEX ) return; - } /* * Allocate the tables and break it up. @@ -163,17 +131,9 @@ void _Objects_Extend_information( ((maximum + minimum_index) * sizeof(Objects_Control *)); object_blocks = (void**) _Workspace_Allocate( block_size ); - if ( !object_blocks ) { - if ( !_Workspace_Free( new_object_block ) ) { - _Internal_error_Occurred( - INTERNAL_ERROR_CORE, - true, - INTERNAL_ERROR_WORKSPACE_ALLOCATION - ); - } + if ( !object_blocks ) return; - } - + /* * Break the block into the various sections. */ @@ -237,7 +197,7 @@ void _Objects_Extend_information( information->object_blocks = object_blocks; information->inactive_per_block = inactive_per_block; information->local_table = local_table; - information->maximum = (Objects_Maximum) maximum; + information->maximum = maximum; information->maximum_id = _Objects_Build_id( information->the_api, information->the_class, @@ -254,10 +214,24 @@ void _Objects_Extend_information( } /* - * Assign the new object block to the object block table. + * Allocate the name table, and the objects */ - information->object_blocks[ block ] = new_object_block; + if ( information->auto_extend ) { + information->object_blocks[ block ] = + _Workspace_Allocate( + (information->allocation_size * information->size) + ); + + if ( !information->object_blocks[ block ] ) + return; + } + else { + information->object_blocks[ block ] = + _Workspace_Allocate_or_fatal_error( + (information->allocation_size * information->size) + ); + } /* * Initialize objects .. add to a local chain first. @@ -291,6 +265,5 @@ void _Objects_Extend_information( } information->inactive_per_block[ block ] = information->allocation_size; - information->inactive = - (Objects_Maximum)(information->inactive + information->allocation_size); + information->inactive += information->allocation_size; } -- cgit v1.2.3