亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? init.c

?? gcc的組件
?? C
?? 第 1 頁 / 共 2 頁
字號:
      int module_initialized = 1;      for (statics_in_module = (*cell)->head;	   *statics_in_module; statics_in_module++)	{	  struct objc_static_instances *statics = *statics_in_module;	  Class class = objc_lookup_class (statics->class_name);	  if (! class)	    module_initialized = 0;	  /* Actually, the static's class_pointer will be NULL when we             haven't been here before.  However, the comparison is to be             reminded of taking into account class posing and to think about             possible semantics...  */	  else if (class != statics->instances[0]->class_pointer)	    {	      id *inst;	      for (inst = &statics->instances[0]; *inst; inst++)		{		  (*inst)->class_pointer = class;		  /* ??? Make sure the object will not be freed.  With                     refcounting, invoke `-retain'.  Without refcounting, do                     nothing and hope that `-free' will never be invoked.  */		  /* ??? Send the object an `-initStatic' or something to                     that effect now or later on?  What are the semantics of                     statically allocated instances, besides the trivial                     NXConstantString, anyway?  */		}	    }	}      if (module_initialized)	{	  /* Remove this module from the uninitialized list.  */	  struct objc_list *this = *cell;	  *cell = this->tail;	  objc_free (this);	}      else	cell = &(*cell)->tail;    }  objc_mutex_unlock (__objc_runtime_mutex);} /* objc_init_statics *//* This function is called by constructor functions generated for each   module compiled.  (_GLOBAL_$I$...) The purpose of this function is   to gather the module pointers so that they may be processed by the   initialization routines as soon as possible.  */void__objc_exec_class (Module_t module){  /* Have we processed any constructors previously?  This flag is used to     indicate that some global data structures need to be built.  */  static BOOL previous_constructors = 0;  static struct objc_list *unclaimed_categories = 0;  /* The symbol table (defined in objc-api.h) generated by gcc */  Symtab_t symtab = module->symtab;  /* The statics in this module */  struct objc_static_instances **statics    = symtab->defs[symtab->cls_def_cnt + symtab->cat_def_cnt];  /* Entry used to traverse hash lists */  struct objc_list **cell;  /* The table of selector references for this module */  SEL selectors = symtab->refs;   /* dummy counter */  int i;  DEBUG_PRINTF ("received module: %s\n", module->name);  /* check gcc version */  init_check_module_version (module);  /* On the first call of this routine, initialize some data structures.  */  if (! previous_constructors)    {	/* Initialize thread-safe system */      __objc_init_thread_system ();      __objc_runtime_threads_alive = 1;      __objc_runtime_mutex = objc_mutex_allocate ();      __objc_init_selector_tables ();      __objc_init_class_tables ();      __objc_init_dispatch_tables ();      __objc_class_tree_list = list_cons (NULL, __objc_class_tree_list);      __objc_load_methods = objc_hash_new (128, 					   (hash_func_type)objc_hash_ptr,					   objc_compare_ptrs);      previous_constructors = 1;    }  /* Save the module pointer for later processing. (not currently used) */  objc_mutex_lock (__objc_runtime_mutex);  __objc_module_list = list_cons (module, __objc_module_list);  /* Replace referenced selectors from names to SEL's.  */  if (selectors)    {      for (i = 0; selectors[i].sel_id; ++i)	{	  const char *name, *type;	  name = (char *) selectors[i].sel_id;	  type = (char *) selectors[i].sel_types;	  /* Constructors are constant static data so we can safely store	     pointers to them in the runtime structures. is_const == YES */	  __sel_register_typed_name (name, type, 				     (struct objc_selector *) &(selectors[i]),				     YES);	}    }  /* Parse the classes in the load module and gather selector information.  */  DEBUG_PRINTF ("gathering selectors from module: %s\n", module->name);  for (i = 0; i < symtab->cls_def_cnt; ++i)    {      Class class = (Class) symtab->defs[i];      const char *superclass = (char *) class->super_class;      /* Make sure we have what we think.  */      assert (CLS_ISCLASS (class));      assert (CLS_ISMETA (class->class_pointer));      DEBUG_PRINTF ("phase 1, processing class: %s\n", class->name);      /* Initialize the subclass list to be NULL.	 In some cases it isn't and this crashes the program.  */      class->subclass_list = NULL;      /* Store the class in the class table and assign class numbers.  */      __objc_add_class_to_hash (class);      /* Register all of the selectors in the class and meta class.  */      __objc_register_selectors_from_class (class);      __objc_register_selectors_from_class ((Class) class->class_pointer);      /* Install the fake dispatch tables */      __objc_install_premature_dtable (class);      __objc_install_premature_dtable (class->class_pointer);      /* Register the instance methods as class methods, this is	 only done for root classes.  */      __objc_register_instance_methods_to_class (class);      if (class->protocols)	__objc_init_protocols (class->protocols);      /* Check to see if the superclass is known in this point. If it's not	 add the class to the unresolved_classes list.  */      if (superclass && ! objc_lookup_class (superclass))	unresolved_classes = list_cons (class, unresolved_classes);   }  /* Process category information from the module.  */  for (i = 0; i < symtab->cat_def_cnt; ++i)    {      Category_t category = symtab->defs[i + symtab->cls_def_cnt];      Class class = objc_lookup_class (category->class_name);            /* If the class for the category exists then append its methods.  */      if (class)	{	  DEBUG_PRINTF ("processing categories from (module,object): %s, %s\n",			module->name,			class->name);	  /* Do instance methods.  */	  if (category->instance_methods)	    class_add_method_list (class, category->instance_methods);	  /* Do class methods.  */	  if (category->class_methods)	    class_add_method_list ((Class) class->class_pointer, 				   category->class_methods);	  if (category->protocols)	    {	      __objc_init_protocols (category->protocols);	      __objc_class_add_protocols (class, category->protocols);	    }          /* Register the instance methods as class methods, this is             only done for root classes.  */          __objc_register_instance_methods_to_class (class);	}      else	{	  /* The object to which the category methods belong can't be found.	     Save the information.  */	  unclaimed_categories = list_cons (category, unclaimed_categories);	}    }  if (statics)    uninitialized_statics = list_cons (statics, uninitialized_statics);  if (uninitialized_statics)    objc_init_statics ();  /* Scan the unclaimed category hash.  Attempt to attach any unclaimed     categories to objects.  */  for (cell = &unclaimed_categories; *cell; )    {      Category_t category = (*cell)->head;      Class class = objc_lookup_class (category->class_name);            if (class)	{	  DEBUG_PRINTF ("attaching stored categories to object: %s\n",			class->name);	  	  list_remove_head (cell);	  	  if (category->instance_methods)	    class_add_method_list (class, category->instance_methods);	  	  if (category->class_methods)	    class_add_method_list ((Class) class->class_pointer,				   category->class_methods);	  if (category->protocols)	    {	      __objc_init_protocols (category->protocols);	      __objc_class_add_protocols (class, category->protocols);	    }          /* Register the instance methods as class methods, this is             only done for root classes.  */          __objc_register_instance_methods_to_class (class);	}      else	cell = &(*cell)->tail;    }    if (unclaimed_proto_list && objc_lookup_class ("Protocol"))    {      list_mapcar (unclaimed_proto_list,		   (void (*) (void *))__objc_init_protocols);      list_free (unclaimed_proto_list);      unclaimed_proto_list = 0;    }  objc_send_load ();  objc_mutex_unlock (__objc_runtime_mutex);}static voidobjc_send_load (void){  if (! __objc_module_list)    return;   /* Try to find out if all the classes loaded so far also have their     superclasses known to the runtime. We suppose that the objects     that are allocated in the +load method are in general of a class     declared in the same module.  */  if (unresolved_classes)    {      Class class = unresolved_classes->head;      while (objc_lookup_class ((char *) class->super_class))	{	  list_remove_head (&unresolved_classes);	  if (unresolved_classes)	    class = unresolved_classes->head;	  else	    break;	}      /* If we still have classes for whom we don't have yet their         super classes known to the runtime we don't send the +load         messages.  */      if (unresolved_classes)	return;    }  /* Special check to allow creating and sending messages to constant     strings in +load methods. If these classes are not yet known,     even if all the other classes are known, delay sending of +load.  */  if (! objc_lookup_class ("NXConstantString") ||      ! objc_lookup_class ("Object"))    return;  /* Iterate over all modules in the __objc_module_list and call on     them the __objc_create_classes_tree function. This function     creates a tree of classes that resembles the class hierarchy.  */  list_mapcar (__objc_module_list,	       (void (*) (void *)) __objc_create_classes_tree);  while (__objc_class_tree_list)    {#ifdef DEBUG      objc_preorder_traverse (__objc_class_tree_list->head,			      0, __objc_tree_print);#endif      objc_preorder_traverse (__objc_class_tree_list->head,			      0, __objc_send_load);      objc_postorder_traverse (__objc_class_tree_list->head,			      0, __objc_destroy_class_tree_node);      list_remove_head (&__objc_class_tree_list);    }  list_mapcar (__objc_module_list, (void (*) (void *)) __objc_call_callback);  list_free (__objc_module_list);  __objc_module_list = NULL;}static void__objc_create_classes_tree (Module_t module){  /* The runtime mutex is locked in this point */  Symtab_t symtab = module->symtab;  int i;  /* Iterate thru classes defined in this module and insert them in     the classes tree hierarchy.  */  for (i = 0; i < symtab->cls_def_cnt; i++)    {      Class class = (Class) symtab->defs[i];      objc_tree_insert_class (class);    }}static void__objc_call_callback (Module_t module){  /* The runtime mutex is locked in this point.  */  Symtab_t symtab = module->symtab;  int i;  /* Iterate thru classes defined in this module and call the callback     for each one.  */  for (i = 0; i < symtab->cls_def_cnt; i++)    {      Class class = (Class) symtab->defs[i];      /* Call the _objc_load_callback for this class.  */      if (_objc_load_callback)	_objc_load_callback (class, 0);    }  /* Call the _objc_load_callback for categories. Don't register the     instance methods as class methods for categories to root classes     since they were already added in the class.  */  for (i = 0; i < symtab->cat_def_cnt; i++)    {      Category_t category = symtab->defs[i + symtab->cls_def_cnt];      Class class = objc_lookup_class (category->class_name);            if (_objc_load_callback)	_objc_load_callback (class, category);    }}/* Sanity check the version of gcc used to compile `module'.  */static voidinit_check_module_version (Module_t module){  if ((module->version != OBJC_VERSION) || (module->size != sizeof (Module)))    {      int code;      if (module->version > OBJC_VERSION)	code = OBJC_ERR_OBJC_VERSION;      else if (module->version < OBJC_VERSION)	code = OBJC_ERR_GCC_VERSION;      else	code = OBJC_ERR_MODULE_SIZE;      objc_error (nil, code, "Module %s version %d doesn't match runtime %d\n",		  module->name, (int)module->version, OBJC_VERSION);    }}static void__objc_init_protocols (struct objc_protocol_list *protos){  size_t i;  static Class proto_class = 0;  if (! protos)    return;  objc_mutex_lock (__objc_runtime_mutex);  if (! proto_class)    proto_class = objc_lookup_class ("Protocol");  if (! proto_class)    {      unclaimed_proto_list = list_cons (protos, unclaimed_proto_list);      objc_mutex_unlock (__objc_runtime_mutex);      return;    }#if 0  assert (protos->next == 0);	/* only single ones allowed */#endif  for (i = 0; i < protos->count; i++)    {      struct objc_protocol *aProto = protos->list[i];      if (((size_t)aProto->class_pointer) == PROTOCOL_VERSION)	{	  /* assign class pointer */	  aProto->class_pointer = proto_class;	  /* init super protocols */	  __objc_init_protocols (aProto->protocol_list);	}      else if (protos->list[i]->class_pointer != proto_class)	{	  objc_error (nil, OBJC_ERR_PROTOCOL_VERSION,		     "Version %d doesn't match runtime protocol version %d\n",		     (int) ((char *) protos->list[i]->class_pointer			    - (char *) 0),		     PROTOCOL_VERSION);	}    }  objc_mutex_unlock (__objc_runtime_mutex);}static void__objc_class_add_protocols (Class class, struct objc_protocol_list *protos){  /* Well...  */  if (! protos)    return;  /* Add it...  */  protos->next = class->protocols;  class->protocols = protos;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产高清一区二区| 亚洲乱码中文字幕综合| 中文字幕一区二区三区视频| 日韩高清一级片| 97久久久精品综合88久久| 欧美一区二区三区啪啪| 亚洲男帅同性gay1069| 国产一区中文字幕| 91精品啪在线观看国产60岁| 依依成人综合视频| 国产91对白在线观看九色| 欧美一级电影网站| 亚洲一区在线观看免费观看电影高清| 国产精品1区二区.| 日韩欧美一区中文| 午夜电影网亚洲视频| 91浏览器打开| 国产精品二区一区二区aⅴ污介绍| 久久精品72免费观看| 欧美日韩一卡二卡三卡| 一区二区三区91| 一本久久综合亚洲鲁鲁五月天| 久久精品男人的天堂| 精品一区二区三区日韩| 欧美一卡二卡在线观看| 日韩成人精品在线观看| 欧美久久一区二区| 亚洲国产一二三| 欧美午夜在线一二页| 亚洲一区中文日韩| 欧美色视频一区| 天堂久久久久va久久久久| 欧美日本一区二区| 午夜精品一区在线观看| 91超碰这里只有精品国产| 午夜伦欧美伦电影理论片| 欧美日韩三级一区| 日韩成人dvd| 精品蜜桃在线看| 精品一区二区三区在线视频| 久久夜色精品国产欧美乱极品| 激情综合一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 国产在线精品一区二区三区不卡 | 色香蕉成人二区免费| 亚洲欧美日本在线| 欧美日韩小视频| 美日韩一区二区| 国产午夜精品久久| 91年精品国产| 日韩影院在线观看| 久久综合九色综合欧美亚洲| 国产成人精品午夜视频免费| 亚洲四区在线观看| 欧美日韩激情在线| 国内一区二区视频| 亚洲三级电影全部在线观看高清| 在线亚洲+欧美+日本专区| 日韩高清不卡一区二区三区| 日韩精品一区二区在线| 风间由美一区二区av101| 亚洲欧美激情视频在线观看一区二区三区| 色综合天天视频在线观看| 日日夜夜免费精品| 国产性天天综合网| 欧美性猛交一区二区三区精品 | 亚洲啪啪综合av一区二区三区| 欧美色偷偷大香| 国产乱一区二区| 亚洲一区二区三区四区五区黄| 精品国偷自产国产一区| 99精品久久久久久| 久久激情五月激情| 亚洲精品日韩一| 日韩欧美国产系列| 91丨国产丨九色丨pron| 麻豆精品在线播放| 亚洲免费在线播放| 国产亚洲成aⅴ人片在线观看| 欧美综合色免费| 国产成人精品三级麻豆| 偷拍一区二区三区| 日韩美女视频一区二区| 精品日韩一区二区三区免费视频| 色网站国产精品| 国产91富婆露脸刺激对白| 日韩国产欧美三级| 亚洲欧美日韩中文播放| 精品国产伦一区二区三区观看体验| 91小宝寻花一区二区三区| 国产精品一区一区| 蜜桃一区二区三区在线| 亚洲一区二区三区精品在线| 国产精品久久久久久久久晋中| 制服丝袜亚洲网站| 91国内精品野花午夜精品 | 精品国产91久久久久久久妲己| 91蜜桃在线观看| 不卡的电视剧免费网站有什么| 精品一区二区三区视频在线观看 | 亚洲免费av观看| 国产日韩v精品一区二区| 精品毛片乱码1区2区3区| 欧美老年两性高潮| 欧美日韩精品一区二区三区| 99re6这里只有精品视频在线观看| 极品少妇xxxx偷拍精品少妇| 免费看日韩a级影片| 青青草伊人久久| 视频一区中文字幕| 首页欧美精品中文字幕| 性感美女久久精品| 亚洲h精品动漫在线观看| 一级精品视频在线观看宜春院| 日韩伦理免费电影| 综合分类小说区另类春色亚洲小说欧美| 中文字幕二三区不卡| 国产精品久久久久一区二区三区 | 成人v精品蜜桃久久一区| 处破女av一区二区| eeuss鲁片一区二区三区在线观看| 国产69精品久久久久毛片| 成人激情免费视频| av不卡在线播放| 在线视频国内自拍亚洲视频| 91国偷自产一区二区三区观看 | 99在线热播精品免费| 91亚洲精品乱码久久久久久蜜桃| 一本大道久久a久久综合婷婷| 色欧美片视频在线观看| 欧美三级三级三级| 日韩一区二区三区高清免费看看| 日韩午夜电影在线观看| 精品播放一区二区| 国产精品视频九色porn| 中文字幕一区二区日韩精品绯色| 亚洲精选免费视频| 视频一区二区中文字幕| 国产美女一区二区| 99r国产精品| 欧美精品乱码久久久久久按摩 | 国产不卡一区视频| 色综合一区二区| 3atv一区二区三区| 国产精品乱码一区二三区小蝌蚪| 亚洲欧美日韩国产一区二区三区 | 日韩欧美自拍偷拍| 国产欧美日产一区| 亚洲福利一区二区| 国产一二精品视频| 欧美三级视频在线| 国产日韩一级二级三级| 亚洲一区在线免费观看| 国产精品一二三区在线| 欧美色区777第一页| 久久伊人蜜桃av一区二区| 一区二区三区**美女毛片| 国产在线看一区| 欧美在线一二三| 久久精品人人做人人综合 | 久久99精品视频| 日本韩国一区二区三区视频| 精品久久国产老人久久综合| 一区二区三区不卡在线观看| 国产高清精品网站| 91精品国产91热久久久做人人| 中文字幕一区二区三区不卡在线 | 91在线观看视频| 日韩免费在线观看| 亚洲成精国产精品女| 99久久99久久免费精品蜜臀| 日韩精品一区国产麻豆| 亚洲综合偷拍欧美一区色| 国产乱子伦视频一区二区三区 | 91丨九色porny丨蝌蚪| 欧美精品一区二区三区在线 | 欧美一二区视频| 亚洲欧美另类小说视频| 国产91精品一区二区| 精品久久人人做人人爰| 日韩国产精品91| 欧美日韩久久久一区| 一区二区三区波多野结衣在线观看| 成人高清视频在线| 久久九九全国免费| 国产一区二区在线电影| 欧美大胆人体bbbb| 日本在线不卡视频| 欧美三级电影在线观看| 亚洲日本丝袜连裤袜办公室| 99久久精品免费看国产免费软件| 久久久不卡网国产精品一区| 激情久久五月天| 亚洲精品在线观看网站| 久久精品国产色蜜蜜麻豆| 日韩一区二区中文字幕| 美女在线一区二区| 精品第一国产综合精品aⅴ| 久久av老司机精品网站导航| 日韩美女一区二区三区|