--- parser3/src/main/execute.C 2003/09/29 10:51:02 1.298 +++ parser3/src/main/execute.C 2003/11/20 15:35:31 1.301 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_EXECUTE_C="$Date: 2003/09/29 10:51:02 $"; +static const char* IDENT_EXECUTE_C="$Date: 2003/11/20 15:35:31 $"; #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}; try{ #ifdef DEBUG_EXECUTE debug_printf(sapi_info, "source----------------------------\n"); @@ -328,7 +328,7 @@ void Request::execute(ArrayOperation& op case OP_STORE_PARAM: { Value& value=stack.pop().value(); - VMethodFrame& frame=stack.upper_value().method_frame(); + VMethodFrame& frame=stack.top_value().method_frame(); // this op is executed from CALL local_ops only, so may skip the check "method_frame_to_fill==0" frame.store_param(value); break; @@ -338,7 +338,7 @@ void Request::execute(ArrayOperation& op { // code ArrayOperation& local_ops=*i.next().ops; - VMethodFrame& frame=stack.upper_value().method_frame(); + VMethodFrame& frame=stack.top_value().method_frame(); #ifdef DEBUG_EXECUTE debug_printf(sapi_info, " (%d)\n", local_ops.count()); debug_dump(sapi_info, 1, local_ops); @@ -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 @@ -814,9 +814,8 @@ void Request::execute(ArrayOperation& op } } catch(...) { // 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; } }