Get rid of ext_hhvm_noinline.cpp, part 2

unserialize() and call_user_func_array() were straightforward. They were
called from all over the runtime, but I renamed those implementations
and codemodded the runtime.

The is_* functions were only ever being called by the CVarRef signature,
so I deleted all the other ones (same for f_gettype). Only some of the
is_* functions were being called from the runtime, so I made inline
versions of those without the f_ prefix.
Esse commit está contido em:
Owen Yamauchi
2013-03-29 13:04:32 -07:00
commit de Sara Golemon
commit 9c453b1ad0
59 arquivos alterados com 880 adições e 1142 exclusões
+1 -1
Ver Arquivo
@@ -5976,7 +5976,7 @@ void EmitterVisitor::emitFuncCall(Emitter& e, FunctionCallPtr node) {
emitBuiltinCallArg(e, (*params)[i], i, byRef);
}
for (; i < func->getMaxParamCount(); i++) {
Variant v = f_unserialize(func->getParamDefault(i));
Variant v = unserialize_from_string(func->getParamDefault(i));
TypePtr t = func->getParamType(i);
emitBuiltinDefaultArg(e, v, t->getDataType(), i);
}
+2 -3
Ver Arquivo
@@ -423,9 +423,8 @@ int64_t ScalarExpression::getHash() const {
Variant ScalarExpression::getVariant() const {
if (!m_serializedValue.empty()) {
Variant ret = f_unserialize
(String(m_serializedValue.data(),
m_serializedValue.size(), AttachLiteral));
Variant ret = unserialize_from_buffer(
m_serializedValue.data(), m_serializedValue.size());
if (ret.isDouble()) {
return m_dval;
}
+1 -2
Ver Arquivo
@@ -808,8 +808,7 @@ void ArrayUtil::InitScalarArrays(Array arrs[], int nArrs,
if (uncompressed == nullptr) {
throw Exception("Bad scalarArrayData %p", scalarArrayData);
}
String s = String(uncompressed, len, AttachString);
Variant v(f_unserialize(s));
Variant v(unserialize_from_buffer(uncompressed, len));
assert(v.isArray());
Array scalarArrays = v;
assert(scalarArrays.size() == nArrs);
+2 -2
Ver Arquivo
@@ -241,7 +241,7 @@ struct ElmUCompare {
const Variant* callback;
bool operator()(ElmT left, ElmT right) const {
Variant ret =
f_call_user_func_array(
vm_call_user_func(
*callback,
CREATE_VECTOR2(acc.getValue(left), acc.getValue(right))
);
@@ -270,7 +270,7 @@ struct ElmUCompare {
return false;
}
Variant ret2 =
f_call_user_func_array(
vm_call_user_func(
*callback,
CREATE_VECTOR2(acc.getValue(right), acc.getValue(left))
);
+3 -8
Ver Arquivo
@@ -344,7 +344,7 @@ vm_decode_function(CVarRef function,
this_ = function.asCObjRef().get();
cls = nullptr;
const HPHP::VM::Func *f = this_->getVMClass()->lookupMethod(invokeStr);
if (f != nullptr &&
if (f != nullptr &&
((f->attrs() & HPHP::VM::AttrStatic) && !f->isClosureBody())) {
// If __invoke is static, invoke it as such
cls = this_->getVMClass();
@@ -375,11 +375,6 @@ Variant vm_call_user_func(CVarRef function, CArrRef params,
return ret;
}
Variant f_call_user_func_array(CVarRef function, CArrRef params,
bool bound /* = false */) {
return vm_call_user_func(function, params, bound);
}
Variant invoke(CStrRef function, CArrRef params, strhash_t hash /* = -1 */,
bool tryInterp /* = true */, bool fatal /* = true */) {
VM::Func* func = VM::Unit::loadFunc(function.get());
@@ -1355,7 +1350,7 @@ AutoloadHandler::Result AutoloadHandler::loadFromMap(CStrRef name,
// - true means the map was updated. try again
// - false means we should stop applying autoloaders (only affects classes)
// - anything else means keep going
Variant action = f_call_user_func_array(func, CREATE_VECTOR2(kind, name));
Variant action = vm_call_user_func(func, CREATE_VECTOR2(kind, name));
tva = action.getTypedAccessor();
if (Variant::GetAccessorType(tva) == KindOfBoolean) {
if (Variant::GetBoolean(tva)) continue;
@@ -1410,7 +1405,7 @@ bool AutoloadHandler::invokeHandler(CStrRef className,
Object autoloadException;
for (ArrayIter iter(m_handlers); iter; ++iter) {
try {
f_call_user_func_array(iter.second(), params);
vm_call_user_func(iter.second(), params);
} catch (Object& ex) {
assert(ex.instanceof(SystemLib::s_ExceptionClass));
if (autoloadException.isNull()) {
+15 -4
Ver Arquivo
@@ -293,6 +293,20 @@ inline Array setNull(Array &v) { v.reset(); return Array();}
inline String setNull(String &v) { v.reset(); return String();}
inline Variant unset(Object &v) { v.reset(); return uninit_null();}
inline Variant unset(Array &v) { v.reset(); return uninit_null();}
///////////////////////////////////////////////////////////////////////////////
// type testing
inline bool is_null(CVarRef v) { return v.isNull();}
inline bool is_bool(CVarRef v) { return v.is(KindOfBoolean);}
inline bool is_int(CVarRef v) { return v.isInteger();}
inline bool is_double(CVarRef v) { return v.is(KindOfDouble);}
inline bool is_string(CVarRef v) { return v.isString();}
inline bool is_array(CVarRef v) { return v.is(KindOfArray);}
inline bool is_object(CVarRef var) {
return var.is(KindOfObject) && !var.isResource();
}
///////////////////////////////////////////////////////////////////////////////
// special variable contexts
@@ -349,9 +363,6 @@ bool array_is_valid_callback(CArrRef arr);
bool class_exists(CStrRef class_name, bool autoload = true);
String get_static_class_name(CVarRef objOrClassName);
Variant f_call_user_func_array(CVarRef function, CArrRef params,
bool bound = false);
const HPHP::VM::Func*
vm_decode_function(CVarRef function,
HPHP::VM::ActRec* ar,
@@ -488,7 +499,7 @@ inline Variant unserialize_from_buffer(const char* str, int len) {
return unserialize_ex(str, len, VariableUnserializer::Serialize);
}
inline Variant f_unserialize(CStrRef str) {
inline Variant unserialize_from_string(CStrRef str) {
return unserialize_from_buffer(str.data(), str.size());
}
+5 -5
Ver Arquivo
@@ -327,7 +327,7 @@ bool BaseExecutionContext::obFlush() {
} else {
try {
Variant tout =
f_call_user_func_array(last->handler,
vm_call_user_func(last->handler,
CREATE_VECTOR2(last->oss.detach(), flag));
prev->oss.append(tout.toString());
last->oss.reset();
@@ -341,7 +341,7 @@ bool BaseExecutionContext::obFlush() {
if (!last->handler.isNull()) {
try {
Variant tout =
f_call_user_func_array(last->handler,
vm_call_user_func(last->handler,
CREATE_VECTOR2(last->oss.detach(), flag));
String sout = tout.toString();
writeStdout(sout.data(), sout.size());
@@ -528,7 +528,7 @@ void BaseExecutionContext::onRequestShutdown() {
void BaseExecutionContext::executeFunctions(CArrRef funcs) {
for (ArrayIter iter(funcs); iter; ++iter) {
Array callback = iter.second();
f_call_user_func_array(callback["name"], callback["args"]);
vm_call_user_func(callback["name"], callback["args"]);
}
}
@@ -688,7 +688,7 @@ bool BaseExecutionContext::callUserErrorHandler(const Exception &e, int errnum,
}
try {
ErrorStateHelper esh(this, ExecutingUserHandler);
if (!same(f_call_user_func_array
if (!same(vm_call_user_func
(m_userErrorHandlers.back().first,
CREATE_VECTOR6(errnum, String(e.getMessage()), errfile,
errline, "", backtrace)),
@@ -746,7 +746,7 @@ bool BaseExecutionContext::onUnhandledException(Object e) {
if (e.instanceof(SystemLib::s_ExceptionClass)) {
// user thrown exception
if (!m_userExceptionHandlers.empty()) {
if (!same(f_call_user_func_array
if (!same(vm_call_user_func
(m_userExceptionHandlers.back(),
CREATE_VECTOR1(e)),
false)) {
+2 -2
Ver Arquivo
@@ -731,7 +731,7 @@ static String preg_do_repl_func(CVarRef function, CStrRef subject,
Array args;
args.set(0, subpats);
return f_call_user_func_array(function, args);
return vm_call_user_func(function, args);
}
static bool preg_get_backref(const char **str, int *backref) {
@@ -946,7 +946,7 @@ static String php_pcre_replace(CStrRef pattern, CStrRef subject,
}
*walkbuf = '\0';
if (eval) {
eval_result = f_call_user_func_array(eval_fn, params);
eval_result = vm_call_user_func(eval_fn, params);
memcpy(result + result_len, eval_result.data(), eval_result.size());
result_len += eval_result.size();
} else {
+1 -1
Ver Arquivo
@@ -287,7 +287,7 @@ static void handle_exception_helper(bool& ret,
f_is_callable(context->getExitCallback())) {
Array stack = e.getBackTrace();
Array argv = CREATE_VECTOR2(e.ExitCode, stack);
f_call_user_func_array(context->getExitCallback(), argv);
vm_call_user_func(context->getExitCallback(), argv);
}
} catch (const PhpFileDoesNotExistException &e) {
ret = false;
+1 -1
Ver Arquivo
@@ -161,7 +161,7 @@ void HttpProtocol::PrepareSystemVariables(Transport *transport,
bool ret = transport->getFiles(files);
if (ret) {
g->GV(_FILES) = f_unserialize(files);
g->GV(_FILES) = unserialize_from_string(files);
}
}
CopyParams(request, g->GV(_POST));
+1 -1
Ver Arquivo
@@ -742,7 +742,7 @@ void Transport::sendRawLocked(void *data, int size, int code /* = 200 */,
// flush() triggers php's recursion guard
// the recursion guard calls back into m_headerCallback
m_headerCallbackDone = true;
f_call_user_func_array(m_headerCallback, null_array);
vm_call_user_func(m_headerCallback, null_array);
}
// compression handling
+4 -4
Ver Arquivo
@@ -264,7 +264,7 @@ bool XboxServer::SendMessage(CStrRef message, Variant &ret, int timeout_ms,
if (code > 0) {
ret.set("code", code);
if (code == 200) {
ret.set("response", f_unserialize(response));
ret.set("response", unserialize_from_string(response));
} else {
ret.set("error", response);
}
@@ -296,7 +296,7 @@ bool XboxServer::SendMessage(CStrRef message, Variant &ret, int timeout_ms,
String sresponse(response, len, AttachString);
ret.set("code", code);
if (code == 200) {
ret.set("response", f_unserialize(sresponse));
ret.set("response", unserialize_from_string(sresponse));
} else {
ret.set("error", sresponse);
}
@@ -341,7 +341,7 @@ bool XboxServer::PostMessage(CStrRef message,
int len = 0;
char *response = http->recv(len);
String sresponse(response, len, AttachString);
if (code == 200 && same(f_unserialize(sresponse), true)) {
if (code == 200 && same(unserialize_from_string(sresponse), true)) {
return true;
}
}
@@ -424,7 +424,7 @@ int XboxServer::TaskResult(CObjRef task, int timeout_ms, Variant &ret) {
int code = 0;
String response = ptask->getJob()->getResults(code, timeout_ms);
if (code == 200) {
ret = f_unserialize(response);
ret = unserialize_from_string(response);
} else {
ret = response;
}
+1 -1
Ver Arquivo
@@ -3298,7 +3298,7 @@ Variant Variant::share(bool save) const {
obj->o_set(s_s, f_serialize(*this));
return obj;
} else {
return f_unserialize(m_data.pobj->o_get(s_s));
return unserialize_from_string(m_data.pobj->o_get(s_s));
}
break;
default:
+2 -2
Ver Arquivo
@@ -83,7 +83,7 @@ void AsioSession::setOnFailedCallback(ObjectData* on_failed_callback) {
void AsioSession::onFailed(CObjRef exception) {
if (m_onFailedCallback) {
try {
f_call_user_func_array(m_onFailedCallback, Array::Create(exception));
vm_call_user_func(m_onFailedCallback, Array::Create(exception));
} catch (Object callback_exception) {
raise_warning("[asio] Ignoring exception thrown by onFailed callback");
}
@@ -105,7 +105,7 @@ void AsioSession::setOnStartedCallback(ObjectData* on_started_callback) {
void AsioSession::onStarted(CObjRef wait_handle) {
assert(m_onStartedCallback);
try {
f_call_user_func_array(m_onStartedCallback, Array::Create(wait_handle));
vm_call_user_func(m_onStartedCallback, Array::Create(wait_handle));
} catch (Object callback_exception) {
raise_warning("[asio] Ignoring exception thrown by onStarted callback");
}
+12 -12
Ver Arquivo
@@ -480,7 +480,7 @@ void const_load_impl(struct cache_info *info,
}
}
}
// f_unserialize object is extreamly slow here;
// unserialize_from_string object is extremely slow here;
// currently turned off: no objects in haste_maps.
if (false) {
int count = count_items(objects, 4);
@@ -489,7 +489,7 @@ void const_load_impl(struct cache_info *info,
for (int i = 0; i < count; i++, p += 4) {
String key(*p, (int)(int64_t)*(p+1), CopyString);
String value(*(p+2), (int)(int64_t)*(p+3), AttachLiteral);
const_load_set(key, f_unserialize(value));
const_load_set(key, unserialize_from_string(value));
}
}
}
@@ -517,9 +517,9 @@ void const_load_impl(struct cache_info *info,
for (int i = 0; i < count; i++, p += 4) {
String key(*p, (int)(int64_t)*(p+1), CopyString);
String value(*(p+2), (int)(int64_t)*(p+3), AttachLiteral);
Variant v = f_unserialize(value);
Variant v = unserialize_from_string(value);
if (same(v, false)) {
throw Exception("bad apc archive, f_unserialize failed");
throw Exception("bad apc archive, unserialize_from_string failed");
}
const_load_set(key, v);
}
@@ -636,11 +636,11 @@ void apc_load_impl(struct cache_info *info,
item.len = (int)(int64_t)*(p+1);
String value(*(p+2), (int)(int64_t)*(p+3), AttachLiteral);
Variant v = f_unserialize(value);
Variant v = unserialize_from_string(value);
if (same(v, false)) {
// we can't possibly get here if it was a boolean "false" that's
// supposed to be serialized as a char
throw Exception("bad apc archive, f_unserialize failed");
throw Exception("bad apc archive, unserialize_from_string failed");
}
s.constructPrime(v, item);
}
@@ -723,7 +723,7 @@ void const_load_impl_compressed
assert((p - decoded) == len);
}
}
// f_unserialize object is extreamly slow here;
// unserialize_from_string object is extremely slow here;
// currently turned off: no objects in haste_maps.
if (false) {
int count = object_lens[0] / 2;
@@ -737,7 +737,7 @@ void const_load_impl_compressed
String key(p, object_lens[i + i + 2], CopyString);
p += object_lens[i + i + 2] + 1;
String value(p, object_lens[i + i + 3], AttachLiteral);
const_load_set(key, f_unserialize(value));
const_load_set(key, unserialize_from_string(value));
p += object_lens[i + i + 3] + 1;
}
assert((p - decoded) == len);
@@ -778,9 +778,9 @@ void const_load_impl_compressed
String key(p, other_lens[i + i + 2], CopyString);
p += other_lens[i + i + 2] + 1;
String value(p, other_lens[i + i + 3], AttachLiteral);
Variant v = f_unserialize(value);
Variant v = unserialize_from_string(value);
if (same(v, false)) {
throw Exception("bad apc archive, f_unserialize failed");
throw Exception("bad apc archive, unserialize_from_string failed");
}
const_load_set(key, v);
p += other_lens[i + i + 3] + 1;
@@ -939,11 +939,11 @@ void apc_load_impl_compressed
item.len = other_lens[i + i + 2];
p += other_lens[i + i + 2] + 1; // skip \0
String value(p, other_lens[i + i + 3], AttachLiteral);
Variant v = f_unserialize(value);
Variant v = unserialize_from_string(value);
if (same(v, false)) {
// we can't possibly get here if it was a boolean "false" that's
// supposed to be serialized as a char
throw Exception("bad apc archive, f_unserialize failed");
throw Exception("bad apc archive, unserialize_from_string failed");
}
s.constructPrime(v, item);
p += other_lens[i + i + 3] + 1; // skip \0
+1 -1
Ver Arquivo
@@ -780,7 +780,7 @@ Variant f_range(CVarRef low, CVarRef high, CVarRef step /* = 1 */) {
static int cmp_func(CVarRef v1, CVarRef v2, const void *data) {
Variant *callback = (Variant *)data;
return f_call_user_func_array(*callback, CREATE_VECTOR2(v1, v2));
return vm_call_user_func(*callback, CREATE_VECTOR2(v1, v2));
}
#define COMMA ,
+1 -1
Ver Arquivo
@@ -594,7 +594,7 @@ public:
Variant do_callback(CVarRef cb, CArrRef args) {
assert(!m_exception);
try {
return f_call_user_func_array(cb, args);
return vm_call_user_func(cb, args);
} catch (Object &e) {
ObjectData *od = e.get();
od->incRefCount();
+1 -1
Ver Arquivo
@@ -5135,7 +5135,7 @@ static void dom_xpath_ext_function_php(xmlXPathParserContextPtr ctxt,
valuePush(ctxt, xmlXPathNewString((xmlChar *)""));
raise_warning("Not allowed to call handler '%s()'.", handler.data());
} else {
Variant retval = f_call_user_func_array(handler, args);
Variant retval = vm_call_user_func(handler, args);
if (retval.instanceof(c_DOMNode::s_cls)) {
if (intern->m_node_list.empty()) {
intern->m_node_list = Array::Create();
+4 -4
Ver Arquivo
@@ -1408,9 +1408,9 @@ Variant f_fb_stubout_intercept_handler(CStrRef name, CVarRef obj,
CArrRef params, CVarRef data,
VRefParam done) {
if (obj.isNull()) {
return f_call_user_func_array(data, params);
return vm_call_user_func(data, params);
}
return f_call_user_func_array(CREATE_VECTOR2(obj, data), params);
return vm_call_user_func(CREATE_VECTOR2(obj, data), params);
}
Variant f_fb_rpc_intercept_handler(CStrRef name, CVarRef obj, CArrRef params,
@@ -1507,14 +1507,14 @@ Variant f_fb_call_user_func_safe_return(int _argc, CVarRef function,
CVarRef def,
CArrRef _argv /* = null_array */) {
if (f_is_callable(function)) {
return f_call_user_func_array(function, _argv);
return vm_call_user_func(function, _argv);
}
return def;
}
Array f_fb_call_user_func_array_safe(CVarRef function, CArrRef params) {
if (f_is_callable(function)) {
return CREATE_VECTOR2(true, f_call_user_func_array(function, params));
return CREATE_VECTOR2(true, vm_call_user_func(function, params));
}
return CREATE_VECTOR2(false, uninit_null());
}
+10 -6
Ver Arquivo
@@ -125,7 +125,11 @@ bool f_is_callable(CVarRef v, bool syntax /* = false */,
}
Variant f_call_user_func(int _argc, CVarRef function, CArrRef _argv /* = null_array */) {
return f_call_user_func_array(function, _argv);
return vm_call_user_func(function, _argv);
}
Variant f_call_user_func_array(CVarRef function, CArrRef params) {
return vm_call_user_func(function, params);
}
Object f_call_user_func_array_async(CVarRef function, CArrRef params) {
@@ -154,8 +158,8 @@ Variant f_end_user_func_async(CObjRef handle,
String f_call_user_func_serialized(CStrRef input) {
Variant out;
try {
Variant in = f_unserialize(input);
out.set("ret", f_call_user_func_array(in["func"], in["args"]));
Variant in = unserialize_from_string(input);
out.set("ret", vm_call_user_func(in["func"], in["args"]));
} catch (Object &e) {
out.set("exception", e);
}
@@ -215,7 +219,7 @@ Variant f_call_user_func_rpc(int _argc, CStrRef host, int port, CStrRef auth,
// This double decoding can be avoided by modifying RPC server to directly
// take PHP serialization format.
Variant res = f_unserialize(f_json_decode(sresponse));
Variant res = unserialize_from_string(f_json_decode(sresponse));
if (!res.isArray()) {
raise_error("Internal protocol error");
return false;
@@ -232,9 +236,9 @@ Variant f_forward_static_call_array(CVarRef function, CArrRef params) {
}
Variant f_forward_static_call(int _argc, CVarRef function, CArrRef _argv /* = null_array */) {
// Setting the bound parameter to true tells f_call_user_func_array()
// Setting the bound parameter to true tells vm_call_user_func()
// propogate the current late bound class
return f_call_user_func_array(function, _argv, true);
return vm_call_user_func(function, _argv, true);
}
Variant f_get_called_class() {
+51
Ver Arquivo
@@ -171,6 +171,57 @@ TypedValue* fg_is_callable(HPHP::VM::ActRec *ar) {
/*
HPHP::Variant HPHP::f_call_user_func_array(HPHP::Variant const&, HPHP::Array const&)
_ZN4HPHP22f_call_user_func_arrayERKNS_7VariantERKNS_5ArrayE
(return value) => rax
_rv => rdi
function => rsi
params => rdx
*/
TypedValue* fh_call_user_func_array(TypedValue* _rv, TypedValue* function, Value* params) asm("_ZN4HPHP22f_call_user_func_arrayERKNS_7VariantERKNS_5ArrayE");
TypedValue * fg1_call_user_func_array(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
TypedValue * fg1_call_user_func_array(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
tvCastToArrayInPlace(args-1);
fh_call_user_func_array((rv), (args-0), &args[-1].m_data);
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
return rv;
}
TypedValue* fg_call_user_func_array(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 2LL) {
if ((args-1)->m_type == KindOfArray) {
fh_call_user_func_array((&(rv)), (args-0), &args[-1].m_data);
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 2);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
fg1_call_user_func_array(&rv, ar, count);
frame_free_locals_no_this_inl(ar, 2);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
}
} else {
throw_wrong_arguments_nr("call_user_func_array", count, 2, 2, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 2);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
HPHP::Variant HPHP::f_call_user_func(int, HPHP::Variant const&, HPHP::Array const&)
_ZN4HPHP16f_call_user_funcEiRKNS_7VariantERKNS_5ArrayE
+12
Ver Arquivo
@@ -49,6 +49,18 @@ name => rdx
bool fh_is_callable(TypedValue* v, bool syntax, TypedValue* name) asm("_ZN4HPHP13f_is_callableERKNS_7VariantEbRKNS_14VRefParamValueE");
/*
HPHP::Variant HPHP::f_call_user_func_array(HPHP::Variant const&, HPHP::Array const&)
_ZN4HPHP22f_call_user_func_arrayERKNS_7VariantERKNS_5ArrayE
(return value) => rax
_rv => rdi
function => rsi
params => rdx
*/
TypedValue* fh_call_user_func_array(TypedValue* _rv, TypedValue* function, Value* params) asm("_ZN4HPHP22f_call_user_func_arrayERKNS_7VariantERKNS_5ArrayE");
/*
HPHP::Variant HPHP::f_call_user_func(int, HPHP::Variant const&, HPHP::Array const&)
_ZN4HPHP16f_call_user_funcEiRKNS_7VariantERKNS_5ArrayE
+1
Ver Arquivo
@@ -28,6 +28,7 @@ bool f_function_exists(CStrRef function_name, bool autoload = true);
bool f_is_callable(CVarRef v, bool syntax = false,
VRefParam name = uninit_null());
Variant f_call_user_func(int _argc, CVarRef function, CArrRef _argv = null_array);
Variant f_call_user_func_array(CVarRef function, CArrRef params);
Object f_call_user_func_array_async(CVarRef function, CArrRef params);
Object f_call_user_func_async(int _argc, CVarRef function, CArrRef _argv = null_array);
Variant f_check_user_func_async(CVarRef handles, int timeout = -1);
+1 -1
Ver Arquivo
@@ -688,7 +688,7 @@ Variant f_shm_get_var(int64_t shm_identifier, int64_t variable_key) {
sysvshm_chunk *shm_var =
(sysvshm_chunk*)((char *)shm_list_ptr->ptr + shm_varpos);
return f_unserialize(String(&shm_var->mem, shm_var->length, AttachLiteral));
return unserialize_from_buffer(&shm_var->mem, shm_var->length);
}
bool f_shm_has_var(int64_t shm_identifier, int64_t variable_key) {
+1 -1
Ver Arquivo
@@ -482,7 +482,7 @@ static int _ldap_rebind_proc(LDAP *ldap, const char *url, ber_tag_t req,
}
/* callback */
Variant ret = f_call_user_func_array
Variant ret = vm_call_user_func
(ld->rebindproc, CREATE_VECTOR2(Object(ld), String(url, CopyString)));
return ret.toInt64();
}
+1 -2
Ver Arquivo
@@ -152,8 +152,7 @@ Variant static memcache_fetch_from_storage(const char *payload,
}
if (flags & MMC_SERIALIZED) {
ret = f_unserialize(String(payload, payload_len, AttachLiteral));
// raise_notice("unable to unserialize data");
ret = unserialize_from_buffer(payload, payload_len);
} else {
ret = String(payload, payload_len, CopyString);
}
+3 -3
Ver Arquivo
@@ -315,7 +315,7 @@ bool c_Memcached::t_getdelayedbykey(CStrRef server_key, CArrRef keys,
MemcachedResultWrapper result(&m_impl->memcached); Array item;
while (fetchImpl(result.value, item)) {
f_call_user_func_array(value_cb, CREATE_VECTOR2(Variant(this), item));
vm_call_user_func(value_cb, CREATE_VECTOR2(Variant(this), item));
}
if (m_impl->rescode != q_Memcached$$RES_END) return false;
@@ -948,7 +948,7 @@ bool c_Memcached::toObject(Variant& value, const memcached_result_st &result) {
value = f_json_decode(decompPayload);
break;
case MEMC_VAL_IS_SERIALIZED:
value = f_unserialize(decompPayload);
value = unserialize_from_string(decompPayload);
break;
case MEMC_VAL_IS_IGBINARY:
raise_warning("could not unserialize value, no igbinary support");
@@ -965,7 +965,7 @@ memcached_return c_Memcached::doCacheCallback(CVarRef callback, CStrRef key,
Array params(ArrayInit(3).set(Variant(this))
.set(key)
.setRef(value).create());
if (!f_call_user_func_array(callback, params)) {
if (!vm_call_user_func(callback, params)) {
return MEMCACHED_NOTFOUND;
}
+2 -2
Ver Arquivo
@@ -1938,7 +1938,7 @@ static bool do_fetch(sp_PDOStatement stmt, bool do_bind, Variant &ret,
ret.toObject()->o_set(name, val);
} else {
#ifdef MBO_0
ret = f_unserialize(val);
ret = unserialize_from_string(val);
if (same(ret, false)) {
pdo_raise_impl_error(stmt->dbh, stmt, "HY000",
"cannot unserialize data");
@@ -1977,7 +1977,7 @@ static bool do_fetch(sp_PDOStatement stmt, bool do_bind, Variant &ret,
break;
case PDO_FETCH_FUNC:
ret = f_call_user_func_array(stmt->fetch.func, stmt->fetch.values);
ret = vm_call_user_func(stmt->fetch.func, stmt->fetch.values);
break;
default:
+1 -1
Ver Arquivo
@@ -305,7 +305,7 @@ bool f_pcntl_signal_dispatch() {
if (signaled[i]) {
signaled[i] = 0;
if (s_signal_handlers->handlers.exists(i)) {
f_call_user_func_array(s_signal_handlers->handlers[i],
vm_call_user_func(s_signal_handlers->handlers[i],
CREATE_VECTOR1(i));
}
}
+1 -1
Ver Arquivo
@@ -260,7 +260,7 @@ static void set_function_info(Array &ret, const ClassInfo::MethodInfo *info,
}
param.set(s_default, v);
} else {
param.set(s_default, f_unserialize(p->value));
param.set(s_default, unserialize_from_string(p->value));
}
param.set(s_defaultText, defText);
}
+2 -2
Ver Arquivo
@@ -182,7 +182,7 @@ int64_t f_xbox_task_result(CObjRef task, int64_t timeout_ms, VRefParam ret) {
}
Variant f_xbox_process_call_message(CStrRef msg) {
Variant v = f_unserialize(msg);
Variant v = unserialize_from_string(msg);
if (!v.isArray()) {
raise_error("Error decoding xbox call message");
}
@@ -203,7 +203,7 @@ Variant f_xbox_process_call_message(CStrRef msg) {
if (!args.isArray()) {
raise_error("Error decoding xbox call message");
}
return f_call_user_func_array(fn, args.toArray());
return vm_call_user_func(fn, args.toArray());
}
int64_t f_xbox_get_thread_timeout() {
+6 -6
Ver Arquivo
@@ -709,20 +709,20 @@ public:
UserSessionModule() : SessionModule("user") {}
virtual bool open(const char *save_path, const char *session_name) {
return f_call_user_func_array
return vm_call_user_func
(String(PS(ps_open)),
CREATE_VECTOR2(String(save_path, CopyString),
String(session_name, CopyString)));
}
virtual bool close() {
return f_call_user_func_array
return vm_call_user_func
(String(PS(ps_close)),
Array::Create());
}
virtual bool read(const char *key, String &value) {
Variant ret = f_call_user_func_array
Variant ret = vm_call_user_func
(String(PS(ps_read)),
CREATE_VECTOR1(String(key, CopyString)));
if (ret.isString()) {
@@ -733,19 +733,19 @@ public:
}
virtual bool write(const char *key, CStrRef value) {
return f_call_user_func_array
return vm_call_user_func
(String(PS(ps_write)),
CREATE_VECTOR2(String(key, CopyString), value));
}
virtual bool destroy(const char *key) {
return f_call_user_func_array
return vm_call_user_func
(String(PS(ps_destroy)),
CREATE_VECTOR1(String(key, CopyString)));
}
virtual bool gc(int maxlifetime, int *nrdels) {
return f_call_user_func_array
return vm_call_user_func
(String(PS(ps_gc)),
CREATE_VECTOR1((int64_t)maxlifetime));
}
+4 -4
Ver Arquivo
@@ -2147,10 +2147,10 @@ void c_SoapServer::t_handle(CStrRef request /* = null_string */) {
if (valid_function(this, soap_obj, fn_name)) {
try {
if (m_type == SOAP_CLASS || m_type == SOAP_OBJECT) {
h->retval = f_call_user_func_array
h->retval = vm_call_user_func
(CREATE_VECTOR2(soap_obj, fn_name), h->parameters);
} else {
h->retval = f_call_user_func_array(fn_name, h->parameters);
h->retval = vm_call_user_func(fn_name, h->parameters);
}
} catch (Exception &e) {
send_soap_server_fault(function, e, h);
@@ -2172,10 +2172,10 @@ void c_SoapServer::t_handle(CStrRef request /* = null_string */) {
if (valid_function(this, soap_obj, fn_name)) {
try {
if (m_type == SOAP_CLASS || m_type == SOAP_OBJECT) {
retval = f_call_user_func_array
retval = vm_call_user_func
(CREATE_VECTOR2(soap_obj, fn_name), params);
} else {
retval = f_call_user_func_array(fn_name, params);
retval = vm_call_user_func(fn_name, params);
}
} catch (Exception &e) {
send_soap_server_fault(function, e, NULL);
+1 -1
Ver Arquivo
@@ -217,7 +217,7 @@ Variant f_iterator_apply(CVarRef obj, CVarRef func,
pobj->o_invoke("rewind", null_array, -1);
int64_t count = 0;
while (same(pobj->o_invoke("valid", null_array, -1), true)) {
if (!same(f_call_user_func_array(func, params), true)) {
if (!same(vm_call_user_func(func, params), true)) {
break;
}
++count;
+1 -1
Ver Arquivo
@@ -107,7 +107,7 @@ static void sqlite3_do_callback(sqlite3_context *context, CVarRef callback,
for (int i = 0; i < argc; i++) {
params.append(get_value(argv[i]));
}
Variant ret = f_call_user_func_array(callback, params);
Variant ret = vm_call_user_func(callback, params);
if (!is_agg || !argv) {
/* only set the sqlite return value if we are a scalar function,
+58 -2
Ver Arquivo
@@ -68,8 +68,60 @@ bool f_settype(VRefParam var, CStrRef type) {
return true;
}
bool f_is_object(CVarRef var) {
return var.is(KindOfObject) && !var.isResource();
bool f_is_bool(CVarRef v) {
return is_bool(v);
}
bool f_is_int(CVarRef v) {
return is_int(v);
}
bool f_is_integer(CVarRef v) {
return is_int(v);
}
bool f_is_long(CVarRef v) {
return is_int(v);
}
bool f_is_double(CVarRef v) {
return is_double(v);
}
bool f_is_float(CVarRef v) {
return is_double(v);
}
bool f_is_numeric(CVarRef v) {
return v.isNumeric(true);
}
bool f_is_real(CVarRef v) {
return is_double(v);
}
bool f_is_string(CVarRef v) {
return is_string(v);
}
bool f_is_scalar(CVarRef v) {
return v.isScalar();
}
bool f_is_array(CVarRef v) {
return is_array(v);
}
bool f_is_object(CVarRef v) {
return is_object(v);
}
bool f_is_resource(CVarRef v) {
return v.isResource();
}
bool f_is_null(CVarRef v) {
return is_null(v);
}
///////////////////////////////////////////////////////////////////////////////
@@ -130,6 +182,10 @@ void f_debug_zval_dump(CVarRef variable) {
vs.serialize(variable, false);
}
Variant f_unserialize(CStrRef str) {
return unserialize_from_string(str);
}
///////////////////////////////////////////////////////////////////////////////
// variable table
+479
Ver Arquivo
@@ -24,6 +24,369 @@
namespace HPHP {
/*
bool HPHP::f_is_bool(HPHP::Variant const&)
_ZN4HPHP9f_is_boolERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_bool(TypedValue* var) asm("_ZN4HPHP9f_is_boolERKNS_7VariantE");
TypedValue* fg_is_bool(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_bool((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_bool", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::f_is_int(HPHP::Variant const&)
_ZN4HPHP8f_is_intERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_int(TypedValue* var) asm("_ZN4HPHP8f_is_intERKNS_7VariantE");
TypedValue* fg_is_int(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_int((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_int", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::f_is_integer(HPHP::Variant const&)
_ZN4HPHP12f_is_integerERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_integer(TypedValue* var) asm("_ZN4HPHP12f_is_integerERKNS_7VariantE");
TypedValue* fg_is_integer(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_integer((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_integer", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::f_is_long(HPHP::Variant const&)
_ZN4HPHP9f_is_longERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_long(TypedValue* var) asm("_ZN4HPHP9f_is_longERKNS_7VariantE");
TypedValue* fg_is_long(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_long((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_long", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::f_is_double(HPHP::Variant const&)
_ZN4HPHP11f_is_doubleERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_double(TypedValue* var) asm("_ZN4HPHP11f_is_doubleERKNS_7VariantE");
TypedValue* fg_is_double(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_double((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_double", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::f_is_float(HPHP::Variant const&)
_ZN4HPHP10f_is_floatERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_float(TypedValue* var) asm("_ZN4HPHP10f_is_floatERKNS_7VariantE");
TypedValue* fg_is_float(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_float((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_float", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::f_is_numeric(HPHP::Variant const&)
_ZN4HPHP12f_is_numericERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_numeric(TypedValue* var) asm("_ZN4HPHP12f_is_numericERKNS_7VariantE");
TypedValue* fg_is_numeric(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_numeric((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_numeric", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::f_is_real(HPHP::Variant const&)
_ZN4HPHP9f_is_realERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_real(TypedValue* var) asm("_ZN4HPHP9f_is_realERKNS_7VariantE");
TypedValue* fg_is_real(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_real((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_real", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::f_is_string(HPHP::Variant const&)
_ZN4HPHP11f_is_stringERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_string(TypedValue* var) asm("_ZN4HPHP11f_is_stringERKNS_7VariantE");
TypedValue* fg_is_string(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_string((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_string", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::f_is_scalar(HPHP::Variant const&)
_ZN4HPHP11f_is_scalarERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_scalar(TypedValue* var) asm("_ZN4HPHP11f_is_scalarERKNS_7VariantE");
TypedValue* fg_is_scalar(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_scalar((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_scalar", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::f_is_array(HPHP::Variant const&)
_ZN4HPHP10f_is_arrayERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_array(TypedValue* var) asm("_ZN4HPHP10f_is_arrayERKNS_7VariantE");
TypedValue* fg_is_array(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_array((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_array", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::f_is_object(HPHP::Variant const&)
_ZN4HPHP11f_is_objectERKNS_7VariantE
@@ -57,6 +420,72 @@ TypedValue* fg_is_object(HPHP::VM::ActRec *ar) {
/*
bool HPHP::f_is_resource(HPHP::Variant const&)
_ZN4HPHP13f_is_resourceERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_resource(TypedValue* var) asm("_ZN4HPHP13f_is_resourceERKNS_7VariantE");
TypedValue* fg_is_resource(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_resource((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_resource", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::f_is_null(HPHP::Variant const&)
_ZN4HPHP9f_is_nullERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_null(TypedValue* var) asm("_ZN4HPHP9f_is_nullERKNS_7VariantE");
TypedValue* fg_is_null(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_null((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_null", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
HPHP::String HPHP::f_gettype(HPHP::Variant const&)
_ZN4HPHP9f_gettypeERKNS_7VariantE
@@ -528,6 +957,56 @@ TypedValue* fg_debug_zval_dump(HPHP::VM::ActRec *ar) {
/*
HPHP::Variant HPHP::f_unserialize(HPHP::String const&)
_ZN4HPHP13f_unserializeERKNS_6StringE
(return value) => rax
_rv => rdi
str => rsi
*/
TypedValue* fh_unserialize(TypedValue* _rv, Value* str) asm("_ZN4HPHP13f_unserializeERKNS_6StringE");
TypedValue * fg1_unserialize(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
TypedValue * fg1_unserialize(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
tvCastToStringInPlace(args-0);
fh_unserialize((rv), &args[-0].m_data);
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
return rv;
}
TypedValue* fg_unserialize(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
if (IS_STRING_TYPE((args-0)->m_type)) {
fh_unserialize((&(rv)), &args[-0].m_data);
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
fg1_unserialize(&rv, ar, count);
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
}
} else {
throw_wrong_arguments_nr("unserialize", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
HPHP::Array HPHP::f_get_defined_vars()
_ZN4HPHP18f_get_defined_varsEv
+141
Ver Arquivo
@@ -16,6 +16,116 @@
*/
namespace HPHP {
/*
bool HPHP::f_is_bool(HPHP::Variant const&)
_ZN4HPHP9f_is_boolERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_bool(TypedValue* var) asm("_ZN4HPHP9f_is_boolERKNS_7VariantE");
/*
bool HPHP::f_is_int(HPHP::Variant const&)
_ZN4HPHP8f_is_intERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_int(TypedValue* var) asm("_ZN4HPHP8f_is_intERKNS_7VariantE");
/*
bool HPHP::f_is_integer(HPHP::Variant const&)
_ZN4HPHP12f_is_integerERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_integer(TypedValue* var) asm("_ZN4HPHP12f_is_integerERKNS_7VariantE");
/*
bool HPHP::f_is_long(HPHP::Variant const&)
_ZN4HPHP9f_is_longERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_long(TypedValue* var) asm("_ZN4HPHP9f_is_longERKNS_7VariantE");
/*
bool HPHP::f_is_double(HPHP::Variant const&)
_ZN4HPHP11f_is_doubleERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_double(TypedValue* var) asm("_ZN4HPHP11f_is_doubleERKNS_7VariantE");
/*
bool HPHP::f_is_float(HPHP::Variant const&)
_ZN4HPHP10f_is_floatERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_float(TypedValue* var) asm("_ZN4HPHP10f_is_floatERKNS_7VariantE");
/*
bool HPHP::f_is_numeric(HPHP::Variant const&)
_ZN4HPHP12f_is_numericERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_numeric(TypedValue* var) asm("_ZN4HPHP12f_is_numericERKNS_7VariantE");
/*
bool HPHP::f_is_real(HPHP::Variant const&)
_ZN4HPHP9f_is_realERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_real(TypedValue* var) asm("_ZN4HPHP9f_is_realERKNS_7VariantE");
/*
bool HPHP::f_is_string(HPHP::Variant const&)
_ZN4HPHP11f_is_stringERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_string(TypedValue* var) asm("_ZN4HPHP11f_is_stringERKNS_7VariantE");
/*
bool HPHP::f_is_scalar(HPHP::Variant const&)
_ZN4HPHP11f_is_scalarERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_scalar(TypedValue* var) asm("_ZN4HPHP11f_is_scalarERKNS_7VariantE");
/*
bool HPHP::f_is_array(HPHP::Variant const&)
_ZN4HPHP10f_is_arrayERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_array(TypedValue* var) asm("_ZN4HPHP10f_is_arrayERKNS_7VariantE");
/*
bool HPHP::f_is_object(HPHP::Variant const&)
_ZN4HPHP11f_is_objectERKNS_7VariantE
@@ -26,6 +136,26 @@ var => rdi
bool fh_is_object(TypedValue* var) asm("_ZN4HPHP11f_is_objectERKNS_7VariantE");
/*
bool HPHP::f_is_resource(HPHP::Variant const&)
_ZN4HPHP13f_is_resourceERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_resource(TypedValue* var) asm("_ZN4HPHP13f_is_resourceERKNS_7VariantE");
/*
bool HPHP::f_is_null(HPHP::Variant const&)
_ZN4HPHP9f_is_nullERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_null(TypedValue* var) asm("_ZN4HPHP9f_is_nullERKNS_7VariantE");
/*
HPHP::String HPHP::f_gettype(HPHP::Variant const&)
_ZN4HPHP9f_gettypeERKNS_7VariantE
@@ -145,6 +275,17 @@ variable => rdi
void fh_debug_zval_dump(TypedValue* variable) asm("_ZN4HPHP17f_debug_zval_dumpERKNS_7VariantE");
/*
HPHP::Variant HPHP::f_unserialize(HPHP::String const&)
_ZN4HPHP13f_unserializeERKNS_6StringE
(return value) => rax
_rv => rdi
str => rsi
*/
TypedValue* fh_unserialize(TypedValue* _rv, Value* str) asm("_ZN4HPHP13f_unserializeERKNS_6StringE");
/*
HPHP::Array HPHP::f_get_defined_vars()
_ZN4HPHP18f_get_defined_varsEv
+13 -191
Ver Arquivo
@@ -24,199 +24,21 @@ namespace HPHP {
///////////////////////////////////////////////////////////////////////////////
// type testing
inline bool f_is_bool(bool v) { return true;}
inline bool f_is_bool(char v) { return false;}
inline bool f_is_bool(short v) { return false;}
inline bool f_is_bool(int v) { return false;}
inline bool f_is_bool(int64_t v) { return false;}
inline bool f_is_bool(double v) { return false;}
inline bool f_is_bool(litstr v) { return false;}
inline bool f_is_bool(const StringData *v) { not_reached(); }
inline bool f_is_bool(CStrRef v) { return false;}
inline bool f_is_bool(CArrRef v) { return false;}
inline bool f_is_bool(CObjRef v) { return false;}
inline bool f_is_bool(CVarRef v) { return v.is(KindOfBoolean);}
inline bool f_is_int(bool v) { return false;}
inline bool f_is_int(char v) { return true;}
inline bool f_is_int(short v) { return true;}
inline bool f_is_int(int v) { return true;}
inline bool f_is_int(int64_t v) { return true;}
inline bool f_is_int(double v) { return false;}
inline bool f_is_int(litstr v) { return false;}
inline bool f_is_int(const StringData *v) { not_reached(); }
inline bool f_is_int(CStrRef v) { return false;}
inline bool f_is_int(CArrRef v) { return false;}
inline bool f_is_int(CObjRef v) { return false;}
inline bool f_is_int(CVarRef v) { return v.isInteger();}
inline bool f_is_integer(bool v) { return false;}
inline bool f_is_integer(char v) { return true;}
inline bool f_is_integer(short v) { return true;}
inline bool f_is_integer(int v) { return true;}
inline bool f_is_integer(int64_t v) { return true;}
inline bool f_is_integer(double v) { return false;}
inline bool f_is_integer(litstr v) { return false;}
inline bool f_is_integer(const StringData *v) { not_reached(); }
inline bool f_is_integer(CStrRef v) { return false;}
inline bool f_is_integer(CArrRef v) { return false;}
inline bool f_is_integer(CObjRef v) { return false;}
inline bool f_is_integer(CVarRef v) { return v.isInteger();}
inline bool f_is_long(bool v) { return false;}
inline bool f_is_long(char v) { return true;}
inline bool f_is_long(short v) { return true;}
inline bool f_is_long(int v) { return true;}
inline bool f_is_long(int64_t v) { return true;}
inline bool f_is_long(double v) { return false;}
inline bool f_is_long(litstr v) { return false;}
inline bool f_is_long(const StringData *v) { not_reached(); }
inline bool f_is_long(CStrRef v) { return false;}
inline bool f_is_long(CArrRef v) { return false;}
inline bool f_is_long(CObjRef v) { return false;}
inline bool f_is_long(CVarRef v) { return v.isInteger();}
inline bool f_is_double(bool v) { return false;}
inline bool f_is_double(char v) { return false;}
inline bool f_is_double(short v) { return false;}
inline bool f_is_double(int v) { return false;}
inline bool f_is_double(int64_t v) { return false;}
inline bool f_is_double(double v) { return true;}
inline bool f_is_double(litstr v) { return false;}
inline bool f_is_double(const StringData *v) { not_reached(); }
inline bool f_is_double(CStrRef v) { return false;}
inline bool f_is_double(CArrRef v) { return false;}
inline bool f_is_double(CObjRef v) { return false;}
inline bool f_is_double(CVarRef v) { return v.is(KindOfDouble);}
inline bool f_is_float(bool v) { return false;}
inline bool f_is_float(char v) { return false;}
inline bool f_is_float(short v) { return false;}
inline bool f_is_float(int v) { return false;}
inline bool f_is_float(int64_t v) { return false;}
inline bool f_is_float(double v) { return true;}
inline bool f_is_float(litstr v) { return false;}
inline bool f_is_float(const StringData *v) { not_reached(); }
inline bool f_is_float(CStrRef v) { return false;}
inline bool f_is_float(CArrRef v) { return false;}
inline bool f_is_float(CObjRef v) { return false;}
inline bool f_is_float(CVarRef v) { return v.is(KindOfDouble);}
inline bool f_is_numeric(bool v) { return false;}
inline bool f_is_numeric(char v) { return true;}
inline bool f_is_numeric(short v) { return true;}
inline bool f_is_numeric(int v) { return true;}
inline bool f_is_numeric(int64_t v) { return true;}
inline bool f_is_numeric(double v) { return true;}
inline bool f_is_numeric(litstr v) { return String(v).isNumeric();}
inline bool f_is_numeric(const StringData *v) { not_reached(); }
inline bool f_is_numeric(CStrRef v) { return v.isNumeric();}
inline bool f_is_numeric(CArrRef v) { return false;}
inline bool f_is_numeric(CObjRef v) { return false;}
inline bool f_is_numeric(CVarRef v) { return v.isNumeric(true);}
inline bool f_is_real(bool v) { return false;}
inline bool f_is_real(char v) { return false;}
inline bool f_is_real(short v) { return false;}
inline bool f_is_real(int v) { return false;}
inline bool f_is_real(int64_t v) { return false;}
inline bool f_is_real(double v) { return true;}
inline bool f_is_real(litstr v) { return false;}
inline bool f_is_real(const StringData *v) { not_reached(); }
inline bool f_is_real(CStrRef v) { return false;}
inline bool f_is_real(CArrRef v) { return false;}
inline bool f_is_real(CObjRef v) { return false;}
inline bool f_is_real(CVarRef v) { return v.is(KindOfDouble);}
inline bool f_is_string(bool v) { return false;}
inline bool f_is_string(char v) { return false;}
inline bool f_is_string(short v) { return false;}
inline bool f_is_string(int v) { return false;}
inline bool f_is_string(int64_t v) { return false;}
inline bool f_is_string(double v) { return false;}
inline bool f_is_string(litstr v) { return true;}
inline bool f_is_string(const StringData *v) { not_reached(); }
inline bool f_is_string(CStrRef v) { return true;}
inline bool f_is_string(CArrRef v) { return false;}
inline bool f_is_string(CObjRef v) { return false;}
inline bool f_is_string(CVarRef v) { return v.isString();}
inline bool f_is_scalar(bool v) { return true;}
inline bool f_is_scalar(char v) { return true;}
inline bool f_is_scalar(short v) { return true;}
inline bool f_is_scalar(int v) { return true;}
inline bool f_is_scalar(int64_t v) { return true;}
inline bool f_is_scalar(double v) { return true;}
inline bool f_is_scalar(litstr v) { return true;}
inline bool f_is_scalar(const StringData *v) { not_reached(); }
inline bool f_is_scalar(CStrRef v) { return true;}
inline bool f_is_scalar(CArrRef v) { return false;}
inline bool f_is_scalar(CObjRef v) { return false;}
inline bool f_is_scalar(CVarRef v) { return v.isScalar();}
inline bool f_is_array(bool v) { return false;}
inline bool f_is_array(char v) { return false;}
inline bool f_is_array(short v) { return false;}
inline bool f_is_array(int v) { return false;}
inline bool f_is_array(int64_t v) { return false;}
inline bool f_is_array(double v) { return false;}
inline bool f_is_array(litstr v) { return false;}
inline bool f_is_array(const StringData *v) { not_reached(); }
inline bool f_is_array(CStrRef v) { return false;}
inline bool f_is_array(CArrRef v) { return true;}
inline bool f_is_array(CObjRef v) { return false;}
inline bool f_is_array(CVarRef v) { return v.is(KindOfArray);}
inline bool f_is_object(bool v) { return false;}
inline bool f_is_object(char v) { return false;}
inline bool f_is_object(short v) { return false;}
inline bool f_is_object(int v) { return false;}
inline bool f_is_object(int64_t v) { return false;}
inline bool f_is_object(double v) { return false;}
inline bool f_is_object(litstr v) { return false;}
inline bool f_is_object(const StringData *v) { not_reached(); }
inline bool f_is_object(CStrRef v) { return false;}
inline bool f_is_object(CArrRef v) { return false;}
inline bool f_is_object(CObjRef v) { return !v.isResource();}
bool f_is_bool(CVarRef v);
bool f_is_int(CVarRef v);
bool f_is_integer(CVarRef v);
bool f_is_long(CVarRef v);
bool f_is_double(CVarRef v);
bool f_is_float(CVarRef v);
bool f_is_numeric(CVarRef v);
bool f_is_real(CVarRef v);
bool f_is_string(CVarRef v);
bool f_is_scalar(CVarRef v);
bool f_is_array(CVarRef v);
bool f_is_object(CVarRef v);
bool f_is_resource(CVarRef v);
bool f_is_null(CVarRef v);
inline bool f_is_resource(bool v) { return false;}
inline bool f_is_resource(char v) { return false;}
inline bool f_is_resource(short v) { return false;}
inline bool f_is_resource(int v) { return false;}
inline bool f_is_resource(int64_t v) { return false;}
inline bool f_is_resource(double v) { return false;}
inline bool f_is_resource(litstr v) { return false;}
inline bool f_is_resource(const StringData *v) { not_reached(); }
inline bool f_is_resource(CStrRef v) { return false;}
inline bool f_is_resource(CArrRef v) { return false;}
inline bool f_is_resource(CObjRef v) { return v.isResource();}
inline bool f_is_resource(CVarRef v) { return v.isResource();}
inline bool f_is_null(bool v) { return false;}
inline bool f_is_null(char v) { return false;}
inline bool f_is_null(short v) { return false;}
inline bool f_is_null(int v) { return false;}
inline bool f_is_null(int64_t v) { return false;}
inline bool f_is_null(double v) { return false;}
inline bool f_is_null(litstr v) { return false;}
inline bool f_is_null(const StringData *v) { not_reached(); }
inline bool f_is_null(CStrRef v) { return v.isNull();}
inline bool f_is_null(CArrRef v) { return v.isNull();}
inline bool f_is_null(CObjRef v) { return v.isNull();}
inline bool f_is_null(CVarRef v) { return v.isNull();}
inline String f_gettype(bool v) { return "boolean";}
inline String f_gettype(char v) { return "integer";}
inline String f_gettype(short v) { return "integer";}
inline String f_gettype(int v) { return "integer";}
inline String f_gettype(int64_t v) { return "integer";}
inline String f_gettype(double v) { return "double";}
inline String f_gettype(litstr v) { return "string";}
inline String f_gettype(const StringData *v) { not_reached(); }
inline String f_gettype(CStrRef v) { return "string";}
inline String f_gettype(CArrRef v) { return "array";}
inline String f_gettype(CObjRef v) { return "object";}
String f_gettype(CVarRef v);
String f_get_resource_type(CObjRef handle);
+1 -1
Ver Arquivo
@@ -341,7 +341,7 @@ static Variant xml_call_handler(XmlParser *parser, CVarRef handler,
} else if (handler.isArray() && handler.getArrayData()->size() == 2 &&
(handler[0].isString() || handler[0].isObject()) &&
handler[1].isString()) {
f_call_user_func_array(handler, args);
vm_call_user_func(handler, args);
} else {
raise_warning("Handler is invalid");
}
+1 -1
Ver Arquivo
@@ -959,7 +959,7 @@ int MimePart::extractImpl(int decode, File *src) {
}
void MimePart::callUserFunc(CStrRef s) {
f_call_user_func_array(m_extract_context, CREATE_VECTOR1(s));
vm_call_user_func(m_extract_context, CREATE_VECTOR1(s));
}
void MimePart::outputToStdout(CStrRef s) {
+1 -1
Ver Arquivo
@@ -88,7 +88,7 @@ void PDOConnection::persistentSave() {
void PDOConnection::persistentRestore() {
if (!serialized_def_stmt_ctor_args.empty()) {
def_stmt_ctor_args = f_unserialize(serialized_def_stmt_ctor_args);
def_stmt_ctor_args = unserialize_from_string(serialized_def_stmt_ctor_args);
}
}
+2 -2
Ver Arquivo
@@ -685,7 +685,7 @@ xmlNodePtr to_xml_user(encodeTypePtr type, CVarRef data, int style,
xmlNodePtr parent) {
xmlNodePtr ret = NULL;
if (type && type->map && !type->map->to_xml.isNull()) {
Variant return_value = f_call_user_func_array(type->map->to_xml,
Variant return_value = vm_call_user_func(type->map->to_xml,
CREATE_VECTOR1(data));
if (return_value.isString()) {
String sdoc = return_value.toString();
@@ -716,7 +716,7 @@ Variant to_zval_user(encodeTypePtr type, xmlNodePtr node) {
xmlBufferFree(buf);
xmlFreeNode(copy);
return_value = f_call_user_func_array(type->map->to_zval,
return_value = vm_call_user_func(type->map->to_zval,
CREATE_VECTOR1(data));
}
return return_value;
-1
Ver Arquivo
@@ -129,4 +129,3 @@
#include "../ext/soap/sdl.ext_hhvm.h"
#include "../ext/soap/encoding.ext_hhvm.h"
#include "../base/builtin_functions.ext_hhvm.h"
#include "ext_hhvm_noinline.ext_hhvm.h"
-87
Ver Arquivo
@@ -1,87 +0,0 @@
/*
+----------------------------------------------------------------------+
| HipHop for PHP |
+----------------------------------------------------------------------+
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
*/
#include <runtime/ext/ext.h>
/*
* This file contains non-inline definitions of some extension
* functions that are only defined inline in hphpc.
*
* In HHVM we need actual addresses for these functions to jump to.
*/
namespace HPHP {
Variant fni_call_user_func_array(Variant const& function, Array const& params) {
return f_call_user_func_array(function, params);
}
bool fni_is_bool(Variant const& var) {
return f_is_bool(var);
}
bool fni_is_int(Variant const& var) {
return f_is_int(var);
}
bool fni_is_integer(Variant const& var) {
return f_is_integer(var);
}
bool fni_is_long(Variant const& var) {
return f_is_long(var);
}
bool fni_is_double(Variant const& var) {
return f_is_double(var);
}
bool fni_is_float(Variant const& var) {
return f_is_float(var);
}
bool fni_is_numeric(Variant const& var) {
return f_is_numeric(var);
}
bool fni_is_real(Variant const& var) {
return f_is_real(var);
}
bool fni_is_string(Variant const& var) {
return f_is_string(var);
}
bool fni_is_scalar(Variant const& var) {
return f_is_scalar(var);
}
bool fni_is_array(Variant const& var) {
return f_is_array(var);
}
bool fni_is_resource(Variant const& var) {
return f_is_resource(var);
}
bool fni_is_null(Variant const& var) {
return f_is_null(var);
}
Variant fni_unserialize(String const& str) {
return f_unserialize(str);
}
}
@@ -1,558 +0,0 @@
/*
+----------------------------------------------------------------------+
| HipHop for PHP |
+----------------------------------------------------------------------+
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
*/
#include <runtime/ext_hhvm/ext_hhvm.h>
#include <runtime/base/builtin_functions.h>
#include <runtime/base/array/array_init.h>
#include <runtime/ext/ext.h>
#include <runtime/vm/class.h>
#include <runtime/vm/runtime.h>
#include <exception>
namespace HPHP {
/*
HPHP::Variant HPHP::fni_call_user_func_array(HPHP::Variant const&, HPHP::Array const&)
_ZN4HPHP24fni_call_user_func_arrayERKNS_7VariantERKNS_5ArrayE
(return value) => rax
_rv => rdi
function => rsi
params => rdx
*/
TypedValue* fh_call_user_func_array(TypedValue* _rv, TypedValue* function, Value* params) asm("_ZN4HPHP24fni_call_user_func_arrayERKNS_7VariantERKNS_5ArrayE");
TypedValue * fg1_call_user_func_array(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
TypedValue * fg1_call_user_func_array(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
tvCastToArrayInPlace(args-1);
fh_call_user_func_array((rv), (args-0), &args[-1].m_data);
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
return rv;
}
TypedValue* fg_call_user_func_array(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 2LL) {
if ((args-1)->m_type == KindOfArray) {
fh_call_user_func_array((&(rv)), (args-0), &args[-1].m_data);
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 2);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
fg1_call_user_func_array(&rv, ar, count);
frame_free_locals_no_this_inl(ar, 2);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
}
} else {
throw_wrong_arguments_nr("call_user_func_array", count, 2, 2, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 2);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::fni_is_bool(HPHP::Variant const&)
_ZN4HPHP11fni_is_boolERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_bool(TypedValue* var) asm("_ZN4HPHP11fni_is_boolERKNS_7VariantE");
TypedValue* fg_is_bool(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_bool((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_bool", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::fni_is_int(HPHP::Variant const&)
_ZN4HPHP10fni_is_intERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_int(TypedValue* var) asm("_ZN4HPHP10fni_is_intERKNS_7VariantE");
TypedValue* fg_is_int(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_int((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_int", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::fni_is_integer(HPHP::Variant const&)
_ZN4HPHP14fni_is_integerERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_integer(TypedValue* var) asm("_ZN4HPHP14fni_is_integerERKNS_7VariantE");
TypedValue* fg_is_integer(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_integer((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_integer", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::fni_is_long(HPHP::Variant const&)
_ZN4HPHP11fni_is_longERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_long(TypedValue* var) asm("_ZN4HPHP11fni_is_longERKNS_7VariantE");
TypedValue* fg_is_long(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_long((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_long", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::fni_is_double(HPHP::Variant const&)
_ZN4HPHP13fni_is_doubleERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_double(TypedValue* var) asm("_ZN4HPHP13fni_is_doubleERKNS_7VariantE");
TypedValue* fg_is_double(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_double((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_double", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::fni_is_float(HPHP::Variant const&)
_ZN4HPHP12fni_is_floatERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_float(TypedValue* var) asm("_ZN4HPHP12fni_is_floatERKNS_7VariantE");
TypedValue* fg_is_float(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_float((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_float", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::fni_is_numeric(HPHP::Variant const&)
_ZN4HPHP14fni_is_numericERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_numeric(TypedValue* var) asm("_ZN4HPHP14fni_is_numericERKNS_7VariantE");
TypedValue* fg_is_numeric(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_numeric((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_numeric", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::fni_is_real(HPHP::Variant const&)
_ZN4HPHP11fni_is_realERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_real(TypedValue* var) asm("_ZN4HPHP11fni_is_realERKNS_7VariantE");
TypedValue* fg_is_real(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_real((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_real", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::fni_is_string(HPHP::Variant const&)
_ZN4HPHP13fni_is_stringERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_string(TypedValue* var) asm("_ZN4HPHP13fni_is_stringERKNS_7VariantE");
TypedValue* fg_is_string(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_string((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_string", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::fni_is_scalar(HPHP::Variant const&)
_ZN4HPHP13fni_is_scalarERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_scalar(TypedValue* var) asm("_ZN4HPHP13fni_is_scalarERKNS_7VariantE");
TypedValue* fg_is_scalar(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_scalar((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_scalar", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::fni_is_array(HPHP::Variant const&)
_ZN4HPHP12fni_is_arrayERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_array(TypedValue* var) asm("_ZN4HPHP12fni_is_arrayERKNS_7VariantE");
TypedValue* fg_is_array(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_array((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_array", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::fni_is_resource(HPHP::Variant const&)
_ZN4HPHP15fni_is_resourceERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_resource(TypedValue* var) asm("_ZN4HPHP15fni_is_resourceERKNS_7VariantE");
TypedValue* fg_is_resource(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_resource((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_resource", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
bool HPHP::fni_is_null(HPHP::Variant const&)
_ZN4HPHP11fni_is_nullERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_null(TypedValue* var) asm("_ZN4HPHP11fni_is_nullERKNS_7VariantE");
TypedValue* fg_is_null(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
rv.m_type = KindOfBoolean;
rv.m_data.num = (fh_is_null((args-0))) ? 1LL : 0LL;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
throw_wrong_arguments_nr("is_null", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
/*
HPHP::Variant HPHP::fni_unserialize(HPHP::String const&)
_ZN4HPHP15fni_unserializeERKNS_6StringE
(return value) => rax
_rv => rdi
str => rsi
*/
TypedValue* fh_unserialize(TypedValue* _rv, Value* str) asm("_ZN4HPHP15fni_unserializeERKNS_6StringE");
TypedValue * fg1_unserialize(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
TypedValue * fg1_unserialize(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
tvCastToStringInPlace(args-0);
fh_unserialize((rv), &args[-0].m_data);
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
return rv;
}
TypedValue* fg_unserialize(HPHP::VM::ActRec *ar) {
TypedValue rv;
int64_t count = ar->numArgs();
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
if (count == 1LL) {
if (IS_STRING_TYPE((args-0)->m_type)) {
fh_unserialize((&(rv)), &args[-0].m_data);
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
} else {
fg1_unserialize(&rv, ar, count);
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
}
} else {
throw_wrong_arguments_nr("unserialize", count, 1, 1, 1);
}
rv.m_data.num = 0LL;
rv.m_type = KindOfNull;
frame_free_locals_no_this_inl(ar, 1);
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
return &ar->m_r;
return &ar->m_r;
}
} // !HPHP
@@ -1,173 +0,0 @@
/*
+----------------------------------------------------------------------+
| HipHop for PHP |
+----------------------------------------------------------------------+
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
*/
namespace HPHP {
/*
HPHP::Variant HPHP::fni_call_user_func_array(HPHP::Variant const&, HPHP::Array const&)
_ZN4HPHP24fni_call_user_func_arrayERKNS_7VariantERKNS_5ArrayE
(return value) => rax
_rv => rdi
function => rsi
params => rdx
*/
TypedValue* fh_call_user_func_array(TypedValue* _rv, TypedValue* function, Value* params) asm("_ZN4HPHP24fni_call_user_func_arrayERKNS_7VariantERKNS_5ArrayE");
/*
bool HPHP::fni_is_bool(HPHP::Variant const&)
_ZN4HPHP11fni_is_boolERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_bool(TypedValue* var) asm("_ZN4HPHP11fni_is_boolERKNS_7VariantE");
/*
bool HPHP::fni_is_int(HPHP::Variant const&)
_ZN4HPHP10fni_is_intERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_int(TypedValue* var) asm("_ZN4HPHP10fni_is_intERKNS_7VariantE");
/*
bool HPHP::fni_is_integer(HPHP::Variant const&)
_ZN4HPHP14fni_is_integerERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_integer(TypedValue* var) asm("_ZN4HPHP14fni_is_integerERKNS_7VariantE");
/*
bool HPHP::fni_is_long(HPHP::Variant const&)
_ZN4HPHP11fni_is_longERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_long(TypedValue* var) asm("_ZN4HPHP11fni_is_longERKNS_7VariantE");
/*
bool HPHP::fni_is_double(HPHP::Variant const&)
_ZN4HPHP13fni_is_doubleERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_double(TypedValue* var) asm("_ZN4HPHP13fni_is_doubleERKNS_7VariantE");
/*
bool HPHP::fni_is_float(HPHP::Variant const&)
_ZN4HPHP12fni_is_floatERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_float(TypedValue* var) asm("_ZN4HPHP12fni_is_floatERKNS_7VariantE");
/*
bool HPHP::fni_is_numeric(HPHP::Variant const&)
_ZN4HPHP14fni_is_numericERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_numeric(TypedValue* var) asm("_ZN4HPHP14fni_is_numericERKNS_7VariantE");
/*
bool HPHP::fni_is_real(HPHP::Variant const&)
_ZN4HPHP11fni_is_realERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_real(TypedValue* var) asm("_ZN4HPHP11fni_is_realERKNS_7VariantE");
/*
bool HPHP::fni_is_string(HPHP::Variant const&)
_ZN4HPHP13fni_is_stringERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_string(TypedValue* var) asm("_ZN4HPHP13fni_is_stringERKNS_7VariantE");
/*
bool HPHP::fni_is_scalar(HPHP::Variant const&)
_ZN4HPHP13fni_is_scalarERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_scalar(TypedValue* var) asm("_ZN4HPHP13fni_is_scalarERKNS_7VariantE");
/*
bool HPHP::fni_is_array(HPHP::Variant const&)
_ZN4HPHP12fni_is_arrayERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_array(TypedValue* var) asm("_ZN4HPHP12fni_is_arrayERKNS_7VariantE");
/*
bool HPHP::fni_is_resource(HPHP::Variant const&)
_ZN4HPHP15fni_is_resourceERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_resource(TypedValue* var) asm("_ZN4HPHP15fni_is_resourceERKNS_7VariantE");
/*
bool HPHP::fni_is_null(HPHP::Variant const&)
_ZN4HPHP11fni_is_nullERKNS_7VariantE
(return value) => rax
var => rdi
*/
bool fh_is_null(TypedValue* var) asm("_ZN4HPHP11fni_is_nullERKNS_7VariantE");
/*
HPHP::Variant HPHP::fni_unserialize(HPHP::String const&)
_ZN4HPHP15fni_unserializeERKNS_6StringE
(return value) => rax
_rv => rdi
str => rsi
*/
TypedValue* fh_unserialize(TypedValue* _rv, Value* str) asm("_ZN4HPHP15fni_unserializeERKNS_6StringE");
} // !HPHP
+2 -12
Ver Arquivo
@@ -52,13 +52,10 @@ function generateMangleMap() {
if ($m == '' || $d == '') continue;
if (isset($ignoreList[$d])) continue;
/*
* We only care about functions that start with "f_" or "fni_"
* We only care about functions that start with "f_"
* and methods that start with "t_" ot "ti_"
*
* fni_ are our stubs in noinline.cpp for extensions that are
* normally defined inline only.
*/
if (preg_match('/^HPHP::f(ni)?_/', $d) ||
if (preg_match('/^HPHP::f_/', $d) ||
preg_match('/^HPHP::c_[A-Za-z0-9_]*::t(i)?_/', $d)) {
$mangleMap[$d] = $m;
}
@@ -102,13 +99,6 @@ function parseIDLFunc($idlFunc, $mangleMap) {
$obj->initFunc($name, $returnType, $returnByRef, $params, $isVarargs);
$sig = $obj->getHphpSig();
// The implementation of some extension functions are in the .h file,
// so we don't have a mangled names for them.
if (!isset($mangleMap[$sig])) {
$obj->prefix = 'fni_';
$sig = $obj->getHphpSig();
}
if (isset($mangleMap[$sig])) {
$obj->mangledName = $mangleMap[$sig];
} else {
+1 -1
Ver Arquivo
@@ -1131,7 +1131,7 @@ Variant parse_php_serialized(AsmState& as) {
// it.
buffer.push_back('\0');
String data(&buffer[0], buffer.size() - 1, AttachLiteral);
return f_unserialize(data);
return unserialize_from_string(data);
}
/*
+1 -1
Ver Arquivo
@@ -245,7 +245,7 @@ struct BlobDecoder {
assert(!!s);
if (s->empty()) return;
tvAsVariant(&tv) = f_unserialize(s);
tvAsVariant(&tv) = unserialize_from_string(s);
tvAsVariant(&tv).setEvalScalar();
}
+7 -7
Ver Arquivo
@@ -4855,13 +4855,13 @@ inline void OPTBLD_INLINE VMExecutionContext::iopIs ## what ## C(PC& pc) { \
IOP_TYPE_CHECK_INSTR_C(checkInit, what, predicate) \
IOP_TYPE_CHECK_INSTR_L(false, set, isset)
IOP_TYPE_CHECK_INSTR(true, Null, f_is_null)
IOP_TYPE_CHECK_INSTR(true, Array, f_is_array)
IOP_TYPE_CHECK_INSTR(true, String, f_is_string)
IOP_TYPE_CHECK_INSTR(true, Object, f_is_object)
IOP_TYPE_CHECK_INSTR(true, Int, f_is_int)
IOP_TYPE_CHECK_INSTR(true, Double, f_is_double)
IOP_TYPE_CHECK_INSTR(true, Bool, f_is_bool)
IOP_TYPE_CHECK_INSTR(true, Null, is_null)
IOP_TYPE_CHECK_INSTR(true, Array, is_array)
IOP_TYPE_CHECK_INSTR(true, String, is_string)
IOP_TYPE_CHECK_INSTR(true, Object, is_object)
IOP_TYPE_CHECK_INSTR(true, Int, is_int)
IOP_TYPE_CHECK_INSTR(true, Double, is_double)
IOP_TYPE_CHECK_INSTR(true, Bool, is_bool)
#undef IOP_TYPE_CHECK_INSTR
inline void OPTBLD_INLINE VMExecutionContext::iopEmptyL(PC& pc) {
+1 -1
Ver Arquivo
@@ -92,7 +92,7 @@ void EventHook::RunUserProfiler(const ActRec* ar, int mode) {
params.append(VarNR(ar->m_func->fullName()));
params.append(frameinfo);
f_call_user_func_array(g_vmContext->m_setprofileCallback, params);
vm_call_user_func(g_vmContext->m_setprofileCallback, params);
}
void EventHook::onFunctionEnter(const ActRec* ar, int funcType) {
+1 -1
Ver Arquivo
@@ -346,7 +346,7 @@ void RepoQuery::getTypedValue(int iCol, TypedValue& tv) {
tvWriteUninit(&tv);
if (size > 0) {
String s = String((const char*)blob, size, CopyString);
Variant v = f_unserialize(s);
Variant v = unserialize_from_string(s);
if (v.isString()) {
v = String(StringData::GetStaticString(v.asCStrRef().get()));
} else if (v.isArray()) {
+1 -1
Ver Arquivo
@@ -1627,7 +1627,7 @@ void UnitRepoProxy::GetUnitArraysStmt
Id arrayId; /**/ query.getId(0, arrayId);
StringData* array; /**/ query.getStaticString(1, array);
String s(array);
Variant v = f_unserialize(s);
Variant v = unserialize_from_string(s);
Id id UNUSED = ue.mergeArray(v.asArrRef().get(), array);
assert(id == arrayId);
}
+1 -1
Ver Arquivo
@@ -628,7 +628,7 @@ bool TestCppBase::TestArray() {
bool TestCppBase::TestObject() {
{
String s = "O:1:\"B\":1:{s:3:\"obj\";O:1:\"A\":1:{s:1:\"a\";i:10;}}";
VS(f_serialize(f_unserialize(s)), "O:22:\"__PHP_Incomplete_Class\":2:{s:27:\"__PHP_Incomplete_Class_Name\";s:1:\"B\";s:3:\"obj\";O:22:\"__PHP_Incomplete_Class\":2:{s:27:\"__PHP_Incomplete_Class_Name\";s:1:\"A\";s:1:\"a\";i:10;}}");
VS(f_serialize(unserialize_from_string(s)), "O:22:\"__PHP_Incomplete_Class\":2:{s:27:\"__PHP_Incomplete_Class_Name\";s:1:\"B\";s:3:\"obj\";O:22:\"__PHP_Incomplete_Class\":2:{s:27:\"__PHP_Incomplete_Class_Name\";s:1:\"A\";s:1:\"a\";i:10;}}");
}
VERIFY(!equal(Object(new TestResource()), Object(new TestResource()) ));
return Count(true);
+1 -1
Ver Arquivo
@@ -434,7 +434,7 @@ bool TestExtFile::test_file_get_contents() {
VS(f_file_get_contents("test/test_ext_file.tmp"),
"testing file_get_contents");
VS(f_unserialize(f_file_get_contents("compress.zlib://test/test_zlib_file")),
VS(unserialize_from_string(f_file_get_contents("compress.zlib://test/test_zlib_file")),
CREATE_VECTOR1("rblock:216105"));
return Count(true);
}
+1 -1
Ver Arquivo
@@ -68,7 +68,7 @@ bool TestExtFunction::test_is_callable() {
}
bool TestExtFunction::test_call_user_func_array() {
Variant ret = f_call_user_func_array("TEst", CREATE_VECTOR1("param"));
Variant ret = vm_call_user_func("TEst", CREATE_VECTOR1("param"));
VS(ret, "param");
return Count(true);
}
+8 -8
Ver Arquivo
@@ -153,7 +153,7 @@ bool TestExtVariable::test_is_array() {
bool TestExtVariable::test_is_object() {
VERIFY(!f_is_object(123));
VERIFY(!f_is_object("test"));
VERIFY(f_is_object(Object()));
VERIFY(f_is_object(Object(SystemLib::AllocStdClassObject())));
return Count(true);
}
@@ -187,9 +187,9 @@ bool TestExtVariable::test_gettype() {
VS(f_gettype(uninit_null()), "NULL");
VS(f_gettype(0), "integer");
VS(f_gettype("test"), "string");
VS(f_gettype(String()), "string");
VS(f_gettype(Array()), "array");
VS(f_gettype(Object()), "object");
VS(f_gettype(String("hi")), "string");
VS(f_gettype(Array::Create()), "array");
VS(f_gettype(Object(SystemLib::AllocStdClassObject())), "object");
return Count(true);
}
@@ -364,17 +364,17 @@ bool TestExtVariable::test_serialize() {
bool TestExtVariable::test_unserialize() {
{
// this was crashing
f_unserialize(StringUtil::HexDecode("53203a20224c612072756f74612067697261207065722074757474692220204d203a20227365636f6e646f206d6520736920c3a820696e6361737472617461206461207175616c6368652070617274652122"));
unserialize_from_string(StringUtil::HexDecode("53203a20224c612072756f74612067697261207065722074757474692220204d203a20227365636f6e646f206d6520736920c3a820696e6361737472617461206461207175616c6368652070617274652122"));
}
{
Variant v = f_unserialize("O:8:\"stdClass\":1:{s:4:\"name\";s:5:\"value\";}");
Variant v = unserialize_from_string("O:8:\"stdClass\":1:{s:4:\"name\";s:5:\"value\";}");
VERIFY(v.is(KindOfObject));
Object obj = v.toObject();
VS(obj->o_getClassName(), "stdClass");
VS(obj.o_get("name"), "value");
}
{
Variant v = f_unserialize(String("O:8:\"stdClass\":1:{s:7:\"\0*\0name\";s:5:\"value\";}", 45, AttachLiteral));
Variant v = unserialize_from_string(String("O:8:\"stdClass\":1:{s:7:\"\0*\0name\";s:5:\"value\";}", 45, AttachLiteral));
VERIFY(v.is(KindOfObject));
Object obj = v.toObject();
VS(obj->o_getClassName(), "stdClass");
@@ -382,7 +382,7 @@ bool TestExtVariable::test_unserialize() {
}
{
Variant v1 = CREATE_MAP3("a","apple","b",2,"c",CREATE_VECTOR3(1,"y",3));
Variant v2 = f_unserialize("a:3:{s:1:\"a\";s:5:\"apple\";s:1:\"b\";i:2;s:1:\"c\";a:3:{i:0;i:1;i:1;s:1:\"y\";i:2;i:3;}}");
Variant v2 = unserialize_from_string("a:3:{s:1:\"a\";s:5:\"apple\";s:1:\"b\";i:2;s:1:\"c\";a:3:{i:0;i:1;i:1;s:1:\"y\";i:2;i:3;}}");
VS(v1, v2);
}
return Count(true);
+1 -3
Ver Arquivo
@@ -52,8 +52,6 @@ if [ "$1" = "hhvm" -o "$1" = "all" ]; then
make_hhvm $RUNTIME_BUILD/runtime/ext/$i.cpp.o ../ext/$i.ext_hhvm.cpp
done
make_hhvm $RUNTIME_BUILD/runtime/base/builtin_functions.cpp.o ../base/builtin_functions.ext_hhvm.cpp
EXTHHVM_BUILD=$HPHP_HOME/hphp/runtime/ext_hhvm/CMakeFiles/ext_hhvm_static.dir
make_hhvm $EXTHHVM_BUILD/ext_hhvm_noinline.cpp.o ext_hhvm_noinline.ext_hhvm.cpp
fi
if [ "$1" = "infotabs" -o "$1" = "all" ]; then
@@ -61,7 +59,7 @@ if [ "$1" = "infotabs" -o "$1" = "all" ]; then
SOURCES=`find ../ext -name '*.ext_hhvm.cpp'`
[ $VERBOSE -eq 1 ] && echo "Generating hphp/runtime/ext_hhvm/ext_hhvm_infotabs.h"
$HHVM gen_infotabs_header.php ext_hhvm_infotabs.h $SOURCES ../base/builtin_functions.ext_hhvm.cpp ext_hhvm_noinline.ext_hhvm.cpp
$HHVM gen_infotabs_header.php ext_hhvm_infotabs.h $SOURCES ../base/builtin_functions.ext_hhvm.cpp
[ $VERBOSE -eq 1 ] && echo "Generating hphp/runtime/ext_hhvm/ext_hhvm_infotabs.cpp"
$HHVM gen_infotabs.php ext_hhvm_infotabs.cpp . "" "" ""