TEST(MemoryMapping, DoublyMapped) {
  File f = File::temporary();
  // two mappings of the same memory, different addresses.
  MemoryMapping mw(File(f.fd()), 0, sizeof(double), MemoryMapping::writable());
  MemoryMapping mr(File(f.fd()), 0, sizeof(double));

  double* dw = mw.asWritableRange<double>().data();
  const double* dr = mr.asRange<double>().data();

  // Show that it's truly the same value, even though the pointers differ
  EXPECT_NE(dw, dr);
  *dw = 42 * kSomeDouble;
  EXPECT_EQ(*dr, 42 * kSomeDouble);
  *dw = 43 * kSomeDouble;
  EXPECT_EQ(*dr, 43 * kSomeDouble);
}
Exemplo n.º 2
0
std::ofstream& operator<<(std::ofstream& s, const GeneralMatrix& X)
{
	MatrixRow mr((GeneralMatrix*)&X, LoadOnEntry);
	int w = s.width();  int nr = X.Nrows();  ios_format_flags f = s.flags();
	s.setf(ios::fixed, ios::floatfield);
	for (int i=1; i<=nr; i++)
	{
		int skip = mr.skip;  int storage = mr.storage;
		Real* store = mr.data;  skip *= w+1;
		while (skip--) s << " ";
		while (storage--) { s.width(w); s << *store++ << " "; }
		//      while (storage--) s << setw(w) << *store++ << " ";
		mr.Next();  s << ", ";
	}	
	s << flush;  s.flags(f); return s;
}
Exemplo n.º 3
0
void GetSubMatrix::operator<<(const int* r)
{
   REPORT
   Tracer tr("SubMatrix(<<int*)");
   SetUpLHS();
   if (row_skip+row_number > gm->Nrows() || col_skip+col_number > gm->Ncols())
      Throw(SubMatrixDimensionException());
   MatrixRow mr(gm, LoadOnEntry+StoreOnExit+DirectPart, row_skip);
                                  // do need LoadOnEntry
   MatrixRowCol sub; int i = row_number;
   while (i--)
   {
      mr.SubRowCol(sub, col_skip, col_number);   // put values in sub
      sub.Copy(r); mr.Next();
   }
}
Exemplo n.º 4
0
 optional<Value> fetch_optional( const Key& k )
 { try {
    auto key_path = key_to_path(k);
    if( fc::exists( key_to_path ) )
    {
       // memmap, read, return value
       fc::file_mapping fm( key_to_path.c_str(), fc::read_only );
       fc::mapped_region mr( fm, fc::read_only );
       const char* addr = (const char*)mr.get_address();
       size_t s   = mr.get_size();
       datastream<const char*> ds(addr,s);
       Value v;
       fc::raw::unpack( ds, v );
       return v;
    }
    return optional<Value>();
 } FC_CAPTURE_AND_RETHROW( (k) ) }
Exemplo n.º 5
0
void GetSubMatrix::operator=(Real r)
{
   REPORT
   Tracer tr("SubMatrix(=Real)");
   SetUpLHS();
   MatrixRow mr(gm, LoadOnEntry+StoreOnExit+DirectPart, row_skip);
                                  // do need LoadOnEntry
   MatrixRowCol sub; int i = row_number;
   while (i--)
   {
      mr.SubRowCol(sub, col_skip, col_number);   // put values in sub
      sub.Copy(r); mr.Next();
   }
#ifdef TEMPS_DESTROYED_QUICKLY
   delete this;
#endif
}
Exemplo n.º 6
0
void GetSubMatrix::inject(const GeneralMatrix& gmx)
{
   REPORT
   Tracer tr("SubMatrix(inject)");
   SetUpLHS();
   if (row_number != gmx.Nrows() || col_number != gmx.Ncols())
      Throw(IncompatibleDimensionsException());
   MatrixRow mrx((GeneralMatrix*)(&gmx), LoadOnEntry);
   MatrixRow mr(gm, LoadOnEntry+StoreOnExit+DirectPart, row_skip);
                                  // do need LoadOnEntry
   MatrixRowCol sub; int i = row_number;
   while (i--)
   {
      mr.SubRowCol(sub, col_skip, col_number);   // put values in sub
      sub.Inject(mrx); mr.Next(); mrx.Next();
   }
}
Exemplo n.º 7
0
PapxFKPage::PapxFKPage(DataReader& dr)
{
	unsigned char pagedata[512];

	dr.Read(&pagedata, 512);
	m_icrun = pagedata[511];

	MemoryReader vr(pagedata, m_icrun*17+4);
	m_BXMap.Read(vr);

	for (unsigned int i=0; i<m_BXMap.ObjectCount(); i++)
	{
		int iOffset = m_BXMap.ObjectAt(i).iWordPos * 2;
		MemoryReader mr(pagedata + iOffset, 512 - iOffset);
		m_vecPapxs.push_back(PapX(mr, false));
	}
}
Exemplo n.º 8
0
void ASParNewGeneration::reset_survivors_after_shrink() {

  GenCollectedHeap* gch = GenCollectedHeap::heap();
  HeapWord* new_end = (HeapWord*)virtual_space()->high();

  if (from()->end() > to()->end()) {
    assert(new_end >= from()->end(), "Shrinking past from-space");
  } else {
    assert(new_end >= to()->bottom(), "Shrink was too large");
    // Was there a shrink of the survivor space?
    if (new_end < to()->end()) {
      MemRegion mr(to()->bottom(), new_end);
      to()->initialize(mr,
                       SpaceDecorator::DontClear,
                       SpaceDecorator::DontMangle);
    }
  }
}
Exemplo n.º 9
0
    NS_DECL_ISUPPORTS

    NS_IMETHOD Callback(const nsACString &aProcess, const nsACString &aPath,
                        PRInt32 aKind, PRInt32 aUnits, PRInt64 aAmount,
                        const nsACString &aDescription,
                        nsISupports *aWrappedMRs)
    {
        if (aKind == nsIMemoryReporter::KIND_NONHEAP &&
            PromiseFlatCString(aPath).Find("explicit") == 0 &&
            aAmount != PRInt64(-1)) {

            MemoryReportsWrapper *wrappedMRs =
                static_cast<MemoryReportsWrapper *>(aWrappedMRs);
            MemoryReport mr(aPath, aAmount);
            wrappedMRs->mReports->AppendElement(mr);
        }
        return NS_OK;
    }
