comparison src/share/vm/oops/constMethod.cpp @ 6934:4735d2c84362

7200776: Implement default methods in interfaces Summary: Add generic type analysis and default method selection algorithms Reviewed-by: coleenp, acorn
author kamg
date Thu, 11 Oct 2012 12:25:42 -0400
parents da91efe96a93
children 18fb7da42534
comparison
equal deleted inserted replaced
6921:a1b8cf9cf970 6934:4735d2c84362
32 // Static initialization 32 // Static initialization
33 const u2 ConstMethod::MAX_IDNUM = 0xFFFE; 33 const u2 ConstMethod::MAX_IDNUM = 0xFFFE;
34 const u2 ConstMethod::UNSET_IDNUM = 0xFFFF; 34 const u2 ConstMethod::UNSET_IDNUM = 0xFFFF;
35 35
36 ConstMethod* ConstMethod::allocate(ClassLoaderData* loader_data, 36 ConstMethod* ConstMethod::allocate(ClassLoaderData* loader_data,
37 int byte_code_size, 37 int byte_code_size,
38 int compressed_line_number_size, 38 int compressed_line_number_size,
39 int localvariable_table_length, 39 int localvariable_table_length,
40 int exception_table_length, 40 int exception_table_length,
41 int checked_exceptions_length, 41 int checked_exceptions_length,
42 TRAPS) { 42 MethodType method_type,
43 TRAPS) {
43 int size = ConstMethod::size(byte_code_size, 44 int size = ConstMethod::size(byte_code_size,
44 compressed_line_number_size, 45 compressed_line_number_size,
45 localvariable_table_length, 46 localvariable_table_length,
46 exception_table_length, 47 exception_table_length,
47 checked_exceptions_length); 48 checked_exceptions_length);
48 return new (loader_data, size, true, THREAD) ConstMethod( 49 return new (loader_data, size, true, THREAD) ConstMethod(
49 byte_code_size, compressed_line_number_size, 50 byte_code_size, compressed_line_number_size, localvariable_table_length,
50 localvariable_table_length, exception_table_length, 51 exception_table_length, checked_exceptions_length, method_type, size);
51 checked_exceptions_length, size);
52 } 52 }
53 53
54 ConstMethod::ConstMethod(int byte_code_size, 54 ConstMethod::ConstMethod(int byte_code_size,
55 int compressed_line_number_size, 55 int compressed_line_number_size,
56 int localvariable_table_length, 56 int localvariable_table_length,
57 int exception_table_length, 57 int exception_table_length,
58 int checked_exceptions_length, 58 int checked_exceptions_length,
59 int size) { 59 MethodType method_type,
60 int size) {
60 61
61 No_Safepoint_Verifier no_safepoint; 62 No_Safepoint_Verifier no_safepoint;
62 set_interpreter_kind(Interpreter::invalid); 63 set_interpreter_kind(Interpreter::invalid);
63 init_fingerprint(); 64 init_fingerprint();
64 set_constants(NULL); 65 set_constants(NULL);
67 set_constMethod_size(size); 68 set_constMethod_size(size);
68 set_inlined_tables_length(checked_exceptions_length, 69 set_inlined_tables_length(checked_exceptions_length,
69 compressed_line_number_size, 70 compressed_line_number_size,
70 localvariable_table_length, 71 localvariable_table_length,
71 exception_table_length); 72 exception_table_length);
73 set_method_type(method_type);
72 assert(this->size() == size, "wrong size for object"); 74 assert(this->size() == size, "wrong size for object");
73 } 75 }
74 76
75 77
76 // Deallocate metadata fields associated with ConstMethod* 78 // Deallocate metadata fields associated with ConstMethod*