summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-02-15 22:25:47 +0000
committercoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-02-15 22:25:47 +0000
commitbd8e5f2f992892e55f01b1f4258e7752d29db083 (patch)
tree8818d271495c242be1782e07390977617aea7e7b
parent1d311770b545bf6f0610c09dc25e302d4e57c522 (diff)
downloadATCD-bd8e5f2f992892e55f01b1f4258e7752d29db083.tar.gz
ChangeLogTag:Mon Feb 15 16:24:42 1999 Carlos O'Ryan <coryan@cs.wustl.edu>
-rw-r--r--TAO/ChangeLog-99c7
-rw-r--r--TAO/tests/CDR/Makefile270
-rw-r--r--TAO/tests/CDR/allocator.cpp246
3 files changed, 511 insertions, 12 deletions
diff --git a/TAO/ChangeLog-99c b/TAO/ChangeLog-99c
index 0e57b07dfe4..40cae770c30 100644
--- a/TAO/ChangeLog-99c
+++ b/TAO/ChangeLog-99c
@@ -1,3 +1,10 @@
+Mon Feb 15 16:24:42 1999 Carlos O'Ryan <coryan@cs.wustl.edu>
+
+ * tests/CDR/Makefile:
+ * tests/CDR/allocator.cpp:
+ Added a new test to measure the effect of using TSS allocators
+ in the CDR streams.
+
Mon Feb 15 13:26:29 1999 Douglas C. Schmidt <schmidt@cs.wustl.edu>
* TAO version 0.3.4 released.
diff --git a/TAO/tests/CDR/Makefile b/TAO/tests/CDR/Makefile
index d73f3c99f54..4e315cfb17b 100644
--- a/TAO/tests/CDR/Makefile
+++ b/TAO/tests/CDR/Makefile
@@ -20,6 +20,7 @@ PROG_SRCS = \
tc.cpp \
growth.cpp \
octet_sequence.cpp \
+ allocator.cpp
LSRC = $(PROG_SRCS)
@@ -27,8 +28,9 @@ BASIC_TYPES_OBJS = basic_types.o
TC_OBJS = tc.o
GROWTH_OBJS = growth.o
OCTET_SEQUENCE_OBJS = octet_sequence.o
+ALLOCATOR_OBJS = allocator.o
-BIN = basic_types tc growth octet_sequence
+BIN = basic_types tc growth octet_sequence allocator
BUILD = $(BIN)
VLDLIBS = $(LDLIBS:%=%$(VAR))
VBIN = $(BIN:%=%$(VAR))
@@ -59,6 +61,9 @@ growth: $(addprefix $(VDIR),$(GROWTH_OBJS))
octet_sequence: $(addprefix $(VDIR),$(OCTET_SEQUENCE_OBJS))
$(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
+allocator: $(addprefix $(VDIR),$(ALLOCATOR_OBJS))
+ $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
+
clean:
-/bin/rm -rf *.o $(BIN) obj.* core Templates.DB .make.state
@@ -145,10 +150,8 @@ clean:
$(TAO_ROOT)/tao/ORB.i \
$(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/CDR.h \
- $(TAO_ROOT)/tao/Marshal.h \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Typecode.i \
- $(TAO_ROOT)/tao/Marshal.i \
$(TAO_ROOT)/tao/CDR.i \
$(TAO_ROOT)/tao/Any.i \
$(TAO_ROOT)/tao/NVList.h \
@@ -175,6 +178,8 @@ clean:
$(TAO_ROOT)/tao/varout.h \
$(TAO_ROOT)/tao/varout.i \
$(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
$(TAO_ROOT)/tao/singletons.h \
$(ACE_ROOT)/ace/Singleton.h \
$(ACE_ROOT)/ace/Singleton.i \
@@ -301,7 +306,6 @@ clean:
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
$(TAO_ROOT)/tao/Operation_Table.h \
- $(TAO_ROOT)/tao/debug.h \
$(TAO_ROOT)/tao/Client_Strategy_Factory.h \
$(TAO_ROOT)/tao/Server_Strategy_Factory.h \
$(TAO_ROOT)/tao/Invocation.h \
@@ -387,10 +391,8 @@ clean:
$(TAO_ROOT)/tao/ORB.i \
$(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/CDR.h \
- $(TAO_ROOT)/tao/Marshal.h \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Typecode.i \
- $(TAO_ROOT)/tao/Marshal.i \
$(TAO_ROOT)/tao/CDR.i \
$(TAO_ROOT)/tao/Any.i \
$(TAO_ROOT)/tao/NVList.h \
@@ -417,6 +419,8 @@ clean:
$(TAO_ROOT)/tao/varout.h \
$(TAO_ROOT)/tao/varout.i \
$(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
$(TAO_ROOT)/tao/singletons.h \
$(ACE_ROOT)/ace/Singleton.h \
$(ACE_ROOT)/ace/Singleton.i \
@@ -543,7 +547,6 @@ clean:
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
$(TAO_ROOT)/tao/Operation_Table.h \
- $(TAO_ROOT)/tao/debug.h \
$(TAO_ROOT)/tao/Client_Strategy_Factory.h \
$(TAO_ROOT)/tao/Server_Strategy_Factory.h \
$(TAO_ROOT)/tao/Invocation.h \
@@ -633,10 +636,8 @@ clean:
$(TAO_ROOT)/tao/ORB.i \
$(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/CDR.h \
- $(TAO_ROOT)/tao/Marshal.h \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Typecode.i \
- $(TAO_ROOT)/tao/Marshal.i \
$(TAO_ROOT)/tao/CDR.i \
$(TAO_ROOT)/tao/Any.i \
$(TAO_ROOT)/tao/NVList.h \
@@ -663,6 +664,8 @@ clean:
$(TAO_ROOT)/tao/varout.h \
$(TAO_ROOT)/tao/varout.i \
$(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
$(TAO_ROOT)/tao/singletons.h \
$(ACE_ROOT)/ace/Singleton.h \
$(ACE_ROOT)/ace/Singleton.i \
@@ -789,7 +792,6 @@ clean:
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
$(TAO_ROOT)/tao/Operation_Table.h \
- $(TAO_ROOT)/tao/debug.h \
$(TAO_ROOT)/tao/Client_Strategy_Factory.h \
$(TAO_ROOT)/tao/Server_Strategy_Factory.h \
$(TAO_ROOT)/tao/Invocation.h \
@@ -875,10 +877,253 @@ clean:
$(TAO_ROOT)/tao/ORB.i \
$(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/CDR.h \
- $(TAO_ROOT)/tao/Marshal.h \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Marshal.h \
$(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/params.h \
+ $(ACE_ROOT)/ace/INET_Addr.h \
+ $(ACE_ROOT)/ace/Addr.h \
+ $(ACE_ROOT)/ace/Addr.i \
+ $(ACE_ROOT)/ace/INET_Addr.i \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(TAO_ROOT)/tao/IIOP_Connector.h \
+ $(ACE_ROOT)/ace/Connector.h \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.i \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.i \
+ $(ACE_ROOT)/ace/Svc_Handler.cpp \
+ $(ACE_ROOT)/ace/Dynamic.h \
+ $(ACE_ROOT)/ace/Dynamic.i \
+ $(ACE_ROOT)/ace/Connector.i \
+ $(ACE_ROOT)/ace/Connector.cpp \
+ $(ACE_ROOT)/ace/SOCK_Connector.h \
+ $(ACE_ROOT)/ace/SOCK_Stream.h \
+ $(ACE_ROOT)/ace/SOCK_IO.h \
+ $(ACE_ROOT)/ace/SOCK.h \
+ $(ACE_ROOT)/ace/IPC_SAP.h \
+ $(ACE_ROOT)/ace/IPC_SAP.i \
+ $(ACE_ROOT)/ace/SOCK.i \
+ $(ACE_ROOT)/ace/SOCK_IO.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.i \
+ $(ACE_ROOT)/ace/Time_Value.h \
+ $(ACE_ROOT)/ace/SOCK_Connector.i \
+ $(TAO_ROOT)/tao/Connect.h \
+ $(ACE_ROOT)/ace/Acceptor.h \
+ $(ACE_ROOT)/ace/Acceptor.i \
+ $(ACE_ROOT)/ace/Acceptor.cpp \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.i \
+ $(TAO_ROOT)/tao/Connect.i \
+ $(TAO_ROOT)/tao/IIOP_Acceptor.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/Union.h
+.obj/allocator.o .obj/allocator.so .shobj/allocator.o .shobj/allocator.so: allocator.cpp \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/High_Res_Timer.h \
+ $(ACE_ROOT)/ace/High_Res_Timer.i \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
$(TAO_ROOT)/tao/CDR.i \
$(TAO_ROOT)/tao/Any.i \
$(TAO_ROOT)/tao/NVList.h \
@@ -905,6 +1150,8 @@ clean:
$(TAO_ROOT)/tao/varout.h \
$(TAO_ROOT)/tao/varout.i \
$(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
$(TAO_ROOT)/tao/singletons.h \
$(ACE_ROOT)/ace/Singleton.h \
$(ACE_ROOT)/ace/Singleton.i \
@@ -1031,7 +1278,6 @@ clean:
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
$(TAO_ROOT)/tao/Operation_Table.h \
- $(TAO_ROOT)/tao/debug.h \
$(TAO_ROOT)/tao/Client_Strategy_Factory.h \
$(TAO_ROOT)/tao/Server_Strategy_Factory.h \
$(TAO_ROOT)/tao/Invocation.h \
diff --git a/TAO/tests/CDR/allocator.cpp b/TAO/tests/CDR/allocator.cpp
new file mode 100644
index 00000000000..92b2b2d905a
--- /dev/null
+++ b/TAO/tests/CDR/allocator.cpp
@@ -0,0 +1,246 @@
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/tests/CDR
+//
+// = FILENAME
+// allocator.cpp
+//
+// = DESCRIPTION
+// Compares the performance of a TSS allocator, with no locks, to
+// the global allocator (with locks) even in the abscence of
+// contention.
+// The idea behind this test is to measure the predictability of
+// each allocator, specially under the light of potential
+// fragmentation in the main allocator.
+//
+// = AUTHORS
+// Carlos O'Ryan
+//
+// ============================================================================
+
+#include "ace/Get_Opt.h"
+#include "ace/High_Res_Timer.h"
+
+#include "tao/corba.h"
+
+ACE_RCSID(CDR, allocator, "$Id$")
+
+#define DEFAULT_BUFFER_SIZE 512
+
+class Application_Simulator
+{
+ // = DESCRIPTION
+ // Tries to simulate the behavior of an application: it randomly
+ // acquires and releases memory, of variable sizes.
+ // The intention is to produce some level of fragmentation in main
+ // memory.
+
+public:
+ Application_Simulator (int max_fragments,
+ int max_fragment_size);
+ // Constructor, limits the amount of fragmentation and memory this
+ // class takes.
+
+ ~Application_Simulator (void);
+ // Destructor, releases any memory left behind.
+
+ void upcall (ACE_RANDR_TYPE& seed);
+ // Simulate an upcall. The class allocates some memory and then
+ // releases some memory too, the amount of memory allocated and the
+ // number of allocations is random.
+
+private:
+ char** buffers_;
+ // The allocated buffers.
+
+ int max_fragments_;
+ // The size of the <buffers_> array.
+
+ int max_fragment_size_;
+ // The maximum size of any element of <buffers_>
+};
+
+int
+main (int argc, char *argv[])
+{
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv);
+
+ int tss = 0;
+ int iterations = 500;
+ int repeat = 100;
+ int max_fragments = 2048;
+ int max_fragment_size = 1024;
+ int max_arguments = 16;
+ int max_argument_size = 1024;
+ ACE_RANDR_TYPE seed = time(0);
+
+ ACE_Get_Opt get_opt (argc, argv, "tn:f:m:s:a:b:r:");
+ int opt;
+
+ while ((opt = get_opt ()) != EOF)
+ {
+ switch (opt)
+ {
+ case 't':
+ tss = 1;
+ break;
+ case 'n':
+ iterations = ACE_OS::atoi (get_opt.optarg);
+ break;
+ case 'r':
+ repeat = ACE_OS::atoi (get_opt.optarg);
+ break;
+ case 'f':
+ max_fragments = ACE_OS::atoi (get_opt.optarg);
+ break;
+ case 'm':
+ max_fragment_size = ACE_OS::atoi (get_opt.optarg);
+ break;
+ case 's':
+ seed = ACE_OS::atoi (get_opt.optarg);
+ break;
+ case 'a':
+ max_arguments = ACE_OS::atoi (get_opt.optarg);
+ break;
+ case 'b':
+ max_argument_size = ACE_OS::atoi (get_opt.optarg);
+ break;
+ case '?':
+ default:
+ ACE_DEBUG ((LM_DEBUG,
+ "Usage: %s "
+ "-n iterations "
+ "-n repeat "
+ "-f max_fragments "
+ "-m max_fragment_size "
+ "-s seed "
+ "-a max_arguments "
+ "-b max_argument_size "
+ "\n",
+ argv[0]));
+ return -1;
+ }
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "SEED = %d\n", seed));
+
+ ACE_Allocator* buffer_allocator =
+ ACE_Allocator::instance ();
+ ACE_Allocator* dblock_allocator =
+ ACE_Allocator::instance ();
+ if (tss)
+ {
+ buffer_allocator =
+ TAO_ORB_Core_instance ()->output_cdr_buffer_allocator ();
+ dblock_allocator =
+ TAO_ORB_Core_instance ()->output_cdr_dblock_allocator ();
+ }
+
+ Application_Simulator simulator (max_fragments,
+ max_fragment_size);
+ char* argument_buffer;
+ ACE_NEW_RETURN (argument_buffer, char[max_argument_size], 1);
+
+ int* argument_sizes;
+ ACE_NEW_RETURN (argument_sizes, int[max_arguments], 1);
+
+ int n = ACE_OS::rand_r (seed) % max_arguments + 1;
+ for (int k = 0; k < n; ++k)
+ argument_sizes[k] = ACE_OS::rand_r (seed) % max_argument_size + 1;
+
+ for (int i = 0; i < iterations; ++i)
+ {
+ simulator.upcall (seed);
+
+ // @@ TODO this is the place to put the other allocators.
+ ACE_High_Res_Timer cdr_encoding;
+ for (int j = 0; j < repeat; ++j)
+ {
+ cdr_encoding.start_incr ();
+
+ char buffer[DEFAULT_BUFFER_SIZE];
+ ACE_OutputCDR cdr (buffer, sizeof(buffer),
+ TAO_ENCAP_BYTE_ORDER,
+ buffer_allocator,
+ dblock_allocator);
+
+ for (int k = 0; k < n; ++k)
+ {
+ cdr.write_char_array (argument_buffer,
+ argument_sizes[k]);
+ }
+
+ cdr_encoding.stop_incr ();
+ }
+
+ ACE_Time_Value tv;
+ cdr_encoding.elapsed_time_incr (tv);
+ ACE_hrtime_t usecs = tv.sec ();
+ usecs *= ACE_static_cast (ACE_UINT32, ACE_ONE_SECOND_IN_USECS);
+ usecs += tv.usec ();
+ double average = ACE_U64_TO_U32(usecs) / repeat;
+ ACE_OS::printf ("AVE: %d %f\n",
+ i, average);
+
+ }
+ return 0;
+}
+
+Application_Simulator::Application_Simulator (int max_fragments,
+ int max_fragment_size)
+ : max_fragments_ (max_fragments),
+ max_fragment_size_ (max_fragment_size)
+{
+ ACE_NEW (buffers_, char*[this->max_fragments_]);
+ for (char** i = this->buffers_;
+ i != this->buffers_ + this->max_fragments_;
+ ++i)
+ *i = 0;
+}
+
+Application_Simulator::~Application_Simulator (void)
+{
+ for (char** i = this->buffers_;
+ i != this->buffers_ + this->max_fragments_;
+ ++i)
+ {
+ if (*i != 0)
+ {
+ delete[] *i;
+ *i = 0;
+ }
+ }
+ delete[] this->buffers_;
+ this->buffers_ = 0;
+}
+
+void
+Application_Simulator::upcall (ACE_RANDR_TYPE& seed)
+{
+ for (char** i = this->buffers_;
+ i != this->buffers_ + this->max_fragments_;
+ ++i)
+ {
+ if (*i != 0)
+ {
+ if (ACE_OS::rand_r (seed) % 10000 < 5000)
+ {
+ delete[] *i;
+ *i = 0;
+ }
+ }
+ else
+ {
+ if (ACE_OS::rand_r (seed) % 10000 < 5000)
+ {
+ int size = ACE_OS::rand_r (seed) %
+ this->max_fragment_size_ + 1;
+ ACE_NEW (*i, char[size]);
+ }
+ }
+ }
+}