Exemplo n.º 10
0
static void do_command(char *c)
{
    char *token;

    token = get_token(&c);

    if(strcmp(token, "mr") == 0) mr(get_token(&c), get_token(&c));
    else if(strcmp(token, "mw") == 0) mw(get_token(&c), get_token(&c), get_token(&c));
    else if(strcmp(token, "mc") == 0) mc(get_token(&c), get_token(&c), get_token(&c));
    else if(strcmp(token, "crc") == 0) crc(get_token(&c), get_token(&c));
    else if(strcmp(token, "flushl2") == 0) flush_l2_cache();

#ifdef FLASH_BOOT_ADDRESS
    else if(strcmp(token, "flashboot") == 0) flashboot();
#endif
    else if(strcmp(token, "serialboot") == 0) serialboot();
#ifdef MINIMAC_BASE
    else if(strcmp(token, "netboot") == 0) netboot();
#endif

    else if(strcmp(token, "revision") == 0) printf("%08x\n", MSC_GIT_ID);

    else if(strcmp(token, "help") == 0) help();

    else if(strcmp(token, "rcsr") == 0) rcsr(get_token(&c));
    else if(strcmp(token, "wcsr") == 0) wcsr(get_token(&c), get_token(&c));

#ifdef DFII_BASE
    else if(strcmp(token, "ddrrow") == 0) ddrrow(get_token(&c));
    else if(strcmp(token, "ddrsw") == 0) ddrsw();
    else if(strcmp(token, "ddrhw") == 0) ddrhw();
    else if(strcmp(token, "ddrrd") == 0) ddrrd(get_token(&c));
    else if(strcmp(token, "ddrwr") == 0) ddrwr(get_token(&c));
    else if(strcmp(token, "memtest") == 0) memtest();
    else if(strcmp(token, "ddrinit") == 0) ddrinit();
#endif

    else if(strcmp(token, "dfs") == 0) dfs(get_token(&c));

    else if(strcmp(token, "") != 0)
        printf("Command not found\n");
}
Exemplo n.º 11
0
static void do_command(char *c)
{
	char *token;

	token = get_token(&c);

	if(strcmp(token, "mr") == 0) mr(get_token(&c), get_token(&c));
	else if(strcmp(token, "mw") == 0) mw(get_token(&c), get_token(&c), get_token(&c));
	else if(strcmp(token, "mc") == 0) mc(get_token(&c), get_token(&c), get_token(&c));
	else if(strcmp(token, "crc") == 0) crc(get_token(&c), get_token(&c));
	
	else if(strcmp(token, "serialboot") == 0) serialboot();

	else if(strcmp(token, "reboot") == 0) reboot();
	
	else if(strcmp(token, "help") == 0) help();
	
	else if(strcmp(token, "") != 0)
		printf("Command not found\n");
}
Exemplo n.º 12
0
void Camera::Rotate(float angle,vec3 axis)
{
	mat34 mr(cos(angle),sin(angle),axis);
	nav = mr.MultRot(nav);
	top = mr.MultRot(top);
	left = mr.MultRot(left);

	//для избавления от накапливающейся погрешности
	static int cnt=100;
	cnt--;
	if(!cnt)
	{
		cnt=100;
		nav.normalize();
		left = left.proected_on(nav).normalized();
		top = vec3::vect_mult(left,nav);
	}

	UpdatePos();
}
Exemplo n.º 13
0
    void operator () (int runs, fast_tag) const {
        try {
            static M m (N, N);
            ublas::matrix_range<M> mr (m, ublas::range (0, N), ublas::range (0, N));
            static V v1 (N), v2 (N);
            ublas::vector_range<V> vr1 (v1, ublas::range (0, N)),
                                   vr2 (v2, ublas::range (0, N));
            initialize_vector (vr1);
            initialize_vector (vr2);
            boost::timer t;
            for (int i = 0; i < runs; ++ i) {
                mr.assign (- ublas::outer_prod (vr1, vr2));
//                sink_matrix (mr);
            }
            footer<value_type> () (N * N, N * N, runs, t.elapsed ());
        }
        catch (std::exception &e) {
            std::cout << e.what () << std::endl;
        }
    }
