History

Fix performance issue regarding all built-in types type descriptors. Check in md5sum program written entirely in limbo.

arr committed 10 years ago

Commit 754ca821 parent 096b0c72 files · +267 −14Browse files

Showing the changes to src (1 of 2 files). Show all

Unified · Split

src/vm/vm_memory.cpp+70−14
@@ -355,46 +355,102 @@ namespace · 354 unmodified lines
355}355}
356 356
357template<>357template<>
358static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<byte_t>() { return{ &hidden_type_desc::byte, hidden_type_desc::deleter }; }358static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<byte_t>()
359{
360 static std::shared_ptr<const type_descriptor_t> t = { &hidden_type_desc::byte, hidden_type_desc::deleter };
361 return t;
362}
359 363
360template<>364template<>
361static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<short_word_t>() { return{ &hidden_type_desc::short_word, hidden_type_desc::deleter }; }365static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<short_word_t>()
366{
367 static std::shared_ptr<const type_descriptor_t> t = { &hidden_type_desc::short_word, hidden_type_desc::deleter };
368 return t;
369}
362 370
363template<>371template<>
364static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<word_t>() { return{ &hidden_type_desc::word, hidden_type_desc::deleter }; }372static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<word_t>()
373{
374 static std::shared_ptr<const type_descriptor_t> t = { &hidden_type_desc::word, hidden_type_desc::deleter };
375 return t;
376}
365 377
366template<>378template<>
367static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<short_real_t>() { return{ &hidden_type_desc::short_real, hidden_type_desc::deleter }; }379static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<short_real_t>()
380{
381 static std::shared_ptr<const type_descriptor_t> t = { &hidden_type_desc::short_real, hidden_type_desc::deleter };
382 return t;
383}
368 384
369template<>385template<>
370static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<real_t>() { return{ &hidden_type_desc::real, hidden_type_desc::deleter }; }386static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<real_t>()
387{
388 static std::shared_ptr<const type_descriptor_t> t = { &hidden_type_desc::real, hidden_type_desc::deleter };
389 return t;
390}
371 391
372template<>392template<>
373static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<big_t>() { return{ &hidden_type_desc::big, hidden_type_desc::deleter }; }393static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<big_t>()
394{
395 static std::shared_ptr<const type_descriptor_t> t = { &hidden_type_desc::big, hidden_type_desc::deleter };
396 return t;
397}
374 398
375template<>399template<>
376static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<pointer_t>() { return{ &hidden_type_desc::pointer, hidden_type_desc::deleter }; }400static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<pointer_t>()
401{
402 static std::shared_ptr<const type_descriptor_t> t = { &hidden_type_desc::pointer, hidden_type_desc::deleter };
403 return t;
404}
377 405
378template<>406template<>
379static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<vm_array_t>() { return{ &hidden_type_desc::vm_array, hidden_type_desc::deleter }; }407static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<vm_array_t>()
408{
409 static std::shared_ptr<const type_descriptor_t> t = { &hidden_type_desc::vm_array, hidden_type_desc::deleter };
410 return t;
411}
380 412
381template<>413template<>
382static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<vm_list_t>() { return{ &hidden_type_desc::vm_list, hidden_type_desc::deleter }; }414static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<vm_list_t>()
415{
416 static std::shared_ptr<const type_descriptor_t> t = { &hidden_type_desc::vm_list, hidden_type_desc::deleter };
417 return t;
418}
383 419
384template<>420template<>
385static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<vm_channel_t>() { return{ &hidden_type_desc::vm_channel, hidden_type_desc::deleter }; }421static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<vm_channel_t>()
422{
423 static std::shared_ptr<const type_descriptor_t> t = { &hidden_type_desc::vm_channel, hidden_type_desc::deleter };
424 return t;
425}
386 426
387template<>427template<>
388static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<vm_string_t>() { return{ &hidden_type_desc::vm_string, hidden_type_desc::deleter }; }428static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<vm_string_t>()
429{
430 static std::shared_ptr<const type_descriptor_t> t = { &hidden_type_desc::vm_string, hidden_type_desc::deleter };
431 return t;
432}
389 433
390template<>434template<>
391static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<vm_module_ref_t>() { return{ &hidden_type_desc::vm_module_ref, hidden_type_desc::deleter }; }435static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<vm_module_ref_t>()
436{
437 static std::shared_ptr<const type_descriptor_t> t = { &hidden_type_desc::vm_module_ref, hidden_type_desc::deleter };
438 return t;
439}
392 440
393template<>441template<>
394static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<vm_stack_t>() { return{ &hidden_type_desc::vm_stack, hidden_type_desc::deleter }; }442static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<vm_stack_t>()
443{
444 static std::shared_ptr<const type_descriptor_t> t = { &hidden_type_desc::vm_stack, hidden_type_desc::deleter };
445 return t;
446}
395 447
396template<>448template<>
397static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<vm_thread_t>() { return{ &hidden_type_desc::vm_thread, hidden_type_desc::deleter }; }449static std::shared_ptr<const type_descriptor_t> intrinsic_type_desc::type<vm_thread_t>()
450{
451 static std::shared_ptr<const type_descriptor_t> t = { &hidden_type_desc::vm_thread, hidden_type_desc::deleter };
452 return t;
453}
398 454
399vm_alloc_instance_finalizer_t type_descriptor_t::no_finalizer = nullptr;455vm_alloc_instance_finalizer_t type_descriptor_t::no_finalizer = nullptr;
400 456