equal
deleted
inserted
replaced
37 #include "oops/oop.inline.hpp" |
37 #include "oops/oop.inline.hpp" |
38 #include "prims/jvmtiExport.hpp" |
38 #include "prims/jvmtiExport.hpp" |
39 #include "prims/jvmtiThreadState.hpp" |
39 #include "prims/jvmtiThreadState.hpp" |
40 #include "prims/methodHandles.hpp" |
40 #include "prims/methodHandles.hpp" |
41 #include "runtime/arguments.hpp" |
41 #include "runtime/arguments.hpp" |
42 #include "runtime/deoptimization.hpp" |
|
43 #include "runtime/frame.inline.hpp" |
42 #include "runtime/frame.inline.hpp" |
44 #include "runtime/sharedRuntime.hpp" |
43 #include "runtime/sharedRuntime.hpp" |
45 #include "runtime/stubRoutines.hpp" |
44 #include "runtime/stubRoutines.hpp" |
46 #include "runtime/synchronizer.hpp" |
45 #include "runtime/synchronizer.hpp" |
47 #include "runtime/timer.hpp" |
46 #include "runtime/timer.hpp" |
58 #else |
57 #else |
59 #define BLOCK_COMMENT(str) __ block_comment(str) |
58 #define BLOCK_COMMENT(str) __ block_comment(str) |
60 #endif |
59 #endif |
61 |
60 |
62 #define BIND(label) bind(label); BLOCK_COMMENT(#label ":") |
61 #define BIND(label) bind(label); BLOCK_COMMENT(#label ":") |
63 |
|
64 int AbstractInterpreter::BasicType_as_index(BasicType type) { |
|
65 int i = 0; |
|
66 switch (type) { |
|
67 case T_BOOLEAN: i = 0; break; |
|
68 case T_CHAR : i = 1; break; |
|
69 case T_BYTE : i = 2; break; |
|
70 case T_SHORT : i = 3; break; |
|
71 case T_INT : i = 4; break; |
|
72 case T_LONG : i = 5; break; |
|
73 case T_VOID : i = 6; break; |
|
74 case T_FLOAT : i = 7; break; |
|
75 case T_DOUBLE : i = 8; break; |
|
76 case T_OBJECT : i = 9; break; |
|
77 case T_ARRAY : i = 9; break; |
|
78 default : ShouldNotReachHere(); |
|
79 } |
|
80 assert(0 <= i && i < AbstractInterpreter::number_of_result_handlers, "index out of bounds"); |
|
81 return i; |
|
82 } |
|
83 |
62 |
84 address AbstractInterpreterGenerator::generate_slow_signature_handler() { |
63 address AbstractInterpreterGenerator::generate_slow_signature_handler() { |
85 // Slow_signature handler that respects the PPC C calling conventions. |
64 // Slow_signature handler that respects the PPC C calling conventions. |
86 // |
65 // |
87 // We get called by the native entry code with our output register |
66 // We get called by the native entry code with our output register |
577 return entry; |
556 return entry; |
578 } |
557 } |
579 |
558 |
580 return NULL; |
559 return NULL; |
581 } |
560 } |
582 |
|
583 void Deoptimization::unwind_callee_save_values(frame* f, vframeArray* vframe_array) { |
|
584 // This code is sort of the equivalent of C2IAdapter::setup_stack_frame back in |
|
585 // the days we had adapter frames. When we deoptimize a situation where a |
|
586 // compiled caller calls a compiled caller will have registers it expects |
|
587 // to survive the call to the callee. If we deoptimize the callee the only |
|
588 // way we can restore these registers is to have the oldest interpreter |
|
589 // frame that we create restore these values. That is what this routine |
|
590 // will accomplish. |
|
591 |
|
592 // At the moment we have modified c2 to not have any callee save registers |
|
593 // so this problem does not exist and this routine is just a place holder. |
|
594 |
|
595 assert(f->is_interpreted_frame(), "must be interpreted"); |
|
596 } |
|