--- parser3/src/main/execute.C 2003/10/02 07:26:46 1.299 +++ parser3/src/main/execute.C 2004/07/30 10:01:14 1.306 @@ -1,11 +1,11 @@ /** @file Parser: executor part of request class. - Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com) + Copyright (c) 2001-2004 ArtLebedev Group (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_EXECUTE_C="$Date: 2003/10/02 07:26:46 $"; +static const char * const IDENT_EXECUTE_C="$Date: 2004/07/30 10:01:14 $"; #include "pa_opcode.h" #include "pa_array.h" @@ -105,7 +105,7 @@ void debug_dump(SAPI_Info& sapi_info, in void Request::execute(ArrayOperation& ops) { register Stack& stack=this->stack; // helps a lot on MSVC: 'esi' - const String* debug_name=0; Operation::Origin debug_origin; //bool is_debug_junction=false; + const String* debug_name=0; Operation::Origin debug_origin={0, 0, 0}; try{ #ifdef DEBUG_EXECUTE debug_printf(sapi_info, "source----------------------------\n"); @@ -431,7 +431,7 @@ void Request::execute(ArrayOperation& op if(frame.junction.method->call_type!=Method::CT_STATIC) { // this is a constructor call - if(Value* value=called_class.create_new_value()) { + if(Value* value=called_class.create_new_value(fpool)) { // some stateless_class creatable derivates new_self=value; } else @@ -812,11 +812,10 @@ void Request::execute(ArrayOperation& op "invalid opcode %d", opcode); } } - } catch(...) { + } catch(const Exception&) { // record it to stack trace - //if(is_debug_junction) - if(debug_name) - exception_trace.push(Trace(debug_name, debug_origin)); + if(debug_name) + exception_trace.push(Trace(debug_name, debug_origin)); rethrow; } } @@ -908,7 +907,7 @@ StringOrValue Request::process(Value& in wcontext=&local; // execute it - recoursion_checked_execute(/*0/*result_name* /, */ *junction->code); + recoursion_checked_execute(*junction->code); // CodeFrame soul: // string writes were intercepted @@ -920,7 +919,7 @@ StringOrValue Request::process(Value& in wcontext=&local; // execute it - recoursion_checked_execute(/*0/*result_name* /, */ *junction->code); + recoursion_checked_execute(*junction->code); result=wcontext->result(); }