Path: blob/master/src/java.base/share/native/libjimage/NativeImageBuffer.cpp
41149 views
/*1* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.2*3* Redistribution and use in source and binary forms, with or without4* modification, are permitted provided that the following conditions5* are met:6*7* - Redistributions of source code must retain the above copyright8* notice, this list of conditions and the following disclaimer.9*10* - Redistributions in binary form must reproduce the above copyright11* notice, this list of conditions and the following disclaimer in the12* documentation and/or other materials provided with the distribution.13*14* - Neither the name of Oracle nor the names of its15* contributors may be used to endorse or promote products derived16* from this software without specific prior written permission.17*18* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS19* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,20* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR21* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR22* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,23* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,24* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR25* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF26* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING27* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS28* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.29*/3031#include <string.h>3233#include "jni.h"34#include "jni_util.h"3536#include "endian.hpp"37#include "imageDecompressor.hpp"38#include "imageFile.hpp"39#include "inttypes.hpp"40#include "jimage.hpp"41#include "osSupport.hpp"4243#include "jdk_internal_jimage_NativeImageBuffer.h"444546JNIEXPORT jobject JNICALL47Java_jdk_internal_jimage_NativeImageBuffer_getNativeMap(JNIEnv *env,48jclass cls, jstring path) {49const char *nativePath = env->GetStringUTFChars(path, NULL);50ImageFileReader* reader = ImageFileReader::find_image(nativePath);51env->ReleaseStringUTFChars(path, nativePath);5253if (reader != NULL) {54return env->NewDirectByteBuffer(reader->get_index_address(), (jlong)reader->map_size());55}5657return 0;58}596061