Exemplo n.º 14
0
void GetSubMatrix::operator=(const BaseMatrix& bmx)
{
   REPORT
   Tracer tr("SubMatrix(=)"); GeneralMatrix* gmx = 0;
   // MatrixConversionCheck mcc;         // Check for loss of info
   Try
   {
      SetUpLHS(); gmx = ((BaseMatrix&)bmx).Evaluate();
      if (row_number != gmx->Nrows() || col_number != gmx->Ncols())
         Throw(IncompatibleDimensionsException());
      LoadAndStoreFlag lasf =
         (  row_skip == col_skip
            && gm->Type().IsSymmetric()
            && gmx->Type().IsSymmetric() )
        ? LoadOnEntry+DirectPart
        : LoadOnEntry;
      MatrixRow mrx(gmx, lasf);
      MatrixRow mr(gm, LoadOnEntry+StoreOnExit+DirectPart, row_skip);
                                     // do need LoadOnEntry
      MatrixRowCol sub; int i = row_number;
      while (i--)
      {
         mr.SubRowCol(sub, col_skip, col_number);   // put values in sub
         sub.CopyCheck(mrx); mr.Next(); mrx.Next();
      }
      gmx->tDelete();
#ifdef TEMPS_DESTROYED_QUICKLY
      delete this;
#endif
   }

   CatchAll
   {
      if (gmx) gmx->tDelete();
#ifdef TEMPS_DESTROYED_QUICKLY
      delete this;
#endif
      ReThrow;
   }
}
JNIEXPORT void JNICALL
Java_org_apache_subversion_javahl_SVNRepos_lstxns
(JNIEnv *env, jobject jthis, jobject jpath, jobject jmessageReceiver)
{
  JNIEntry(SVNRepos, lstxns);
  SVNRepos *cl = SVNRepos::getCppObject(jthis);
  if (cl == NULL)
    {
      JNIUtil::throwError(_("bad C++ this"));
      return;
    }

  File path(jpath);
  if (JNIUtil::isExceptionThrown())
    return;

  MessageReceiver mr(jmessageReceiver);
  if (JNIUtil::isExceptionThrown())
    return;

  cl->lstxns(path, mr);
}
Exemplo n.º 16
0
bool Test::test_mazeReader06()
{
	bool isPassed = false;
	std::string testFileName = "maze.txt";
	const int correctRows = 5;
	const int correctCols = 4;
	m_testNum++;
	
	printTestMessage(m_testNum, "MazeReader getStartRow and getStartCol return correct values on valid maze");	

	if(isFileAccessible(testFileName))
	{
		try
		{
			MazeReader mr(testFileName);
			if( (correctRows == mr.getStartRow()) && (correctCols == mr.getStartCol()) )
			{
				isPassed = true;
			}
			else
			{
				std::cerr << "ERROR: expected " << correctRows << " and " << correctCols 
					<< " got " << mr.getStartRow() << " and " << mr.getStartCol() << std::endl;
			}
		}
		catch(...)
		{
			std::cerr << "ERROR: exception thrown with valid file" << std::endl;
		}
	}
	else
	{
		std::cerr << "ERROR " << testFileName << " not accessible. Place in lab folder." << std::endl;		
	}	
	
	printPassFail(isPassed);
	
	return(isPassed);
}
void PSYoungGen::reset_survivors_after_shrink() {
  _reserved = MemRegion((HeapWord*)virtual_space()->low_boundary(),
                        (HeapWord*)virtual_space()->high_boundary());
  PSScavenge::reference_processor()->set_span(_reserved);

  MutableSpace* space_shrinking = NULL;
  if (from_space()->end() > to_space()->end()) {
    space_shrinking = from_space();
  } else {
    space_shrinking = to_space();
  }

  HeapWord* new_end = (HeapWord*)virtual_space()->high();
  assert(new_end >= space_shrinking->bottom(), "Shrink was too large");
  // Was there a shrink of the survivor space?
  if (new_end < space_shrinking->end()) {
    MemRegion mr(space_shrinking->bottom(), new_end);
    space_shrinking->initialize(mr,
                                SpaceDecorator::DontClear,
                                SpaceDecorator::Mangle);
  }
}
Exemplo n.º 18
0
void GetSubMatrix::operator*=(Real r)
{
   REPORT
   Tracer tr("SubMatrix(*= or /= Real)");
   // MatrixConversionCheck mcc;         // Check for loss of info
   Try
   {
      SetUpLHS();
      MatrixRow mr(gm, LoadOnEntry+StoreOnExit+DirectPart, row_skip);
                                     // do need LoadOnEntry
      MatrixRowCol sub; int i = row_number;
      while (i--)
      {
         mr.SubRowCol(sub, col_skip, col_number);   // put values in sub
         sub.Multiply(r); mr.Next();
      }
   }

   CatchAll
   {
      ReThrow;
   }
}
Exemplo n.º 19
0
    void operator () (int runs, safe_tag) const {
        try {
            static M m (N, N);
            ublas::matrix_range<M> mr (m, ublas::range (0, N), ublas::range (0, N));
            static V v1 (N), v2 (N);
            ublas::vector_range<V> vr1 (v1, ublas::range (0, N)),
                                   vr2 (v2, ublas::range (0, N));
            initialize_matrix (mr);
            initialize_vector (vr1);
            boost::timer t;
            for (int i = 0; i < runs; ++ i) {
                vr2 = ublas::prod (mr, vr1);
//                sink_vector (vr2);
            }
            footer<value_type> () (N * N, N * (N - 1), runs, t.elapsed ());
        }
        catch (std::exception &e) {
            std::cout << e.what () << std::endl;
        }
        catch (...) {
            std::cout << "unknown exception" << std::endl;
        }
    }
Exemplo n.º 20
0
      void
      MinimalTIFFWriter::setId(const boost::filesystem::path& id)
      {
        FormatWriter::setId(id);

        std::string flags("w");

        // Get expected size of pixel data.
        ome::compat::shared_ptr<const ::ome::xml::meta::MetadataRetrieve> mr(getMetadataRetrieve());
        storage_size_type pixelSize = significantPixelSize(*mr);

        if (enableBigTIFF(bigTIFF, pixelSize, *currentId, logger))
          flags += '8';


        tiff = TIFF::open(id, flags);
        ifd = tiff->getCurrentDirectory();
        setupIFD();

        // Create IFD mapping from metadata.
        MetadataRetrieve::index_type imageCount = metadataRetrieve->getImageCount();
        dimension_size_type currentIFD = 0U;
        for (MetadataRetrieve::index_type i = 0;
             i < imageCount;
             ++i)
          {
            dimension_size_type planeCount = getImageCount();

            tiff::IFDRange range;
            range.filename = *currentId;
            range.begin = currentIFD;
            range.end = currentIFD + planeCount;

            seriesIFDRange.push_back(range);
            currentIFD += planeCount;
          }
      }
