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

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

?? sendmsg.c

?? GCC編譯器源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* GNU Objective C Runtime message lookup    Copyright (C) 1993, 1995, 1996, 1997 Free Software Foundation, Inc.   Contributed by Kresten Krab ThorupThis file is part of GNU CC.GNU CC is free software; you can redistribute it and/or modify it under theterms of the GNU General Public License as published by the Free SoftwareFoundation; either version 2, or (at your option) any later version.GNU CC is distributed in the hope that it will be useful, but WITHOUT ANYWARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESSFOR A PARTICULAR PURPOSE.  See the GNU General Public License for moredetails.You should have received a copy of the GNU General Public License along withGNU CC; see the file COPYING.  If not, write to the Free SoftwareFoundation, 59 Temple Place - Suite 330,Boston, MA 02111-1307, USA.  *//* As a special exception, if you link this library with files compiled with   GCC to produce an executable, this does not cause the resulting executable   to be covered by the GNU General Public License. This exception does not   however invalidate any other reasons why the executable file might be   covered by the GNU General Public License.  */#include "../tconfig.h"#include "runtime.h"#include "sarray.h"#include "encoding.h"#include "runtime-info.h"/* this is how we hack STRUCT_VALUE to be 1 or 0 */#define gen_rtx(args...) 1#define rtx int#if !defined(STRUCT_VALUE) || STRUCT_VALUE == 0#define INVISIBLE_STRUCT_RETURN 1#else#define INVISIBLE_STRUCT_RETURN 0#endif/* The uninstalled dispatch table */struct sarray* __objc_uninstalled_dtable = 0;   /* !T:MUTEX *//* Send +initialize to class */static void __objc_send_initialize(Class);static void __objc_install_dispatch_table_for_class (Class);/* Forward declare some functions */static void __objc_init_install_dtable(id, SEL);/* Various forwarding functions that are used based upon the   return type for the selector.   __objc_block_forward for structures.   __objc_double_forward for floats/doubles.   __objc_word_forward for pointers or types that fit in registers.   */static double __objc_double_forward(id, SEL, ...);static id __objc_word_forward(id, SEL, ...);typedef struct { id many[8]; } __big;#if INVISIBLE_STRUCT_RETURN static __big #elsestatic id#endif__objc_block_forward(id, SEL, ...);static Method_t search_for_method_in_hierarchy (Class class, SEL sel);Method_t search_for_method_in_list(MethodList_t list, SEL op);id nil_method(id, SEL, ...);/* Given a selector, return the proper forwarding implementation. */__inline__IMP__objc_get_forward_imp (SEL sel){  const char *t = sel->sel_types;  if (t && (*t == '[' || *t == '(' || *t == '{')#ifdef OBJC_MAX_STRUCT_BY_VALUE    && objc_sizeof_type(t) > OBJC_MAX_STRUCT_BY_VALUE#endif      )    return (IMP)__objc_block_forward;  else if (t && (*t == 'f' || *t == 'd'))    return (IMP)__objc_double_forward;  else    return (IMP)__objc_word_forward;}/* Given a class and selector, return the selector's implementation.  */__inline__IMPget_imp (Class class, SEL sel){  void* res = sarray_get_safe (class->dtable, (size_t) sel->sel_id);  if (res == 0)    {      /* Not a valid method */      if(class->dtable == __objc_uninstalled_dtable)	{	  /* The dispatch table needs to be installed. */	  objc_mutex_lock(__objc_runtime_mutex);	  __objc_install_dispatch_table_for_class (class);	  objc_mutex_unlock(__objc_runtime_mutex);	  /* Call ourselves with the installed dispatch table	     and get the real method */	  res = get_imp(class, sel);	}      else	{	  /* The dispatch table has been installed so the	     method just doesn't exist for the class.	     Return the forwarding implementation. */	  res = __objc_get_forward_imp(sel);	}    }  return res;}/* Query if an object can respond to a selector, returns YES if theobject implements the selector otherwise NO.  Does not check if themethod can be forwarded. */__inline__BOOL__objc_responds_to (id object, SEL sel){  void* res;  /* Install dispatch table if need be */  if (object->class_pointer->dtable == __objc_uninstalled_dtable)    {      objc_mutex_lock(__objc_runtime_mutex);      __objc_install_dispatch_table_for_class (object->class_pointer);      objc_mutex_unlock(__objc_runtime_mutex);    }  /* Get the method from the dispatch table */  res = sarray_get_safe (object->class_pointer->dtable, (size_t) sel->sel_id);  return (res != 0);}/* This is the lookup function.  All entries in the table are either a    valid method *or* zero.  If zero then either the dispatch table   needs to be installed or it doesn't exist and forwarding is attempted. */__inline__IMPobjc_msg_lookup(id receiver, SEL op){  IMP result;  if(receiver)    {      result = sarray_get_safe (receiver->class_pointer->dtable, 				(sidx)op->sel_id);      if (result == 0)	{	  /* Not a valid method */	  if(receiver->class_pointer->dtable == __objc_uninstalled_dtable)	    {	      /* The dispatch table needs to be installed.		 This happens on the very first method call to the class. */	      __objc_init_install_dtable(receiver, op);	      /* Get real method for this in newly installed dtable */	      result = get_imp(receiver->class_pointer, op);	    }	  else	    {	      /* The dispatch table has been installed so the		 method just doesn't exist for the class.		 Attempt to forward the method. */	      result = __objc_get_forward_imp(op);	    }	}      return result;    }  else    return nil_method;}IMPobjc_msg_lookup_super (Super_t super, SEL sel){  if (super->self)    return get_imp (super->class, sel);  else    return nil_method;}int method_get_sizeof_arguments (Method*);retval_tobjc_msg_sendv(id object, SEL op, arglist_t arg_frame){  Method* m = class_get_instance_method(object->class_pointer, op);  const char *type;  *((id*)method_get_first_argument (m, arg_frame, &type)) = object;  *((SEL*)method_get_next_argument (arg_frame, &type)) = op;  return __builtin_apply((apply_t)m->method_imp, 			 arg_frame,			 method_get_sizeof_arguments (m));}void__objc_init_dispatch_tables(){  __objc_uninstalled_dtable    = sarray_new(200, 0);}/* This function is called by objc_msg_lookup when the   dispatch table needs to be installed; thus it is called once   for each class, namely when the very first message is sent to it. */static void__objc_init_install_dtable(id receiver, SEL op){  /* This may happen, if the programmer has taken the address of a      method before the dtable was initialized... too bad for him! */  if(receiver->class_pointer->dtable != __objc_uninstalled_dtable)    return;  objc_mutex_lock(__objc_runtime_mutex);  if(CLS_ISCLASS(receiver->class_pointer))    {      /* receiver is an ordinary object */      assert(CLS_ISCLASS(receiver->class_pointer));      /* install instance methods table */      __objc_install_dispatch_table_for_class (receiver->class_pointer);      /* call +initialize -- this will in turn install the factory 	 dispatch table if not already done :-) */      __objc_send_initialize(receiver->class_pointer);    }  else    {      /* receiver is a class object */      assert(CLS_ISCLASS((Class)receiver));      assert(CLS_ISMETA(receiver->class_pointer));      /* Install real dtable for factory methods */      __objc_install_dispatch_table_for_class (receiver->class_pointer);      if (strcmp (sel_get_name (op), "initialize"))	__objc_send_initialize((Class)receiver);      else	CLS_SETINITIALIZED((Class)receiver);    }  objc_mutex_unlock(__objc_runtime_mutex);}/* Install dummy table for class which causes the first message to   that class (or instances hereof) to be initialized properly */void__objc_install_premature_dtable(Class class){  assert(__objc_uninstalled_dtable);  class->dtable = __objc_uninstalled_dtable;}   /* Send +initialize to class if not already done */static void__objc_send_initialize(Class class){  /* This *must* be a class object */  assert(CLS_ISCLASS(class));  assert(!CLS_ISMETA(class));  if (!CLS_ISINITIALIZED(class))    {      CLS_SETINITIALIZED(class);      CLS_SETINITIALIZED(class->class_pointer);            if(class->super_class)	__objc_send_initialize(class->super_class);      {	SEL 	op = sel_register_name ("initialize");	Class	tmpclass = class;	IMP	imp = 0;	while (!imp && tmpclass) {	  MethodList_t method_list = tmpclass->class_pointer->methods;	  while(!imp && method_list) {	    int i;	    Method_t method;	    for (i=0;i<method_list->method_count;i++) {	      method = &(method_list->method_list[i]);	      if (method->method_name		  && method->method_name->sel_id == op->sel_id) {	        imp = method->method_imp;	        break;	      }	    }	    method_list = method_list->method_next;	  }	  tmpclass = tmpclass->super_class;	}	if (imp)	    (*imp)((id)class, op);		      }    }}/* Walk on the methods list of class and install the methods in the reverse   order of the lists. Since methods added by categories are before the methods   of class in the methods list, this allows categories to substitute methods   declared in class. However if more than one category replaces the same   method nothing is guaranteed about what method will be used.   Assumes that __objc_runtime_mutex is locked down. */static void__objc_install_methods_in_dtable (Class class, MethodList_t method_list){  int i;  if (!method_list)    return;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合免费观看高清完整版在线| 久久久国际精品| 91视频.com| 国产激情视频一区二区在线观看| 久99久精品视频免费观看| 日韩精品视频网| 久久成人18免费观看| 日本成人在线视频网站| 男女视频一区二区| 蜜臀久久99精品久久久久宅男| 日韩电影在线免费观看| 久久99国产精品久久| 美国三级日本三级久久99| 国内精品自线一区二区三区视频| 国精产品一区一区三区mba桃花| 久久电影网站中文字幕| 国产盗摄精品一区二区三区在线| 国产成人啪免费观看软件| av在线不卡观看免费观看| 色噜噜狠狠一区二区三区果冻| 欧美日韩亚洲不卡| 欧美一级高清片| 国产欧美精品在线观看| 亚洲免费伊人电影| 久久久久久久久久久久电影| 免费三级欧美电影| 国产精品99久久久| 色妹子一区二区| 91精品婷婷国产综合久久性色| 日韩欧美在线一区二区三区| 久久精品视频在线看| 一区二区三区蜜桃网| 日本三级亚洲精品| 国产成人av网站| 欧美日韩精品专区| 久久人人97超碰com| 一区二区三区精品视频在线| 蜜乳av一区二区三区| 成人激情视频网站| 欧美精品18+| 国产精品久久久久影院| 麻豆一区二区99久久久久| 成年人午夜久久久| 欧美一级一区二区| 一区二区三区欧美日韩| 国产一区二区免费视频| 在线视频你懂得一区二区三区| 日韩欧美一二三四区| 一区二区三区蜜桃网| 狠狠色伊人亚洲综合成人| 在线观看av一区二区| 中文字幕av在线一区二区三区| 亚洲制服丝袜av| www.av精品| 国产女主播视频一区二区| 日本不卡一二三区黄网| 色嗨嗨av一区二区三区| 国产精品久久毛片a| 国产一区二区三区观看| 日韩片之四级片| 性做久久久久久免费观看欧美| 91美女在线看| 国产精品免费看片| 成人午夜免费av| 国产天堂亚洲国产碰碰| 国产乱子伦视频一区二区三区| 欧美一区二区在线视频| 午夜视频在线观看一区二区 | 99国产精品国产精品久久| 精品日产卡一卡二卡麻豆| 日本 国产 欧美色综合| 欧美日韩午夜精品| 亚洲va天堂va国产va久| 欧美日韩视频在线一区二区| 亚洲狠狠爱一区二区三区| 欧美亚洲高清一区| 日韩av网站免费在线| 日韩三级电影网址| 国产九色精品成人porny| 久久综合九色综合欧美亚洲| 国产黄色精品网站| 国产精品第五页| 色吊一区二区三区| 午夜欧美在线一二页| 日韩欧美国产午夜精品| 老司机午夜精品| 国产亚洲短视频| 91视频国产观看| 亚洲一区欧美一区| 欧美一级欧美一级在线播放| 精品亚洲porn| 中文字幕永久在线不卡| 欧美视频第二页| 男女男精品视频网| 国产日韩精品一区| 日本丶国产丶欧美色综合| 日韩精品每日更新| 欧美激情在线免费观看| 欧美在线一二三| 精品一区二区精品| 亚洲天堂久久久久久久| 欧美巨大另类极品videosbest | 欧美特级限制片免费在线观看| 日韩黄色一级片| 国产精品欧美久久久久无广告| 欧美三级资源在线| 国产精品自产自拍| 一区二区三区中文在线观看| 日韩精品一区二区三区视频| 成人小视频免费在线观看| 亚洲成人福利片| 国产精品美女一区二区三区| 69堂精品视频| 99re免费视频精品全部| 免费在线欧美视频| 亚洲欧美日韩国产一区二区三区| 日韩亚洲欧美综合| 91国模大尺度私拍在线视频| 国产一区二区三区久久久| 亚洲午夜视频在线观看| 中文字幕在线不卡| 久久伊人蜜桃av一区二区| 91电影在线观看| 成人一级视频在线观看| 精品一区二区三区香蕉蜜桃| 亚洲美女视频在线| 欧美韩国日本一区| 欧美成人一区二区三区片免费 | 精品在线观看免费| 日韩精品一级二级| 亚洲欧美经典视频| 国产精品成人一区二区三区夜夜夜| 欧美丰满一区二区免费视频| 99久久国产综合精品色伊| 国产精品亚洲第一| 久久电影网站中文字幕| 男女性色大片免费观看一区二区 | 蜜桃一区二区三区四区| 亚洲电影视频在线| 亚洲一卡二卡三卡四卡| 亚洲免费观看在线观看| 国产精品欧美久久久久无广告 | 色婷婷av一区二区| 波多野结衣中文一区| 国产成人av影院| 国产精品亚洲午夜一区二区三区 | 国产精品12区| 国产一区不卡在线| 国产精品88888| 国产高清视频一区| 国产精品中文字幕欧美| 国产乱码精品一区二区三区五月婷| 久久精品国产99国产精品| 久久精品国产精品亚洲精品| 久久99久久久久| 国产又粗又猛又爽又黄91精品| 狠狠久久亚洲欧美| 国产精品中文字幕日韩精品| 丁香六月综合激情| 99国产欧美久久久精品| 欧美性生活大片视频| 欧美日韩一区二区电影| 制服丝袜亚洲网站| www一区二区| 亚洲国产精华液网站w| 亚洲黄色小说网站| 五月天一区二区三区| 蜜桃av一区二区| 国产成人在线视频免费播放| caoporen国产精品视频| 一本在线高清不卡dvd| 欧美午夜精品久久久久久孕妇| 91精品国产欧美一区二区成人 | 亚洲激情男女视频| 婷婷综合另类小说色区| 国产一区二区三区av电影| 97成人超碰视| 日韩欧美在线影院| 中文字幕制服丝袜成人av| 五月婷婷久久综合| 国产91精品一区二区麻豆网站 | 国产999精品久久久久久绿帽| 91日韩在线专区| 欧美一区二区大片| 国产精品毛片无遮挡高清| 性欧美疯狂xxxxbbbb| 国产激情偷乱视频一区二区三区 | 日本亚洲三级在线| 国产福利一区在线观看| 91传媒视频在线播放| 久久久高清一区二区三区| 亚洲一区二区三区美女| 国产精品亚洲一区二区三区在线 | 国产精品一区二区视频| 欧美伊人精品成人久久综合97| 精品1区2区在线观看| 一区二区三区四区五区视频在线观看 | 亚洲高清免费一级二级三级| 国产精品亚洲第一| 91麻豆精品国产91|