1680 }
1681 }
1682 C2V_END
1683
1684 C2V_VMENTRY(void, writeDebugOutput, (JNIEnv*, jobject, jbyteArray bytes, jint offset, jint length))
1685 if (bytes == NULL) {
1686 THROW(vmSymbols::java_lang_NullPointerException());
1687 }
1688 typeArrayOop array = (typeArrayOop) JNIHandles::resolve(bytes);
1689
1690 // Check if offset and length are non negative.
1691 if (offset < 0 || length < 0) {
1692 THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException());
1693 }
1694 // Check if the range is valid.
1695 if ((((unsigned int) length + (unsigned int) offset) > (unsigned int) array->length())) {
1696 THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException());
1697 }
1698 while (length > 0) {
1699 jbyte* start = array->byte_at_addr(offset);
1700 tty->write((char*) start, MIN2(length, O_BUFLEN));
1701 length -= O_BUFLEN;
1702 offset += O_BUFLEN;
1703 }
1704 C2V_END
1705
1706 C2V_VMENTRY(void, flushDebugOutput, (JNIEnv*, jobject))
1707 tty->flush();
1708 C2V_END
1709
1710 C2V_VMENTRY(int, methodDataProfileDataSize, (JNIEnv*, jobject, jlong metaspace_method_data, jint position))
1711 ResourceMark rm;
1712 MethodData* mdo = CompilerToVM::asMethodData(metaspace_method_data);
1713 ProfileData* profile_data = mdo->data_at(position);
1714 if (mdo->is_valid(profile_data)) {
1715 return profile_data->size_in_bytes();
1716 }
1717 DataLayout* data = mdo->extra_data_base();
1718 DataLayout* end = mdo->extra_data_limit();
1719 for (;; data = mdo->next_extra(data)) {
1720 assert(data < end, "moved past end of extra data");
|
1680 }
1681 }
1682 C2V_END
1683
1684 C2V_VMENTRY(void, writeDebugOutput, (JNIEnv*, jobject, jbyteArray bytes, jint offset, jint length))
1685 if (bytes == NULL) {
1686 THROW(vmSymbols::java_lang_NullPointerException());
1687 }
1688 typeArrayOop array = (typeArrayOop) JNIHandles::resolve(bytes);
1689
1690 // Check if offset and length are non negative.
1691 if (offset < 0 || length < 0) {
1692 THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException());
1693 }
1694 // Check if the range is valid.
1695 if ((((unsigned int) length + (unsigned int) offset) > (unsigned int) array->length())) {
1696 THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException());
1697 }
1698 while (length > 0) {
1699 jbyte* start = array->byte_at_addr(offset);
1700 tty->write((char*) start, MIN2(length, (jint)O_BUFLEN));
1701 length -= O_BUFLEN;
1702 offset += O_BUFLEN;
1703 }
1704 C2V_END
1705
1706 C2V_VMENTRY(void, flushDebugOutput, (JNIEnv*, jobject))
1707 tty->flush();
1708 C2V_END
1709
1710 C2V_VMENTRY(int, methodDataProfileDataSize, (JNIEnv*, jobject, jlong metaspace_method_data, jint position))
1711 ResourceMark rm;
1712 MethodData* mdo = CompilerToVM::asMethodData(metaspace_method_data);
1713 ProfileData* profile_data = mdo->data_at(position);
1714 if (mdo->is_valid(profile_data)) {
1715 return profile_data->size_in_bytes();
1716 }
1717 DataLayout* data = mdo->extra_data_base();
1718 DataLayout* end = mdo->extra_data_limit();
1719 for (;; data = mdo->next_extra(data)) {
1720 assert(data < end, "moved past end of extra data");
|