Exemplo n.º 21
0
void Hold::SetupIKConstraint(const Vector3& localPos0, const Vector3& rot) 
{
  ikConstraint.link = link;
  Assert(!contacts.empty());

  ikConstraint.localPosition = localPos0;
  ikConstraint.SetFixedPosition(contacts[0].x);

  //any rotation constraints?
  if(contacts.size()==1) {  //point contact
    ikConstraint.SetFreeRotation();
    ikConstraint.endRotation = rot;
  }
  else if(contacts.size()==2) {  //line contact
    //cout<<"Setting edge rotation example moment "<<rot<<endl;
    Vector3 axis = contacts[1].x-contacts[0].x;
    if(axis.normSquared()==0) { //degenerate, point contact
      //cout<<"Warning: degenerate point contact"<<endl;
      ikConstraint.SetFreeRotation();
      ikConstraint.endRotation = rot;
      return;
    }
    MomentRotation mr(rot);
    Matrix3 R;
    mr.getMatrix(R);
    R.inplaceTranspose();

    axis.inplaceNormalize();
    //cout<<"world-space rotation axis: "<<axis<<endl;
    //cout<<"local-space rotation axis: "<<R*axis<<endl;
    ikConstraint.SetAxisRotation(R*axis,axis);
  }
  else {  //plane contact
    ikConstraint.SetFixedRotation(rot);
  }
}
Exemplo n.º 22
0
bool OneContigSpaceCardGeneration::grow_by(size_t bytes) {
    assert_locked_or_safepoint(ExpandHeap_lock);
    bool result = _virtual_space.expand_by(bytes);
    if (result) {
        size_t new_word_size =
            heap_word_size(_virtual_space.committed_size());
        MemRegion mr(_the_space->bottom(), new_word_size);
        // Expand card table
        Universe::heap()->barrier_set()->resize_covered_region(mr);
        // Expand shared block offset array
        _bts->resize(new_word_size);

        // Fix for bug #4668531
        if (ZapUnusedHeapArea) {
            MemRegion mangle_region(_the_space->end(),
                                    (HeapWord*)_virtual_space.high());
            SpaceMangler::mangle_region(mangle_region);
        }

        // Expand space -- also expands space's BOT
        // (which uses (part of) shared array above)
        _the_space->set_end((HeapWord*)_virtual_space.high());

        // update the space and generation capacity counters
        update_counters();

        if (Verbose && PrintGC) {
            size_t new_mem_size = _virtual_space.committed_size();
            size_t old_mem_size = new_mem_size - bytes;
            gclog_or_tty->print_cr("Expanding %s from " SIZE_FORMAT "K by "
                                   SIZE_FORMAT "K to " SIZE_FORMAT "K",
                                   name(), old_mem_size/K, bytes/K, new_mem_size/K);
        }
    }
    return result;
}
Exemplo n.º 23
0
void	mime_test()
{
	{
		mime_part m1( "text", "plain" );
		m1.add_content_type_param( "charset", "utf-8" );
		m1.add_header( "Content-Transfer-Encoding", "7bit" );
		m1.set_body( "body." );

		std::string data = m1.get();
		printf( "%s\ndone.\n", data.c_str() );
	}

	{
		mime_part mr( "multipart", "mixed" );
		mime_part m0( "multipart", "mixed" );
		mr.append_part( &m0 );

		mime_part m1( "text", "plain" );
		m1.add_content_type_param( "charset", "utf-8" );
		m1.add_header( "Content-Transfer-Encoding", "7bit" );
		m1.set_body( "body." );

		mime_part m2( "application", "x-msdownload" );
		m2.add_content_type_param( "name", "abcd.data" );
		m2.add_header( "Content-Transfer-Encoding", "base64" );
		m2.add_header( "Content-Disposition", "attachment" );
		m2.add_content_type_param( "filename", "abcd.data" );
		m2.set_body( "lalajsdflajdlfkjadlkfjaldkfjladjflakdjflakdjflakjdflajdsflajdlfkajdlfkjaldkfjalkdjflakdjsflkasdjflasd" );

		m0.append_part( &m1 );
		m0.append_part( &m2 );

		std::string data = mr.get();
		printf( "\n%s\ndone.\n", data.c_str() );
	}
}
Exemplo n.º 24
0
static void do_command(char *c)
{
	char *token;

	token = get_token(&c);

	if(strcmp(token, "cons") == 0) vga_set_console(!vga_get_console());
	else if(strcmp(token, "flush") == 0) flush_bridge_cache();
	else if(strcmp(token, "mr") == 0) mr(get_token(&c), get_token(&c));
	else if(strcmp(token, "mw") == 0) mw(get_token(&c), get_token(&c), get_token(&c));
	else if(strcmp(token, "mc") == 0) mc(get_token(&c), get_token(&c), get_token(&c));
	else if(strcmp(token, "crc") == 0) crc(get_token(&c), get_token(&c));

	else if(strcmp(token, "ls") == 0) ls(get_token(&c));
	else if(strcmp(token, "load") == 0) load(get_token(&c), get_token(&c), get_token(&c));

	else if(strcmp(token, "netboot") == 0) netboot();
	else if(strcmp(token, "serialboot") == 0) serialboot();
	else if(strcmp(token, "fsboot") == 0) fsboot(BLOCKDEV_MEMORY_CARD);
	else if(strcmp(token, "flashboot") == 0) flashboot();

	else if(strcmp(token, "mdior") == 0) mdior(get_token(&c));
	else if(strcmp(token, "mdiow") == 0) mdiow(get_token(&c), get_token(&c));

	else if(strcmp(token, "version") == 0) puts(VERSION);
	else if(strcmp(token, "reboot") == 0) reboot();
	else if(strcmp(token, "reconf") == 0) reconf();

	else if(strcmp(token, "help") == 0) help();

	else if(strcmp(token, "rcsr") == 0) rcsr(get_token(&c));
	else if(strcmp(token, "wcsr") == 0) wcsr(get_token(&c), get_token(&c));

	else if(strcmp(token, "") != 0)
		printf("Command not found\n");
}
Exemplo n.º 25
0
	bool Model::load( unsigned char * _buffer, size_t _size )
	{
		size_t read = 0;
		stdex::memory_reader mr( _buffer, _size, read );

		mr << m_frameCount;
		mr << m_vertexCount;
		mr << m_indicesCount;

		mr << m_frameDelay;

		mr << m_cameraFOV;
		mr << m_cameraWidth;
		mr << m_cameraHeight;

		m_model3DFrames = new Model3DFrame[ m_frameCount ];

		for( uint32_t i = 0; i != m_frameCount; ++i )
		{
			Model3DFrame & frame = m_model3DFrames[ i ];
						
			mr << frame.cameraRight;
			mr << frame.cameraUp;
			mr << frame.cameraDir;
			mr << frame.cameraPos;

			frame.pos = new mt::vec3f[m_vertexCount];
			frame.uv = new mt::vec2f[m_vertexCount];
			frame.indecies = new uint16_t[m_indicesCount];

			mr.readPODs( frame.pos, m_vertexCount );
			mr.readPODs( frame.uv, m_vertexCount );
			mr.readPODs( frame.indecies, m_indicesCount );
		}

		uint16_t width;
		uint16_t height;
		mr << width;
		mr << height;

		if( width != 0 && height != 0 )
		{
			if( isTexturePOW2( width ) == false || isTexturePOW2( height ) == false )
			{
				//_logger.message( "Model::load invalid texture POW2 %d:%d please set texture %d:%d"
				//	, width
				//	, height
				//	, getTexturePOW2( width )
				//	, getTexturePOW2( height )
				//	);

				return false;
			}

			LPDIRECT3DTEXTURE9 texture = NULL;
			if( m_pDevice->CreateTexture( width, height, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &texture, NULL ) != D3D_OK )
			{
				//_logger.message( "Model::load invalid create texture %d:%d"
				//	, width
				//	, height
				//	);

				return false;
			}

			D3DLOCKED_RECT lockedRect;
			DXCALL texture->LockRect( 0, &lockedRect, NULL, 0 );

			if( lockedRect.pBits == NULL || lockedRect.Pitch == 0 )
			{
				//_logger.message( "Model::load invalid lock texture %d:%d"
				//	, width
				//	, height
				//	);

				return false;
			}

			for( uint16_t i = 0; i != height; ++i )
			{
				unsigned char * bits = static_cast<unsigned char *>(lockedRect.pBits) + lockedRect.Pitch * i;

				mr.readPODs( bits, width * 4 );
			}

			DXCALL texture->UnlockRect( 0 );

			m_pTexture = texture;
		}
		else
		{
			m_pTexture = NULL;
		}

		return true;
	}
