Warning: session_start(): open(/var/lib/php/sessions/sess_l7t3piqnbgnm5b5k1kf4h0k8ea, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sclass guessDeepObjectSize_recursive_Data {
long size;
Set stack = identityHashSet();
Set seen = identityHashSet();
}
static long guessDeepObjectSize_recursive(O o) {
if (o == null) ret 0;
new guessDeepObjectSize_recursive_Data data;
data.stack.add(o);
while ping (nempty(data.stack)) {
/*ifdef guessDeepObjectSize_recursive_debug
print("gos stack size: " + l(data.stack));
endifdef*/
guessDeepObjectSize_recursive_step(data, popFirst(data.stack));
}
ret data.size;
}
svoid guessDeepObjectSize_recursive_step(guessDeepObjectSize_recursive_Data data, O o) {
if (!data.seen.add(o)) ret;
ifdef guessDeepObjectSize_recursive_debug
print("gos: " + getClassName(o));
endifdef
if (o instanceof Class) ret;
if (isArray(o)) {
int len;
if (o instanceof O[]) {
// len is computed correctly by unsafe_sizeOf
len = unsafe_sizeOf(o);
for (O x : (O[]) o)
if (x != null && !data.seen.contains(x)) data.stack.add(x);
} else
len = roundUpTo(javaDataModelWordSize(),
unsafe_sizeOf(_SimulatedArrayStub) + primitiveTypeSize(arrayElementType(o))*l(o));
data.size += len;
ret;
}
data.size += unsafe_sizeOf(o);
for (Field f : nonStaticNonPrimitiveFieldObjects(o)) pcall-short {
O x = f.get(o);
if (x != null && !data.seen.contains(x)) {
data.stack.add(x);
ifdef guessDeepObjectSize_recursive_debug
print("gos found: " + getClassName(o) + " " + identityHashCode(o) + " " + o);
endifdef
}
}
//fail("can't handle object type: " + className(o));
}