Patch title: Release 94 bulk changes
Abstract:
File: /pliant/language/compiler/type/type.c
Key:
    Removed line
    Added line
   
// Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
//
// This program is free software; you can redistribute it an
// modify it under the terms of the GNU General Public Licen
// as published by the Free Software Foundation.
// 
// This program is distributed in the hope that it will be u
// but WITHOUT ANY WARRANTY; without even the implied warran
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public
// version 2 along with this program; if not, write to the F
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA


// Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
//
// This program is free software; you can redistribute it an
// modify it under the terms of the GNU General Public Licen
// as published by the Free Software Foundation.
// 
// This program is distributed in the hope that it will be u
// but WITHOUT ANY WARRANTY; without even the implied warran
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public
// version 2 along with this program; if not, write to the F
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA


#ifdef _CHECK_STACK_
  Int destroy_level;
#endif

FUNCTION Void Type_destroy_instance(struct Type *type,Addres
  Int flags;
  TypeDestroyPrototype destroy;
  Int i; struct TypeField *f;
  flags=type->flags;
  if(flags&Type_flag_scalar)
    return;
FUNCTION Void Type_destroy_instance(struct Type *type,Addres
  Int flags;
  TypeDestroyPrototype destroy;
  Int i; struct TypeField *f;
  flags=type->flags;
  if(flags&Type_flag_scalar)
    return;
  #ifdef _CHECK_STACK_
    if(++destroy_level>=1000)
      consolen(Z,"Recursive destroy ",S,&type->name,EOL);
  #endif
  destroy=(TypeDestroyPrototype)Type_get_generic_method_exec
  if(destroy!=undefined_method)
    destroy(instance);
  if(!(flags&Type_flag_direct_destroy))
    for(i=0; i<type->nb_field; i++) {
      f=type->fields+i;
      Type_destroy_instance(f->type,address_translate(instan
  if(flags&Type_flag_count)
  destroy=(TypeDestroyPrototype)Type_get_generic_method_exec
  if(destroy!=undefined_method)
    destroy(instance);
  if(!(flags&Type_flag_direct_destroy))
    for(i=0; i<type->nb_field; i++) {
      f=type->fields+i;
      Type_destroy_instance(f->type,address_translate(instan
  if(flags&Type_flag_count)
    entry_unlock(type); }
    entry_unlock(type);
  #ifdef _CHECK_STACK_
    destroy_level--;
  #endif
  }