Exemplo n.º 26
0
void CFAProxy::ListDrives()
{
	CListDrivesMR::TCallback f = boost::bind( &CFAManager::cmListDrives , m_pManager , _1 ,_2 );
	CScheduler::TMethod mr( CScheduler::TMethod( new CListDrivesMR( m_pFAClient ,f ) ) );
	m_scheduler.AddMethod( mr );
}
Exemplo n.º 27
0
  address generate_call_stub(address& return_address)
  {
    assert (!TaggedStackInterpreter, "not supported");
    
    StubCodeMark mark(this, "StubRoutines", "call_stub");
    address start = __ enter();

    const Register call_wrapper    = r3;
    const Register result          = r4;
    const Register result_type     = r5;
    const Register method          = r6;
    const Register entry_point     = r7;
    const Register parameters      = r8;
    const Register parameter_words = r9;
    const Register thread          = r10;

#ifdef ASSERT
    // Make sure we have no pending exceptions
    {
      StackFrame frame;
      Label label;

      __ load (r0, Address(thread, Thread::pending_exception_offset()));
      __ compare (r0, 0);
      __ beq (label);
      __ prolog (frame);
      __ should_not_reach_here (__FILE__, __LINE__);
      __ epilog (frame);
      __ blr ();
      __ bind (label);
    }
#endif // ASSERT

    // Calculate the frame size
    StackFrame frame;
    for (int i = 0; i < StackFrame::max_crfs; i++)
      frame.get_cr_field();
    for (int i = 0; i < StackFrame::max_gprs; i++)
      frame.get_register();
    StubRoutines::set_call_stub_base_size(frame.unaligned_size() + 3*wordSize);
    // the 3 extra words are for call_wrapper, result and result_type

    const Register parameter_bytes = parameter_words;

    __ shift_left (parameter_bytes, parameter_words, LogBytesPerWord);    

    const Register frame_size = r11;
    const Register padding    = r12;

    __ addi (frame_size, parameter_bytes, StubRoutines::call_stub_base_size());
    __ calc_padding_for_alignment (padding, frame_size, StackAlignmentInBytes);
    __ add (frame_size, frame_size, padding);

    // Save the link register and create the new frame
    __ mflr (r0);
    __ store (r0, Address(r1, StackFrame::lr_save_offset * wordSize));
    __ neg (r0, frame_size);
    __ store_update_indexed (r1, r1, r0);
#ifdef PPC64
    __ mfcr (r0);
    __ store (r0, Address(r1, StackFrame::cr_save_offset * wordSize));
#endif // PPC64

    // Calculate the address of the interpreter's local variables
    const Register locals = frame_size;

    __ addi (locals, r1, frame.start_of_locals() - wordSize);
    __ add (locals, locals, padding);
    __ add (locals, locals, parameter_bytes);

    // Store the call wrapper address and the result stuff
    const int initial_offset = 1;
    int offset = initial_offset;

    __ store (call_wrapper, Address(locals, offset++ * wordSize));
    __ store (result,       Address(locals, offset++ * wordSize));
    __ store (result_type,  Address(locals, offset++ * wordSize));

    // Store the registers
#ifdef PPC32
    __ mfcr (r0);
    __ store (r0, Address(locals, offset++ * wordSize));
#endif // PPC32
    for (int i = 14; i < 32; i++) {
      __ store (as_Register(i), Address(locals, offset++ * wordSize));
    }
    const int final_offset = offset;

    // Store the location of call_wrapper
    frame::set_call_wrapper_offset((final_offset - initial_offset) * wordSize);

#ifdef ASSERT
    // Check that we wrote all the way to the end of the frame.
    // The frame may have been resized when we return from the
    // interpreter, so the start of the frame may have moved
    // but the end will be where we left it and we rely on this
    // to find our stuff.
    {
      StackFrame frame;
      Label label;

      __ load (r3, Address(r1, 0));
      __ subi (r3, r3, final_offset * wordSize);
      __ compare (r3, locals);
      __ beq (label);
      __ prolog (frame);
      __ should_not_reach_here (__FILE__, __LINE__);
      __ epilog (frame);
      __ blr ();
      __ bind (label);
    }
#endif // ASSERT

    // Pass parameters if any
    {
      Label loop, done;

      __ compare (parameter_bytes, 0);
      __ ble (done);

      const Register src = parameters;
      const Register dst = padding;

      __ mr (dst, locals);
      __ shift_right (r0, parameter_bytes, LogBytesPerWord);      
      __ mtctr (r0);
      __ bind (loop);
      __ load (r0, Address(src, 0));
      __ store (r0, Address(dst, 0));
      __ addi (src, src, wordSize);
      __ subi (dst, dst, wordSize);
      __ bdnz (loop);

      __ bind (done);
    }

    // Make the call
    __ mr (Rmethod, method);
    __ mr (Rlocals, locals);
    __ mr (Rthread, thread);
    __ mtctr (entry_point);
    __ bctrl();

    // This is used to identify call_stub stack frames
    return_address = __ pc();

    // Figure out where our stuff is stored
    __ load (locals, Address(r1, 0));
    __ subi (locals, locals, final_offset * wordSize);

#ifdef ASSERT
    // Rlocals should contain the address we just calculated.
    {
      StackFrame frame;
      Label label;

      __ compare (Rlocals, locals);
      __ beq (label);
      __ prolog (frame);
      __ should_not_reach_here (__FILE__, __LINE__);
      __ epilog (frame);
      __ blr ();
      __ bind (label);
    }
#endif // ASSERT
 
    // Is an exception being thrown?
    Label exit;

    __ load (r0, Address(Rthread, Thread::pending_exception_offset()));
    __ compare (r0, 0);
    __ bne (exit);

    // Store result depending on type
    const Register result_addr = r6;

    Label is_int, is_long, is_object;

    offset = initial_offset + 1; // skip call_wrapper
    __ load (result_addr, Address(locals, offset++ * wordSize));
    __ load (result_type, Address(locals, offset++ * wordSize));
    __ compare (result_type, T_INT);
    __ beq (is_int);
    __ compare (result_type, T_LONG);
    __ beq (is_long);
    __ compare (result_type, T_OBJECT);
    __ beq (is_object);
    
    __ should_not_reach_here (__FILE__, __LINE__);

    __ bind (is_int);
    __ stw (r3, Address(result_addr, 0));
    __ b (exit);
    
    __ bind (is_long);
#ifdef PPC32
    __ store (r4, Address(result_addr, wordSize));
#endif
    __ store (r3, Address(result_addr, 0));
    __ b (exit);
    
    __ bind (is_object);
    __ store (r3, Address(result_addr, 0));
    //__ b (exit);

    // Restore the registers
    __ bind (exit);
#ifdef PPC32
    __ load (r0, Address(locals, offset++ * wordSize));
    __ mtcr (r0);
#endif // PPC32
    for (int i = 14; i < 32; i++) {
      __ load (as_Register(i), Address(locals, offset++ * wordSize));
    }
#ifdef PPC64
    __ load (r0, Address(r1, StackFrame::cr_save_offset * wordSize));
    __ mtcr (r0);
#endif // PPC64
    assert (offset == final_offset, "save and restore must match");

    // Unwind and return
    __ load (r1, Address(r1, StackFrame::back_chain_offset * wordSize));
    __ load (r0, Address(r1, StackFrame::lr_save_offset * wordSize));
    __ mtlr (r0);
    __ blr ();
    
    return start;
  }
