< prev index next >

src/hotspot/share/jvmci/jvmciCompilerToVM.cpp

Print this page




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");


< prev index next >