1569061e8c
This diff removes initializing stores to TypedValue._count, renames _count to m_aux, and makes m_aux a union with members typed and named according to their specialized uses. The few remaining uses of that field for random tweaks are more obvious and easy to grep for. TypedValue no longer extends Value, (allowing m_data to move to a different offset in the future), and Variant now extends TypedValue, so we only have to maintain one definition. HphpArray now explicitly uses TypedValue.m_pad instead of overlapping TypedValue with an anonymous struct, again so we don't have to maintain another structure to match TypedValue's layout. The JIT's were using offsetof(TypedValue, _count) all over the place for access to String/Array/Object/RefData::_count. Instead, use FAST_REFCOUNT_OFFSET.
67 linhas
2.4 KiB
C++
67 linhas
2.4 KiB
C++
/*
|
|
+----------------------------------------------------------------------+
|
|
| HipHop for PHP |
|
|
+----------------------------------------------------------------------+
|
|
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
|
|
| Copyright (c) 1997-2010 The PHP Group |
|
|
+----------------------------------------------------------------------+
|
|
| 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 {
|
|
|
|
IMPLEMENT_CLASS(StaticWaitHandle);
|
|
/*
|
|
void HPHP::c_StaticWaitHandle::t___construct()
|
|
_ZN4HPHP18c_StaticWaitHandle13t___constructEv
|
|
|
|
this_ => rdi
|
|
*/
|
|
|
|
void th_16StaticWaitHandle___construct(ObjectData* this_) asm("_ZN4HPHP18c_StaticWaitHandle13t___constructEv");
|
|
|
|
TypedValue* tg_16StaticWaitHandle___construct(HPHP::VM::ActRec *ar) {
|
|
TypedValue rv;
|
|
int64_t count = ar->numArgs();
|
|
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
|
ObjectData* this_ = (ar->hasThis() ? ar->getThis() : NULL);
|
|
if (this_) {
|
|
if (count == 0LL) {
|
|
rv.m_data.num = 0LL;
|
|
rv.m_type = KindOfNull;
|
|
th_16StaticWaitHandle___construct((this_));
|
|
frame_free_locals_inl(ar, 0);
|
|
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
|
return &ar->m_r;
|
|
} else {
|
|
throw_toomany_arguments_nr("StaticWaitHandle::__construct", 0, 1);
|
|
}
|
|
} else {
|
|
throw_instance_method_fatal("StaticWaitHandle::__construct");
|
|
}
|
|
rv.m_data.num = 0LL;
|
|
rv.m_type = KindOfNull;
|
|
frame_free_locals_inl(ar, 0);
|
|
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
|
return &ar->m_r;
|
|
return &ar->m_r;
|
|
}
|
|
|
|
|
|
} // !HPHP
|
|
|