Exemplo n.º 28
0
// Code generation
address MethodHandles::generate_method_handle_interpreter_entry(MacroAssembler* _masm,
                                                                vmIntrinsics::ID iid) {
  const bool not_for_compiler_entry = false;  // this is the interpreter entry
  assert(is_signature_polymorphic(iid), "expected invoke iid");
  if (iid == vmIntrinsics::_invokeGeneric ||
      iid == vmIntrinsics::_compiledLambdaForm) {
    // Perhaps surprisingly, the symbolic references visible to Java are not directly used.
    // They are linked to Java-generated adapters via MethodHandleNatives.linkMethod.
    // They all allow an appendix argument.
    __ stop("Should not reach here");           // empty stubs make SG sick
    return NULL;
  }

  Register argbase    = CC_INTERP_ONLY(R17_tos) NOT_CC_INTERP(R15_esp); // parameter (preserved)
  Register argslot    = R3;
  Register temp1      = R6;
  Register param_size = R7;

  // here's where control starts out:
  __ align(CodeEntryAlignment);
  address entry_point = __ pc();

  if (VerifyMethodHandles) {
    Label L;
    BLOCK_COMMENT("verify_intrinsic_id {");
    __ load_sized_value(temp1, Method::intrinsic_id_offset_in_bytes(), R19_method,
                        sizeof(u1), /*is_signed*/ false);
    // assert(sizeof(u1) == sizeof(Method::_intrinsic_id), "");
    __ cmpwi(CCR1, temp1, (int) iid);
    __ beq(CCR1, L);
    if (iid == vmIntrinsics::_linkToVirtual ||
        iid == vmIntrinsics::_linkToSpecial) {
      // could do this for all kinds, but would explode assembly code size
      trace_method_handle(_masm, "bad Method*:intrinsic_id");
    }
    __ stop("bad Method*::intrinsic_id");
    __ BIND(L);
    BLOCK_COMMENT("} verify_intrinsic_id");
  }

  // First task:  Find out how big the argument list is.
  int ref_kind = signature_polymorphic_intrinsic_ref_kind(iid);
  assert(ref_kind != 0 || iid == vmIntrinsics::_invokeBasic, "must be _invokeBasic or a linkTo intrinsic");
  if (ref_kind == 0 || MethodHandles::ref_kind_has_receiver(ref_kind)) {
    __ ld(param_size, in_bytes(Method::const_offset()), R19_method);
    __ load_sized_value(param_size, in_bytes(ConstMethod::size_of_parameters_offset()), param_size,
                        sizeof(u2), /*is_signed*/ false);
    // assert(sizeof(u2) == sizeof(ConstMethod::_size_of_parameters), "");
  } else {
    DEBUG_ONLY(param_size = noreg);
  }

  Register tmp_mh = noreg;
  if (!is_signature_polymorphic_static(iid)) {
    __ ld(tmp_mh = temp1, __ argument_offset(param_size, param_size, 0), argbase);
    DEBUG_ONLY(param_size = noreg);
  }

  if (TraceMethodHandles) {
    if (tmp_mh != noreg) {
      __ mr(R23_method_handle, tmp_mh);  // make stub happy
    }
    trace_method_handle_interpreter_entry(_masm, iid);
  }

  if (iid == vmIntrinsics::_invokeBasic) {
    generate_method_handle_dispatch(_masm, iid, tmp_mh, noreg, not_for_compiler_entry);

  } else {
    // Adjust argument list by popping the trailing MemberName argument.
    Register tmp_recv = noreg;
    if (MethodHandles::ref_kind_has_receiver(ref_kind)) {
      // Load the receiver (not the MH; the actual MemberName's receiver) up from the interpreter stack.
      __ ld(tmp_recv = temp1, __ argument_offset(param_size, param_size, 0), argbase);
      DEBUG_ONLY(param_size = noreg);
    }
    Register R19_member = R19_method;  // MemberName ptr; incoming method ptr is dead now
    __ ld(R19_member, RegisterOrConstant((intptr_t)8), argbase);
    __ add(argbase, Interpreter::stackElementSize, argbase);
    generate_method_handle_dispatch(_masm, iid, tmp_recv, R19_member, not_for_compiler_entry);
  }

  return entry_point;
}
Exemplo n.º 29
0
	operator MRect()const {MRect mr(l(0), t(0), r(0), b(0)); return mr;}
