29 #include "opto/compile.hpp"
30 #include "opto/convertnode.hpp"
31 #include "opto/locknode.hpp"
32 #include "opto/memnode.hpp"
33 #include "opto/mulnode.hpp"
34 #include "opto/node.hpp"
35 #include "opto/parse.hpp"
36 #include "opto/phaseX.hpp"
37 #include "opto/rootnode.hpp"
38 #include "opto/runtime.hpp"
39 #include "opto/type.hpp"
40
41 //--------------------gen_stub-------------------------------
42 void GraphKit::gen_stub(address C_function,
43 const char *name,
44 int is_fancy_jump,
45 bool pass_tls,
46 bool return_pc) {
47 ResourceMark rm;
48
49 const TypeTuple *jdomain = C->tf()->domain();
50 const TypeTuple *jrange = C->tf()->range();
51
52 // The procedure start
53 StartNode* start = new StartNode(root(), jdomain);
54 _gvn.set_type_bottom(start);
55
56 // Make a map, with JVM state
57 uint parm_cnt = jdomain->cnt();
58 uint max_map = MAX2(2*parm_cnt+1, jrange->cnt());
59 // %%% SynchronizationEntryBCI is redundant; use InvocationEntryBci in interfaces
60 assert(SynchronizationEntryBCI == InvocationEntryBci, "");
61 JVMState* jvms = new (C) JVMState(0);
62 jvms->set_bci(InvocationEntryBci);
63 jvms->set_monoff(max_map);
64 jvms->set_scloff(max_map);
65 jvms->set_endoff(max_map);
66 {
67 SafePointNode *map = new SafePointNode( max_map, jvms );
68 jvms->set_map(map);
69 set_jvms(jvms);
|
29 #include "opto/compile.hpp"
30 #include "opto/convertnode.hpp"
31 #include "opto/locknode.hpp"
32 #include "opto/memnode.hpp"
33 #include "opto/mulnode.hpp"
34 #include "opto/node.hpp"
35 #include "opto/parse.hpp"
36 #include "opto/phaseX.hpp"
37 #include "opto/rootnode.hpp"
38 #include "opto/runtime.hpp"
39 #include "opto/type.hpp"
40
41 //--------------------gen_stub-------------------------------
42 void GraphKit::gen_stub(address C_function,
43 const char *name,
44 int is_fancy_jump,
45 bool pass_tls,
46 bool return_pc) {
47 ResourceMark rm;
48
49 const TypeTuple *jdomain = C->tf()->domain_sig();
50 const TypeTuple *jrange = C->tf()->range();
51
52 // The procedure start
53 StartNode* start = new StartNode(root(), jdomain);
54 _gvn.set_type_bottom(start);
55
56 // Make a map, with JVM state
57 uint parm_cnt = jdomain->cnt();
58 uint max_map = MAX2(2*parm_cnt+1, jrange->cnt());
59 // %%% SynchronizationEntryBCI is redundant; use InvocationEntryBci in interfaces
60 assert(SynchronizationEntryBCI == InvocationEntryBci, "");
61 JVMState* jvms = new (C) JVMState(0);
62 jvms->set_bci(InvocationEntryBci);
63 jvms->set_monoff(max_map);
64 jvms->set_scloff(max_map);
65 jvms->set_endoff(max_map);
66 {
67 SafePointNode *map = new SafePointNode( max_map, jvms );
68 jvms->set_map(map);
69 set_jvms(jvms);
|