1 /* |
1 /* |
2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
37 class ClassFileStream: public ResourceObj { |
37 class ClassFileStream: public ResourceObj { |
38 private: |
38 private: |
39 u1* _buffer_start; // Buffer bottom |
39 u1* _buffer_start; // Buffer bottom |
40 u1* _buffer_end; // Buffer top (one past last element) |
40 u1* _buffer_end; // Buffer top (one past last element) |
41 u1* _current; // Current buffer position |
41 u1* _current; // Current buffer position |
42 char* _source; // Source of stream (directory name, ZIP/JAR archive name) |
42 const char* _source; // Source of stream (directory name, ZIP/JAR archive name) |
43 bool _need_verify; // True if verification is on for the class file |
43 bool _need_verify; // True if verification is on for the class file |
44 |
44 |
45 void truncated_file_error(TRAPS); |
45 void truncated_file_error(TRAPS); |
46 public: |
46 public: |
47 // Constructor |
47 // Constructor |
48 ClassFileStream(u1* buffer, int length, char* source); |
48 ClassFileStream(u1* buffer, int length, const char* source); |
49 |
49 |
50 // Buffer access |
50 // Buffer access |
51 u1* buffer() const { return _buffer_start; } |
51 u1* buffer() const { return _buffer_start; } |
52 int length() const { return _buffer_end - _buffer_start; } |
52 int length() const { return _buffer_end - _buffer_start; } |
53 u1* current() const { return _current; } |
53 u1* current() const { return _current; } |
54 void set_current(u1* pos) { _current = pos; } |
54 void set_current(u1* pos) { _current = pos; } |
55 char* source() const { return _source; } |
55 const char* source() const { return _source; } |
56 void set_verify(bool flag) { _need_verify = flag; } |
56 void set_verify(bool flag) { _need_verify = flag; } |
57 |
57 |
58 void check_truncated_file(bool b, TRAPS) { |
58 void check_truncated_file(bool b, TRAPS) { |
59 if (b) { |
59 if (b) { |
60 truncated_file_error(THREAD); |
60 truncated_file_error(THREAD); |