Exemplo n.º 30
0
Int_t main(Int_t argc, Char_t *argv[])
{
   ROOT::Mpi::TEnvironment env(argc, argv);
   ROOT::Mpi::TIntraCommunicator world;
//    MpiInitTest(world, 2, ROOT::Mpi::GreaterIqual);
   TMatrixT<Double_t> mResult;
   TMatrixT<Double_t> m1(rowm1, colm1);
   TMatrixT<Double_t> m2(rowm2, colm2);

   TMatrixT<Double_t> m1square(side, side);
   TMatrixT<Double_t> m2square(side, side);

   for (Int_t i = 0; i < rowm1; i++)
      for (Int_t j = 0; j < colm1; j++)
         m1[i][j] = i + j;

   for (Int_t i = 0; i < rowm2; i++)
      for (Int_t j = 0; j < colm2; j++)
         m2[i][j] = j;

   for (Int_t i = 0; i < side; i++)
      for (Int_t j = 0; j < side; j++) {
         m1square[i][j] = j;
         m2square[i][j] = i;
      }

///////////////////////////////////////////////
//Testing methdos with results in single Rank//
///////////////////////////////////////////////
   ROOT::Mpi::Math::TMatrixTWrapper<Double_t> mul(m1);
   mul.Mult(m2, root);

   ROOT::Mpi::Math::TMatrixTWrapper<Double_t> add(m1square);
   add.Addition(m2square, root);

   ROOT::Mpi::Math::TMatrixTWrapper<Double_t> sub(m1square);
   sub.Subtraction(m2square, root);

   ROOT::Mpi::Math::TMatrixTWrapper<Double_t> trans(m2);
   trans.Transpose(root);

   if (world.Rank() == root) {
      mul.GetResult(mResult);
      MpiCompareTMatrixTest(mResult, m1 * m2, world.Rank(), "Matrix Multiplication Single");
      add.GetResult(mResult);
      MpiCompareTMatrixTest(mResult, m1square + m2square, world.Rank(), "Matrix Addition Single");
      sub.GetResult(mResult);
      MpiCompareTMatrixTest(mResult, m1square - m2square, world.Rank(), "Matrix Subtraction Single");
      trans.GetResult(mResult);
      MpiCompareTMatrixTest(mResult, TMatrixT<Double_t>(m2.GetNcols(), m2.GetNrows()).Transpose(m2), world.Rank(), "Matrix Transpose Single");
   }

///////////////////////////////////////////////
//Testing methdos with results in all ranks  //
///////////////////////////////////////////////

   ROOT::Mpi::Math::TMatrixTWrapper<Double_t> mulAll(m1);//return the results in all ranks
   mulAll.Mult(m2);
   mulAll.GetResult(mResult);
   MpiCompareTMatrixTest(mResult, m1 * m2, world.Rank(), "Matrix Multiplication All");

   ROOT::Mpi::Math::TMatrixTWrapper<Double_t> addAll(m1square);
   addAll.Addition(m2square);

   ROOT::Mpi::Math::TMatrixTWrapper<Double_t> subAll(m1square);
   subAll.Subtraction(m2square);

   ROOT::Mpi::Math::TMatrixTWrapper<Double_t> transAll(m2);
   transAll.Transpose();
   addAll.GetResult(mResult);
   MpiCompareTMatrixTest(mResult, m1square + m2square, world.Rank(), "Matrix Addition All");
   subAll.GetResult(mResult);
   MpiCompareTMatrixTest(mResult, m1square - m2square, world.Rank(), "Matrix Subtraction All");
   transAll.GetResult(mResult);
   MpiCompareTMatrixTest(mResult, TMatrixT<Double_t>(m2.GetNcols(), m2.GetNrows()).Transpose(m2), world.Rank(), "Matrix Transpose All");

//////////////////////////////////////////////////
//Testing methdos with multiple matrices types  //
//////////////////////////////////////////////////

   THilbertMatrixT<Double_t> him(side, side);
   TMatrixTSparse<Double_t>  sm1(rowm1, colm1);
   TMatrixTSparse<Double_t>  sm2(rowm2, colm2);
   TMatrixTFlat<Double_t>    fm1(m1);
   TMatrixTFlat<Double_t>    fm2(m2);
   TMatrixTSparse<Double_t>  smResult;

   for (Int_t i = 0; i < rowm1; i++)
      for (Int_t j = 0; j < colm1; j++) {
         sm1[i][j] = i * j;
      }
   for (Int_t i = 0; i < rowm2; i++)
      for (Int_t j = 0; j < colm2; j++) {
         sm2[i][j] = i * j;
      }



   ROOT::Mpi::Math::TMatrixTWrapper<Double_t> mulHim(m1square);//return the results in all ranks
   mulHim.Mult(him);
   mulHim.GetResult(mResult);
   MpiCompareTMatrixTest(mResult, m1square * TMatrixT<Double_t>(him), world.Rank(), "Matrix Multiplication HilbertMatrix");

   ROOT::Mpi::Math::TMatrixTWrapper<Double_t> mulHim2(him);//return the results in all ranks
   mulHim2.Mult(m1square);
   mulHim2.GetResult(mResult);
   MpiCompareTMatrixTest(mResult, TMatrixT<Double_t>(him)*m1square, world.Rank(), "Matrix Multiplication HilbertMatrix In Constructor");

   ROOT::Mpi::Math::TMatrixTWrapper<Double_t> mulSm(m1);//return the results in all ranks
   mulSm.Mult(sm2);
   mulSm.GetResult(smResult);
   MpiCompareTMatrixTest(smResult, m1 * sm2, world.Rank(), "Matrix Multiplication SparseMatrix");

   ROOT::Mpi::Math::TMatrixTWrapper<Double_t> mulSm2(sm1);//return the results in all ranks
   mulSm2.Mult(m2);
   mulSm2.GetResult(smResult);
   MpiCompareTMatrixTest(smResult, sm1 * m2, world.Rank(), "Matrix Multiplication SparseMatrix In Constructor");

   //
   ROOT::Mpi::Math::TMatrixTWrapper<Double_t> mulFm(m1);//return the results in all ranks
   mulFm.Mult(fm2);
   mulFm.GetResult(mResult);
   MpiCompareTMatrixTest(mResult, m1 * TMatrixT<Double_t>(fm2.GetMatrix()->GetNrows(), fm2.GetMatrix()->GetNcols(), fm2.GetMatrix()->GetMatrixArray()), world.Rank(), "Matrix Multiplication FlatMatrix");


   ROOT::Mpi::Math::TMatrixTWrapper<Double_t> mulFm2(fm1);//return the results in all ranks
   mulFm2.Mult(m2);
   mulFm2.GetResult(mResult);
   //NOTE fm matrix have data from m2, is the same tell m1*m2, just change the representation in memory
   MpiCompareTMatrixTest(mResult, m1 * m2, world.Rank(), "Matrix Multiplication FlatMatrix In Constructor");


   TVectorT<Double_t>        vec(rowv);
   for (Int_t i = 0; i < rowv; i++) vec[i] = i;
   ROOT::Mpi::Math::TMatrixTWrapper<Double_t> mulVec(m1);//return the results in all ranks
   mulVec.Mult(vec);
   mulVec.GetResult(mResult);
   TMatrixT<Double_t> mr((m1 * vec).GetNrows(), 1, (m1 * vec).GetMatrixArray());
//    mResult.Print();
//    mr.Print();
   MpiCompareTMatrixTest(mResult, mr, world.Rank(), "Matrix Multiplication with Vector");

   return 0;
}