src/cpu/ppc/vm/ppc.ad
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/cpu/ppc/vm/ppc.ad	Mon Aug  4 14:31:47 2014
--- new/src/cpu/ppc/vm/ppc.ad	Mon Aug  4 14:31:46 2014

*** 1281,1292 **** --- 1281,1290 ---- return 0; // absolute addressing, no offset } bool MachConstantBaseNode::requires_postalloc_expand() const { return true; } void MachConstantBaseNode::postalloc_expand(GrowableArray <Node *> *nodes, PhaseRegAlloc *ra_) { Compile *C = ra_->C; iRegPdstOper *op_dst = new iRegPdstOper(); MachNode *m1 = new loadToc_hiNode(); MachNode *m2 = new loadToc_loNode(); m1->add_req(NULL);
*** 2227,2237 **** --- 2225,2235 ---- // Probably always true, even if a temp register is required. return true; } /* TODO: PPC port // Make a new machine dependent decode node (with its operands). - MachTypeNode *Matcher::make_decode_node(Compile *C) { assert(Universe::narrow_oop_base() == NULL && Universe::narrow_oop_shift() == 0, "This method is only implemented for unscaled cOops mode so far"); MachTypeNode *decode = new decodeN_unscaledNode(); decode->set_opnd_array(0, new iRegPdstOper()); decode->set_opnd_array(1, new iRegNsrcOper());
*** 2591,2601 **** --- 2589,2599 ---- loadConL_loNode *_large_lo; loadConLNode *_small; MachNode *_last; } loadConLNodesTuple; - loadConLNodesTuple loadConLNodesTuple_create(Compile *C, PhaseRegAlloc *ra_, Node *toc, immLOper *immSrc, OptoReg::Name reg_second, OptoReg::Name reg_first) { loadConLNodesTuple nodes; const bool large_constant_pool = true; // TODO: PPC port C->cfg()->_consts_size > 4000; if (large_constant_pool) {
*** 2667,2677 **** --- 2665,2675 ---- // Enc_class needed as consttanttablebase is not supported by postalloc // expand. enc_class postalloc_expand_load_long_constant(iRegLdst dst, immL src, iRegLdst toc) %{ // Create new nodes. loadConLNodesTuple loadConLNodes = - loadConLNodesTuple_create(C, ra_, n_toc, op_src, ra_->get_reg_second(this), ra_->get_reg_first(this)); // Push new nodes. if (loadConLNodes._large_hi) nodes->push(loadConLNodes._large_hi); if (loadConLNodes._last) nodes->push(loadConLNodes._last);
*** 3389,3399 **** --- 3387,3397 ---- // Make an operand with the bit pattern to load as float. immLOper *op_repl = new immLOper((jlong)replicate_immF(op_src->constantF())); loadConLNodesTuple loadConLNodes = - loadConLNodesTuple_create(C, ra_, n_toc, op_repl, ra_->get_reg_second(this), ra_->get_reg_first(this)); // Push new nodes. if (loadConLNodes._large_hi) nodes->push(loadConLNodes._large_hi); if (loadConLNodes._last) nodes->push(loadConLNodes._last);
*** 3609,3619 **** --- 3607,3617 ---- // postalloc expand emitter for virtual calls. enc_class postalloc_expand_java_dynamic_call_sched(method meth, iRegLdst toc) %{ // Create the nodes for loading the IC from the TOC. loadConLNodesTuple loadConLNodes_IC = - loadConLNodesTuple_create(C, ra_, n_toc, new immLOper((jlong)Universe::non_oop_word()), OptoReg::Name(R19_H_num), OptoReg::Name(R19_num)); // Create the call node. CallDynamicJavaDirectSchedNode *call = new CallDynamicJavaDirectSchedNode(); call->_method_handle_invoke = _method_handle_invoke;
*** 3763,3773 **** --- 3761,3771 ---- enc_class postalloc_expand_java_to_runtime_call(method meth, iRegLdst toc) %{ loadConLNodesTuple loadConLNodes_Entry; #if defined(ABI_ELFv2) jlong entry_address = (jlong) this->entry_point(); assert(entry_address, "need address here"); - loadConLNodes_Entry = loadConLNodesTuple_create(C, ra_, n_toc, new immLOper(entry_address), OptoReg::Name(R12_H_num), OptoReg::Name(R12_num)); #else // Get the struct that describes the function we are about to call. FunctionDescriptor* fd = (FunctionDescriptor*) this->entry_point(); assert(fd, "need fd here");
*** 3775,3791 **** --- 3773,3789 ---- // new nodes loadConLNodesTuple loadConLNodes_Env; loadConLNodesTuple loadConLNodes_Toc; // Create nodes and operands for loading the entry point. - loadConLNodes_Entry = loadConLNodesTuple_create(C, ra_, n_toc, new immLOper(entry_address), OptoReg::Name(R12_H_num), OptoReg::Name(R12_num)); // Create nodes and operands for loading the env pointer. if (fd->env() != NULL) { - loadConLNodes_Env = loadConLNodesTuple_create(C, ra_, n_toc, new immLOper((jlong) fd->env()), OptoReg::Name(R11_H_num), OptoReg::Name(R11_num)); } else { loadConLNodes_Env._large_hi = NULL; loadConLNodes_Env._large_lo = NULL; loadConLNodes_Env._small = NULL;
*** 3794,3804 **** --- 3792,3802 ---- loadConLNodes_Env._last->_opnds[1] = new immL16Oper(0); ra_->set_pair(loadConLNodes_Env._last->_idx, OptoReg::Name(R11_H_num), OptoReg::Name(R11_num)); } // Create nodes and operands for loading the Toc point. - loadConLNodes_Toc = loadConLNodesTuple_create(C, ra_, n_toc, new immLOper((jlong) fd->toc()), OptoReg::Name(R2_H_num), OptoReg::Name(R2_num)); #endif // ABI_ELFv2 // mtctr node MachNode *mtctr = new CallLeafDirect_mtctrNode();

src/cpu/ppc/vm/ppc.ad
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File