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 (C) 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_endoff(max_map);
65 {
66 SafePointNode *map = new (C) SafePointNode( max_map, jvms );
67 jvms->set_map(map);
68 set_jvms(jvms);
69 assert(map == this->map(), "kit.map is set");
70 }
71
72 // Make up the parameters
73 uint i;
74 for( i = 0; i < parm_cnt; i++ )
75 map()->init_req(i, _gvn.transform(new (C) ParmNode(start, i)));
76 for( ; i<map()->req(); i++ )
77 map()->init_req(i, top()); // For nicer debugging
78
79 // GraphKit requires memory to be a MergeMemNode:
80 set_all_memory(map()->memory());
81
82 // Get base of thread-local storage area
83 Node* thread = _gvn.transform( new (C) ThreadLocalNode() );
|
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 (C) 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 (C) SafePointNode( max_map, jvms );
68 jvms->set_map(map);
69 set_jvms(jvms);
70 assert(map == this->map(), "kit.map is set");
71 }
72
73 // Make up the parameters
74 uint i;
75 for( i = 0; i < parm_cnt; i++ )
76 map()->init_req(i, _gvn.transform(new (C) ParmNode(start, i)));
77 for( ; i<map()->req(); i++ )
78 map()->init_req(i, top()); // For nicer debugging
79
80 // GraphKit requires memory to be a MergeMemNode:
81 set_all_memory(map()->memory());
82
83 // Get base of thread-local storage area
84 Node* thread = _gvn.transform( new (C) ThreadLocalNode() );
|