コード例 #1
0
ファイル: utility.cpp プロジェクト: Abioy/oceanbase
    bool all_zero(const char *buffer, const int64_t size)
    {
      bool bret = true;
      const char *buffer_end = buffer + size;
      const char *start = (char*)upper_align((int64_t)buffer, sizeof(int64_t));
      start = std::min(start, buffer_end);
      const char *end = (char*)lower_align((int64_t)(buffer + size), sizeof(int64_t));
      end = std::max(end, buffer);

      bret = all_zero_small(buffer, start - buffer);
      if (bret)
      {
        bret = all_zero_small(end, buffer + size - end);
      }
      if (bret)
      {
        const char *iter = start;
        while (iter < end)
        {
          if (0 != *((int64_t*)iter))
          {
            bret = false;
            break;
          }
          iter += sizeof(int64_t);
        }
      }
      return bret;
    };
コード例 #2
0
ファイル: debug_allocator.cpp プロジェクト: giucamp/mmemo
	// DebugAllocator::_fill_memory
	void DebugAllocator::_fill_memory( FillMode i_mode, void * i_start_address, size_t i_size )
	{
		switch( i_mode )
		{
		case eNone:			
			break;

		case eNaNs:
		{
			typedef memo_externals::FloatNanIntegerRepresentationType FloatIntType;
			void * start = upper_align( i_start_address, MEMO_ALIGNMENT_OF(uint32_t) );
			void * const end = address_add( i_start_address, i_size );
			void * const aligned_end = lower_align( end, MEMO_ALIGNMENT_OF(uint32_t) );
			uint32_t * dest = static_cast<uint32_t *>( start );
			for( ; dest < aligned_end; dest++ )
			{
				*dest = memo_externals::g_float_nan_integer_representation;
			}
			char * c_dest = reinterpret_cast<char *>( dest );
			for( ; c_dest < end; c_dest++ )
			{
				*c_dest = 'N'; 
			}
			break;
		}

		case ePseudoRandom:
		{
			void * start = upper_align( i_start_address, MEMO_ALIGNMENT_OF(uint32_t) );
			void * const end = address_add( i_start_address, i_size );
			void * const aligned_end = lower_align( end, MEMO_ALIGNMENT_OF(uint32_t) );
			uint32_t * dest = static_cast<uint32_t *>( start );
			uint32_t random = static_cast<uint32_t>( reinterpret_cast<uintptr_t>( dest ) &0xFFFFFFFF );
			for( ; dest < aligned_end; dest++ )
			{
				generate_rand_32( random );
				*dest = random;
			}
			char * c_dest = reinterpret_cast<char *>( dest );
			for( ; c_dest < end; c_dest++ )
			{
				*c_dest = 'D'; 
			}
			break;
		}

		case eBadF00d:
		{
			void * start = upper_align( i_start_address, MEMO_ALIGNMENT_OF(uint32_t) );
			void * const end = address_add( i_start_address, i_size );
			void * const aligned_end = lower_align( end, MEMO_ALIGNMENT_OF(uint32_t) );
			uint32_t * dest = static_cast<uint32_t *>( start );
			for( ; dest < aligned_end; dest++ )
			{
				*dest = 0xBADF00D;
			}
			char * c_dest = reinterpret_cast<char *>( dest );
			for( ; c_dest < end; c_dest++ )
			{
				*c_dest = 'B'; 
			}
			break;
		}

		default:
			MEMO_ASSERT( false ); // unknown value
		}
	}