jboolean Jvm_inflate(void *data, JvmGetByteProc getByteProc, int compLen, unsigned char** outFileH, int decompLen) { SETUP_ERROR_CHECKER_ARG; UsingFastOops fast_oops; Inflater::Fast inflater = Inflater::allocate(NULL, 0, decompLen, compLen, 0, 0 JVM_NO_CHECK); if (!CURRENT_HAS_PENDING_EXCEPTION) { unsigned char* in_data = ARRAY_BASE(inflater().in_buffer()); for (int i = 0; i < compLen; i++) { *in_data++ = getByteProc(data); } Buffer::Raw result = inflater().read_completely(JVM_SINGLE_ARG_NO_CHECK); if (result.not_null() && !CURRENT_HAS_PENDING_EXCEPTION) { jvm_memcpy(*outFileH, result().base_address(), decompLen); return KNI_TRUE; } } Thread::clear_current_pending_exception(); return KNI_FALSE; }
/* 0 */ CF_DWORD0(ADDR(4)), CF_DWORD1(POP_COUNT(0), CF_CONST(0), COND(SQ_CF_COND_ACTIVE), /* I_COUNT(1),*/ 0, CALL_COUNT(0), END_OF_PROGRAM(0), VALID_PIXEL_MODE(0), CF_INST(SQ_CF_INST_VTX), WHOLE_QUAD_MODE(0), BARRIER(1)), /* 1 */ CF_ALLOC_IMP_EXP_DWORD0( ARRAY_BASE(CF_POS0), TYPE(SQ_EXPORT_POS), RW_GPR(0), RW_REL(ABSOLUTE), INDEX_GPR(0), ELEM_SIZE(0)), CF_ALLOC_IMP_EXP_DWORD1_SWIZ( SRC_SEL_X(SQ_SEL_X), SRC_SEL_Y(SQ_SEL_Y), SRC_SEL_Z(SQ_SEL_0), SRC_SEL_W(SQ_SEL_1), R6xx_ELEM_LOOP(0), BURST_COUNT(0), END_OF_PROGRAM(0), VALID_PIXEL_MODE(0), CF_INST(SQ_CF_INST_EXPORT_DONE),