您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ vm_call_user_func函数代码示例

51自学网 2021-06-03 09:45:13
  C++
这篇教程C++ vm_call_user_func函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中vm_call_user_func函数的典型用法代码示例。如果您正苦于以下问题:C++ vm_call_user_func函数的具体用法?C++ vm_call_user_func怎么用?C++ vm_call_user_func使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了vm_call_user_func函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: autoTypecheck

void autoTypecheck(const Unit* unit) {  if (RuntimeOption::RepoAuthoritative ||      !RuntimeOption::AutoTypecheck ||      tl_doneAutoTypecheck ||      !unit->isHHFile()) {    return;  }  tl_doneAutoTypecheck = true;  vm_call_user_func("//HH//Client//typecheck_and_error", staticEmptyArray());}
开发者ID:191919,项目名称:hhvm,代码行数:11,


示例2: get_intercept_handler

bool EventHook::RunInterceptHandler(ActRec* ar) {  const Func* func = ar->m_func;  if (LIKELY(func->maybeIntercepted() == 0)) return true;  // Intercept only original generator / async function calls, not resumption.  if (ar->inGenerator()) return true;  Variant *h = get_intercept_handler(func->fullNameRef(),                                     &func->maybeIntercepted());  if (!h) return true;  JIT::VMRegAnchor _;  PC savePc = g_context->m_pc;  Variant doneFlag = true;  Variant called_on;  if (ar->hasThis()) {    called_on = Variant(ar->getThis());  } else if (ar->hasClass()) {    // For static methods, give handler the name of called class    called_on = Variant(const_cast<StringData*>(ar->getClass()->name()));  }  Variant intArgs =    PackedArrayInit(5)      .append(ar->m_func->fullNameRef())      .append(called_on)      .append(get_frame_args_with_ref(ar))      .append(h->asCArrRef()[1])      .appendRef(doneFlag)      .toArray();  Variant ret = vm_call_user_func(h->asCArrRef()[0], intArgs);  if (doneFlag.toBoolean()) {    Offset pcOff;    ActRec* outer = g_context->getPrevVMState(ar, &pcOff);    frame_free_locals_inl_no_hook<true>(ar, ar->m_func->numLocals());    Stack& stack = g_context->getStack();    stack.top() = (Cell*)(ar + 1);    cellDup(*ret.asCell(), *stack.allocTV());    g_context->m_fp = outer;    g_context->m_pc = outer ? outer->m_func->unit()->at(pcOff) : nullptr;    return false;  }  g_context->m_fp = ar;  g_context->m_pc = savePc;  return true;}
开发者ID:2bj,项目名称:hhvm,代码行数:53,


示例3: clearSurpriseFlag

void EventHook::DoMemoryThresholdCallback() {  clearSurpriseFlag(MemThresholdFlag);  if (!g_context->m_memThresholdCallback.isNull()) {    VMRegAnchor _;    try {      vm_call_user_func(g_context->m_memThresholdCallback, empty_array());    } catch (Object& ex) {      raise_error("Uncaught exception escaping mem Threshold callback: %s",                  ex.toString().data());    }  }}
开发者ID:Rongx,项目名称:hhvm,代码行数:12,


示例4: f_pcntl_signal_dispatch

bool f_pcntl_signal_dispatch() {  int *signaled = s_signal_handlers->signaled;  for (int i = 0; i < _NSIG; i++) {    if (signaled[i]) {      signaled[i] = 0;      if (s_signal_handlers->handlers.exists(i)) {        vm_call_user_func(s_signal_handlers->handlers[i],                               make_packed_array(i));      }    }  }  return true;}
开发者ID:SeaFlat123,项目名称:hhvm,代码行数:13,


示例5: vm_call_user_func

void IntervalTimer::RunCallbacks() {  for (auto timer : s_timer_pool->timers) {    if (timer->m_signaled.load(std::memory_order_relaxed)) {      timer->m_signaled.store(false, std::memory_order_relaxed);      try {        vm_call_user_func(timer->m_callback, init_null());      } catch (Object& ex) {        raise_error("Uncaught exception escaping IntervalTimer: %s",                    ex.toString().data());      }    }  }}
开发者ID:bjori,项目名称:hhvm,代码行数:13,


示例6: f_iterator_apply

Variant f_iterator_apply(CVarRef obj, CVarRef func,                         CArrRef params /* = null_array */) {  Object pobj = get_traversable_object_iterator(obj);  pobj->o_invoke_few_args(s_rewind, 0);  int64_t count = 0;  while (same(pobj->o_invoke_few_args(s_valid, 0), true)) {    if (!same(vm_call_user_func(func, params), true)) {      break;    }    ++count;    pobj->o_invoke_few_args(s_next, 0);  }  return count;}
开发者ID:hakanertug,项目名称:hiphop-php,代码行数:14,


示例7: HHVM_FUNCTION

bool HHVM_FUNCTION(pcntl_signal_dispatch) {  if (!signalHandlersInited()) return true;  int *signaled = s_signal_handlers->signaled;  for (int i = 0; i < _NSIG; i++) {    if (signaled[i]) {      signaled[i] = 0;      if (s_signal_handlers->handlers.exists(i)) {        vm_call_user_func(s_signal_handlers->handlers[i],                               make_packed_array(i));      }    }  }  return true;}
开发者ID:milesj,项目名称:hhvm,代码行数:14,


示例8: get_intercept_handler

bool EventHook::RunInterceptHandler(ActRec* ar) {  const Func* func = ar->m_func;  if (LIKELY(func->maybeIntercepted() == 0)) return true;  Variant *h = get_intercept_handler(func->fullNameRef(),                                     &func->maybeIntercepted());  if (!h) return true;  Transl::VMRegAnchor _;  PC savePc = g_vmContext->m_pc;  Variant doneFlag = true;  Variant called_on;  if (ar->hasThis()) {    called_on = Variant(ar->getThis());  } else if (ar->hasClass()) {    // For static methods, give handler the name of called class    called_on = Variant(const_cast<StringData*>(ar->getClass()->name()));  }  Array intArgs =    CREATE_VECTOR5(ar->m_func->fullNameRef(),                   called_on,                   get_frame_args_with_ref(ar),                   h->asCArrRef()[1],                   ref(doneFlag));  Variant ret = vm_call_user_func(h->asCArrRef()[0], intArgs);  if (doneFlag.toBoolean()) {    Offset pcOff;    ActRec* outer = g_vmContext->getPrevVMState(ar, &pcOff);    assert(outer);    frame_free_locals_inl_no_hook<true>(ar, ar->m_func->numLocals());    Stack& stack = g_vmContext->getStack();    stack.top() = (Cell*)(ar + 1);    tvDup(ret.asTypedValue(), stack.allocTV());    g_vmContext->m_fp = outer;    g_vmContext->m_pc = outer->m_func->unit()->at(pcOff);    return false;  }  g_vmContext->m_fp = ar;  g_vmContext->m_pc = savePc;  return true;}
开发者ID:Parent5446,项目名称:hiphop-php,代码行数:49,


示例9: recv_cb

 static void recv_cb(uv_udp_ext_t* udp_handle, ssize_t nread, const uv_buf_t* buf, const struct sockaddr* addr, unsigned int flags) {     auto* data = Native::data<UVUdpData>(udp_handle->udp_object_data);     auto recvCallback = data->recvCallback;     auto errorCallback = data->errorCallback;     if(nread > 0){         if(!recvCallback.isNull()){             vm_call_user_func(recvCallback,                  make_packed_array(                     udp_handle->udp_object_data,                     sock_addr((struct sockaddr *) addr),                     sock_port((struct sockaddr *) addr),                     String(buf->base, nread, CopyString),                     (int64_t) flags                 )             );         }     }     else{         if(!errorCallback.isNull()){             vm_call_user_func(errorCallback, make_packed_array(udp_handle->udp_object_data, nread, (int64_t) flags));         }     }     delete buf->base; }
开发者ID:RickySu,项目名称:hhvm-ext-uv,代码行数:24,


示例10: f_iterator_apply

Variant f_iterator_apply(const Variant& obj, const Variant& func,                         const Array& params /* = null_array */) {  CHECK_TRAVERSABLE_IMPL(obj, 0);  Object pobj = get_traversable_object_iterator(obj);  pobj->o_invoke_few_args(s_rewind, 0);  int64_t count = 0;  while (same(pobj->o_invoke_few_args(s_valid, 0), true)) {    if (!same(vm_call_user_func(func, params), true)) {      break;    }    ++count;    pobj->o_invoke_few_args(s_next, 0);  }  return count;}
开发者ID:CryQ,项目名称:hhvm,代码行数:15,


示例11: do_callback

 Variant do_callback(CVarRef cb, CArrRef args) {   assert(!m_exception);   try {     return vm_call_user_func(cb, args);   } catch (Object &e) {     ObjectData *od = e.get();     od->incRefCount();     m_exception = od;     m_phpException = true;   } catch (Exception &e) {     m_exception = e.clone();     m_phpException = false;   }   return uninit_null(); }
开发者ID:Dx3webs,项目名称:hhvm,代码行数:15,


示例12: get_intercept_handler

bool EventHook::RunInterceptHandler(ActRec* ar) {  const Func* func = ar->m_func;  if (LIKELY(func->maybeIntercepted() == 0)) return true;  Variant *h = get_intercept_handler(func->fullNameRef(),                                     &func->maybeIntercepted());  if (!h) return true;  Transl::VMRegAnchor _;  PC savePc = g_vmContext->m_pc;  Offset pcOff;  ActRec* outer = g_vmContext->getPrevVMState(ar, &pcOff);  assert(outer);  g_vmContext->m_fp = outer;  g_vmContext->m_pc = outer->m_func->unit()->at(pcOff);  try {    Variant doneFlag = true;    Variant obj = ar->hasThis() ?      Variant(Object(ar->getThis())) : uninit_null();    Array intArgs =      CREATE_VECTOR5(ar->m_func->fullNameRef(),                     obj,                     get_frame_args_with_ref(ar),                     h->asCArrRef()[1],                     ref(doneFlag));    Variant ret = vm_call_user_func(h->asCArrRef()[0], intArgs);    if (doneFlag.toBoolean()) {      frame_free_locals_inl_no_hook(ar, ar->m_func->numLocals());      Stack& stack = g_vmContext->getStack();      stack.top() = (Cell*)(ar + 1);      tvDup(ret.asTypedValue(), stack.allocTV());      return false;    }    g_vmContext->m_fp = ar;    g_vmContext->m_pc = savePc;  } catch (...) {    g_vmContext->m_fp = ar;    g_vmContext->m_pc = savePc;    g_vmContext->m_stack.top() = Stack::frameStackBase(ar);    throw;  }  return true;}
开发者ID:CyaLiven,项目名称:hiphop-php,代码行数:48,


示例13: send_cb

 static void send_cb(uv_udp_send_t* sr, int status) {     send_req_t *req = (send_req_t *) sr;     uv_udp_ext_t *udp_handle = (uv_udp_ext_t *) req->handle;     auto* data = Native::data<UVUdpData>(udp_handle->udp_object_data);     auto callback = data->sendCallback;     if(!callback.isNull()){         vm_call_user_func(callback,              make_packed_array(                 udp_handle->udp_object_data,                 sock_addr((struct sockaddr *) &req->addr),                 sock_port((struct sockaddr *) &req->addr),                 status             )         );             }     delete req->buf.base;     delete req; }
开发者ID:RickySu,项目名称:hhvm-ext-uv,代码行数:18,


示例14: hhvm_get_frame_args

void EventHook::RunUserProfiler(const ActRec* ar, int mode) {  // Don't do anything if we are running the profiling function itself  // or if we haven't set up a profiler.  if (g_vmContext->m_executingSetprofileCallback ||      g_vmContext->m_setprofileCallback.isNull()) {    return;  }  // Don't profile 86ctor, since its an implementation detail,  // and we dont guarantee to call it  if (ar->m_func->cls() && ar->m_func == ar->m_func->cls()->getCtor() &&      Func::isSpecial(ar->m_func->name())) {    return;  }  Transl::VMRegAnchor _;  ExecutingSetprofileCallbackGuard guard;  Array params;  Array frameinfo;  if (mode == ProfileEnter) {    params.append(s_enter);    frameinfo.set(s_args, hhvm_get_frame_args(ar));  } else {    params.append(s_exit);    if (!g_vmContext->m_faults.empty()) {      Fault fault = g_vmContext->m_faults.back();      if (fault.m_faultType == Fault::Type::UserException) {        frameinfo.set(s_exception, fault.m_userException);      }    } else if (!ar->m_func->info() &&               !ar->m_func->isGenerator()) {      // TODO (#1131400) This is wrong for builtins      frameinfo.set(s_return, tvAsCVarRef(g_vmContext->m_stack.topTV()));    }  }  params.append(VarNR(ar->m_func->fullName()));  params.append(frameinfo);  vm_call_user_func(g_vmContext->m_setprofileCallback, params);}
开发者ID:XciA,项目名称:hiphop-php,代码行数:41,


示例15: xml_call_handler

static Variant xml_call_handler(const req::ptr<XmlParser>& parser,                                const Variant& handler,                                const Array& args) {  if (parser && handler.toBoolean()) {    Variant retval;    if (handler.isString() && !name_contains_class(handler.toString())) {      if (!parser->object.isObject()) {        retval = invoke(handler.toString().c_str(), args, -1);      } else {        retval = parser->object.toObject()->          o_invoke(handler.toString(), args);      }    } else if (is_callable(handler)) {      vm_call_user_func(handler, args);    } else {      raise_warning("Handler is invalid");    }    return retval;  }  return init_null();}
开发者ID:simonwelsh,项目名称:hhvm,代码行数:21,


示例16: xml_call_handler

static Variant xml_call_handler(XmlParser *parser, CVarRef handler,                                CArrRef args) {  if (parser && handler) {    Variant retval;    if (handler.isString()) {      if (!parser->object.isObject()) {        retval = invoke(handler.toString().c_str(), args, -1);      } else {        retval = parser->object.toObject()->          o_invoke(handler.toString(), args);      }    } else if (handler.isArray() && handler.getArrayData()->size() == 2 &&               (handler[0].isString() || handler[0].isObject()) &&               handler[1].isString()) {      vm_call_user_func(handler, args);    } else {      raise_warning("Handler is invalid");    }    return retval;  }  return uninit_null();}
开发者ID:MarkTseng,项目名称:hiphop-php,代码行数:22,


示例17: sqlite3_do_callback

static void sqlite3_do_callback(sqlite3_context *context,                                const Variant& callback,                                int argc,                                sqlite3_value **argv,                                bool is_agg) {  Array params = Array::Create();  php_sqlite3_agg_context *agg_context = nullptr;  if (is_agg) {    agg_context = (php_sqlite3_agg_context *)sqlite3_aggregate_context      (context, sizeof(php_sqlite3_agg_context));    params.appendRef(agg_context->context);    params.append(agg_context->row_count);  }  for (int i = 0; i < argc; i++) {    params.append(get_value(argv[i]));  }  Variant ret = vm_call_user_func(callback, params);  if (!is_agg || !argv) {    /* only set the sqlite return value if we are a scalar function,     * or if we are finalizing an aggregate */    if (ret.isInteger()) {      sqlite3_result_int(context, ret.toInt64());    } else if (ret.isNull()) {      sqlite3_result_null(context);    } else if (ret.isDouble()) {      sqlite3_result_double(context, ret.toDouble());    } else {      String sret = ret.toString();      sqlite3_result_text(context, sret.data(), sret.size(), SQLITE_TRANSIENT);    }  } else {    /* we're stepping in an aggregate; the return value goes into     * the context */    agg_context->context = ret;  }}
开发者ID:nurulimamnotes,项目名称:hhvm,代码行数:37,


示例18: f_xbox_process_call_message

Variant f_xbox_process_call_message(const String& msg) {  Variant v = unserialize_from_string(msg);  if (!v.isArray()) {    raise_error("Error decoding xbox call message");  }  Array arr = v.toArray();  if (arr.size() != 2 || !arr.exists(0) || !arr.exists(1)) {    raise_error("Error decoding xbox call message");  }  Variant fn = arr.rvalAt(0);  if (fn.isArray()) {    Array farr = fn.toArray();    if (!array_is_valid_callback(farr)) {      raise_error("Error decoding xbox call message");    }  } else if (!fn.isString()) {    raise_error("Error decoding xbox call message");  }  Variant args = arr.rvalAt(1);  if (!args.isArray()) {    raise_error("Error decoding xbox call message");  }  return vm_call_user_func(fn, args.toArray());}
开发者ID:UnknownGosu,项目名称:hhvm,代码行数:24,


示例19: xml_call_handler

static Variant xml_call_handler(const req::ptr<XmlParser>& parser,                                const Variant& handler,                                const Array& args) {  if (parser && handler.toBoolean()) {    Variant retval;    if (handler.isString()) {      if (!parser->object.isObject()) {        retval = invoke(handler.toString().c_str(), args, -1);      } else {        retval = parser->object.toObject()->          o_invoke(handler.toString(), args);      }    } else if (handler.isArray() && handler.getArrayData()->size() == 2 &&               (handler.toCArrRef()[0].isString() ||                handler.toCArrRef()[0].isObject()) &&               handler.toCArrRef()[1].isString()) {      vm_call_user_func(handler, args);    } else {      raise_warning("Handler is invalid");    }    return retval;  }  return init_null();}
开发者ID:nurulimamnotes,项目名称:hhvm,代码行数:24,


示例20: idle_handle_callback

 static void idle_handle_callback(uv_idle_ext_t *idle_handle) {     auto* data = Native::data<UVNativeData>(idle_handle->idle_object_data);     vm_call_user_func(data->callback, make_packed_array(idle_handle->idle_object_data)); }
开发者ID:RickySu,项目名称:hhvm-ext-uv,代码行数:4,


示例21: heapgraphCallback

void heapgraphCallback(Array fields, const Variant& callback) {  VMRegAnchor _;  Array params;  params.append(fields);  vm_call_user_func(callback, params);}
开发者ID:neuroidss,项目名称:hhvm,代码行数:6,


示例22: check_request_surprise

size_t check_request_surprise() {  auto& info = TI();  auto& p = info.m_reqInjectionData;  auto const flags = fetchAndClearSurpriseFlags();  auto const do_timedout = (flags & TimedOutFlag) && !p.getDebuggerAttached();  auto const do_memExceeded = flags & MemExceededFlag;  auto const do_memThreshold = flags & MemThresholdFlag;  auto const do_signaled = flags & SignaledFlag;  auto const do_cpuTimedOut =    (flags & CPUTimedOutFlag) && !p.getDebuggerAttached();  auto const do_GC = flags & PendingGCFlag;  // Start with any pending exception that might be on the thread.  auto pendingException = info.m_pendingException;  info.m_pendingException = nullptr;  if (do_timedout) {    p.setCPUTimeout(0);  // Stop CPU timer so we won't time out twice.    if (pendingException) {      setSurpriseFlag(TimedOutFlag);    } else {      pendingException = generate_request_timeout_exception();    }  }  // Don't bother with the CPU timeout if we're already handling a wall timeout.  if (do_cpuTimedOut && !do_timedout) {    p.setTimeout(0);  // Stop wall timer so we won't time out twice.    if (pendingException) {      setSurpriseFlag(CPUTimedOutFlag);    } else {      pendingException = generate_request_cpu_timeout_exception();    }  }  if (do_memExceeded) {    if (pendingException) {      setSurpriseFlag(MemExceededFlag);    } else {      pendingException = generate_memory_exceeded_exception();    }  }  if (do_memThreshold) {    clearSurpriseFlag(MemThresholdFlag);    if (!g_context->m_memThresholdCallback.isNull()) {      VMRegAnchor _;      try {        vm_call_user_func(g_context->m_memThresholdCallback, empty_array());      } catch (Object& ex) {        raise_error("Uncaught exception escaping mem Threshold callback: %s",                    ex.toString().data());      }    }  }  if (do_GC) {    VMRegAnchor _;    if (RuntimeOption::EvalEnableGC) {      MM().collect("surprise");    } else {      MM().checkHeap("surprise");    }  }  if (do_signaled) {    HHVM_FN(pcntl_signal_dispatch)();  }  if (pendingException) {    pendingException->throwException();  }  return flags;}
开发者ID:c9s,项目名称:hhvm,代码行数:70,


示例23: event_http_request_cb

 static void event_http_request_cb(evhttp_request_t *request, void *data) {     EventHttpRequestResourceData *resource_data = (EventHttpRequestResourceData *) data;     evhttp_request_own((evhttp_request_t *) resource_data->getInternalResourceData());     vm_call_user_func(Object(resource_data->getCallback()), make_packed_array(Object(resource_data->getObjectData()), resource_data->getCallbackArg())); }
开发者ID:RickySu,项目名称:hhvm-ext-event,代码行数:5,


示例24: cmp_func

static int cmp_func(CVarRef v1, CVarRef v2, const void *data) {  Variant *callback = (Variant *)data;  return vm_call_user_func(*callback, make_packed_array(v1, v2)).toInt32();}
开发者ID:barkinet,项目名称:hhvm,代码行数:4,


示例25: xslt_ext_function_php

//.........这里部分代码省略.........  Array args;  // Reverse order to pop values off ctxt stack  for (int i = nargs - 2; i >= 0; i--) {    Variant arg;    obj = valuePop(ctxt);    switch (obj->type) {    case XPATH_STRING:      arg = String((char*)obj->stringval, CopyString);      break;    case XPATH_BOOLEAN:      arg = (bool)obj->boolval;      break;    case XPATH_NUMBER:      arg = (double)obj->floatval;      break;    case XPATH_NODESET:      if (type == 1) {        char *str = (char*)xmlXPathCastToString(obj);        arg = String(str, CopyString);        xmlFree(str);      } else if (type == 2) {        arg = Array::Create();        if (obj->nodesetval && obj->nodesetval->nodeNr > 0) {          for (int j = 0; j < obj->nodesetval->nodeNr; j++) {            // TODO: not sure this is the right thing to do.            xmlNodePtr node = obj->nodesetval->nodeTab[j];            if (node->type == XML_ELEMENT_NODE) {              Object element = newNode(s_DOMElement,                                       xmlCopyNode(node, /*extended*/ 1));              arg.toArrRef().append(element);            } else if (node->type == XML_ATTRIBUTE_NODE) {              Object attribute =                newNode(s_DOMAttr,                        (xmlNodePtr)xmlCopyProp(nullptr, (xmlAttrPtr)node));              arg.toArrRef().append(attribute);            } else if (node->type == XML_TEXT_NODE) {              Object text =                newNode(s_DOMText,                        (xmlNodePtr)xmlNewText(xmlNodeGetContent(node)));              arg.toArrRef().append(text);            } else {              raise_warning("Unhandled node type '%d'", node->type);              // Use a generic DOMNode as fallback for now.              Object nodeobj = newNode(s_DOMNode,                                       xmlCopyNode(node, /*extended*/ 1));              arg.toArrRef().append(nodeobj);            }          }        }      }      break;    default:      arg = String((char*)xmlXPathCastToString(obj), CopyString);    }    xmlXPathFreeObject(obj);    args.prepend(arg);  }  obj = valuePop(ctxt);  if (obj->stringval == nullptr) {    raise_warning("Handler name must be a string");    xmlXPathFreeObject(obj);    // Push an empty string to get an xslt result.    valuePush(ctxt, xmlXPathNewString((xmlChar*)""));    return;  }  String handler((char*)obj->stringval, CopyString);  xmlXPathFreeObject(obj);  if (!HHVM_FN(is_callable)(handler)) {    raise_warning("Unable to call handler %s()", handler.data());    // Push an empty string to get an xslt result.    valuePush(ctxt, xmlXPathNewString((xmlChar*)""));  } else if (intern->m_registerPhpFunctions == 2 &&             !intern->m_registered_phpfunctions.exists(handler)) {    raise_warning("Not allowed to call handler '%s()'", handler.data());    // Push an empty string to get an xslt result.    valuePush(ctxt, xmlXPathNewString((xmlChar*)""));  } else {    Variant retval = vm_call_user_func(handler, args);    if (retval.isObject() &&        retval.getObjectData()->instanceof(s_DOMNode)) {      ObjectData *retval_data = retval.asCObjRef().get();      xmlNode* nodep = Native::data<DOMNode>(retval_data)->nodep();      valuePush(ctxt, xmlXPathNewNodeSet(nodep));      intern->m_usedElements.prepend(retval);    } else if (retval.is(KindOfBoolean)) {      valuePush(ctxt, xmlXPathNewBoolean(retval.toBoolean()));    } else if (retval.isObject()) {      raise_warning("A PHP Object cannot be converted to an XPath-string");      // Push an empty string to get an xslt result.      valuePush(ctxt, xmlXPathNewString((xmlChar*)""));    } else {      String sretval = retval.toString();      valuePush(ctxt, xmlXPathNewString((xmlChar*)sretval.data()));    }  }}
开发者ID:prashant1505,项目名称:hhvm,代码行数:101,


示例26: event_http_default_cb

 static void event_http_default_cb(evhttp_request_t *request, void *data) {     EventHttpResourceData *resource_data = (EventHttpResourceData *) data;     vm_call_user_func(Object(resource_data->getDefaultCallback()), make_packed_array(makeEventHttpRequestObject(request), resource_data->getDefaultCallbackArg())); }
开发者ID:RickySu,项目名称:hhvm-ext-event,代码行数:4,


示例27: cmp_func

static int cmp_func(CVarRef v1, CVarRef v2, const void *data) {  Variant *callback = (Variant *)data;  return vm_call_user_func(*callback, CREATE_VECTOR2(v1, v2)).toInt32();}
开发者ID:vincentbdb,项目名称:hiphop-php,代码行数:4,


示例28: requestInit

 void requestInit() override {   vm_call_user_func(s_default_filters_register_func, empty_array_ref); }
开发者ID:292388900,项目名称:hhvm,代码行数:3,


示例29: get_intercept_handler

bool EventHook::RunInterceptHandler(ActRec* ar) {  const Func* func = ar->func();  if (LIKELY(func->maybeIntercepted() == 0)) return true;  // Intercept only original generator / async function calls, not resumption.  if (ar->resumed()) return true;  Variant* h = get_intercept_handler(func->fullNameStr(),                                     &func->maybeIntercepted());  if (!h) return true;  /*   * In production mode, only functions that we have assumed can be   * intercepted during static analysis should actually be   * intercepted.   */  if (RuntimeOption::RepoAuthoritative &&      !RuntimeOption::EvalJitEnableRenameFunction) {    if (!(func->attrs() & AttrInterceptable)) {      raise_error("fb_intercept was used on a non-interceptable function (%s) "                  "in RepoAuthoritative mode", func->fullName()->data());    }  }  VMRegAnchor _;  PC savePc = vmpc();  Variant doneFlag = true;  Variant called_on;  if (ar->hasThis()) {    called_on = Variant(ar->getThis());  } else if (ar->hasClass()) {    // For static methods, give handler the name of called class    called_on = Variant(const_cast<StringData*>(ar->getClass()->name()));  }  Variant intArgs =    PackedArrayInit(5)      .append(VarNR(ar->func()->fullName()))      .append(called_on)      .append(get_frame_args_with_ref(ar))      .append(h->asCArrRef()[1])      .appendRef(doneFlag)      .toArray();  Variant ret = vm_call_user_func(h->asCArrRef()[0], intArgs);  if (doneFlag.toBoolean()) {    Offset pcOff;    ActRec* outer = g_context->getPrevVMState(ar, &pcOff);    frame_free_locals_inl_no_hook<true>(ar, ar->func()->numLocals());    Stack& stack = vmStack();    stack.top() = (Cell*)(ar + 1);    cellDup(*ret.asCell(), *stack.allocTV());    vmfp() = outer;    vmpc() = outer ? outer->func()->unit()->at(pcOff) : nullptr;    return false;  }  vmfp() = ar;  vmpc() = savePc;  return true;}
开发者ID:andrewDDC,项目名称:hhvm,代码行数:66,


示例30: requestInit

 virtual void requestInit() {   vm_call_user_func(s_default_filters_register_func, empty_array_ref); }
开发者ID:AmritanshuRanjan,项目名称:hhvm,代码行数:3,



注:本文中的vm_call_user_func函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ vm_deallocate函数代码示例
C++ vm_angles_2_matrix函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。