[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[399] mplayerxp
Brought to you by:
olov
From: <nic...@us...> - 2012-11-17 16:25:35
|
Revision: 399 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=399&view=rev Author: nickols_k Date: 2012-11-17 16:25:28 +0000 (Sat, 17 Nov 2012) Log Message: ----------- minor optimization Modified Paths: -------------- mplayerxp/mplayerxp.cpp mplayerxp/osdep/mplib.cpp mplayerxp/osdep/mplib.h Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-11-17 14:55:17 UTC (rev 398) +++ mplayerxp/mplayerxp.cpp 2012-11-17 16:25:28 UTC (rev 399) @@ -207,9 +207,8 @@ return MPXP_Virus; } -static volatile void __attribute__ ((noinline)) mpxp_test_backtrace(void) { - any_t* caller = get_caller_address(); - goto *caller; +static void __attribute__ ((noinline)) mpxp_test_backtrace(void) { + goto *(reinterpret_cast<any_t*>(get_caller_address())); kill(getpid(), SIGILL); } @@ -2026,6 +2025,8 @@ /* display clip info */ demux_info_print(MPXPSys->demuxer(),filename); +// TODO: rewrite test backtrace in .asm +// mpxp_test_backtrace(); mpxp_run_ahead_engine(); fflush(stdout); @@ -2038,6 +2039,8 @@ if(sh_video) dae_wait_decoder_outrun(xp_core->video); +// TODO: rewrite test backtrace in .asm +// mpxp_test_backtrace(); if(xmp_run_players()!=0) exit_player("Can't run xp players!\n"); MSG_OK("Using the next %i threads:\n",xp_core->num_threads); unsigned idx; Modified: mplayerxp/osdep/mplib.cpp =================================================================== --- mplayerxp/osdep/mplib.cpp 2012-11-17 14:55:17 UTC (rev 398) +++ mplayerxp/osdep/mplib.cpp 2012-11-17 16:25:28 UTC (rev 399) @@ -22,3 +22,9 @@ } return buffer; } + +any_t* get_caller_address(unsigned num_caller) { + any_t* stack[3+num_caller]; + backtrace(stack,3+num_caller); + return stack[2+num_caller]; +} Modified: mplayerxp/osdep/mplib.h =================================================================== --- mplayerxp/osdep/mplib.h 2012-11-17 14:55:17 UTC (rev 398) +++ mplayerxp/osdep/mplib.h 2012-11-17 16:25:28 UTC (rev 399) @@ -75,12 +75,6 @@ print_backtrace(why,stack,ncalls); } -static inline any_t* get_caller_address(void) { - any_t* stack[2]; - unsigned ncalls; - ncalls=backtrace(stack,2); - return stack[1]; -} extern any_t* __FASTCALL__ SECURE_NAME0(_mp_malloc)(size_t size); extern any_t* __FASTCALL__ SECURE_NAME1(_mp_mallocz)(size_t size); extern void __FASTCALL__ SECURE_NAME2(_mp_free)(any_t* ptr); @@ -99,6 +93,8 @@ inline any_t *operator new[](size_t size,const std::nothrow_t&) { return mp_malloc(size); } inline void operator delete(any_t* p) { SECURE_NAME2(_mp_free)(p); } inline void operator delete[](any_t* p) { SECURE_NAME2(_mp_free)(p); } + + extern any_t* get_caller_address(unsigned num_caller=0); } #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |