00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 class MethodPrinterClosure: public MethodClosure {
00032  private:
00033    outputStream*  st;
00034    void MethodPrinterClosure::print_sendtype(Bytecodes::SendType type);
00035    void show(char* str);
00036    void indent();
00037  public:
00038   MethodPrinterClosure(outputStream* stream = NULL);
00039   void if_node(IfNode* node);
00040   void cond_node(CondNode* node);
00041   void while_node(WhileNode* node);
00042   void primitive_call_node(PrimitiveCallNode* node);
00043   void dll_call_node(DLLCallNode* node);
00044 
00045   void allocate_temporaries(int nofTemps);
00046   void push_self();
00047   void push_tos();
00048   void push_literal(oop obj);
00049   void push_argument(int no);
00050   void push_temporary(int no);
00051   void push_temporary(int no, int context);
00052   void push_instVar(int offset);
00053   void push_instVar_name(symbolOop name);
00054   void push_classVar(associationOop assoc);
00055   void push_classVar_name(symbolOop name);
00056 
00057   void push_global(associationOop obj);
00058   void store_temporary(int no);
00059   void store_temporary(int no, int context);
00060   void store_instVar(int offset);
00061   void store_instVar_name(symbolOop name);
00062   void store_classVar(associationOop assoc);
00063   void store_classVar_name(symbolOop name);
00064 
00065   void store_global(associationOop obj);
00066   void pop();
00067   void normal_send(InterpretedIC* ic);
00068   void self_send  (InterpretedIC* ic);
00069   void super_send (InterpretedIC* ic);
00070   void double_equal();
00071   void double_not_equal();
00072   void method_return(int nofArgs);
00073   void nonlocal_return(int nofArgs);
00074   void allocate_closure(AllocationType type, int nofArgs, methodOop meth);
00075   void allocate_context(int nofTemps, bool forMethod);
00076   void set_self_via_context();
00077   void copy_self_into_context();
00078   void copy_argument_into_context(int argNo, int no);
00079   void zap_scope();
00080   void predict_prim_call(primitive_desc* pdesc, int failure_start);
00081   void float_allocate(int nofFloatTemps, int nofFloatExprs);
00082   void float_floatify(Floats::Function f, int tof);
00083   void float_move(int tof, int from);
00084   void float_set(int tof, doubleOop value);
00085   void float_nullary(Floats::Function f, int tof);
00086   void float_unary(Floats::Function f, int tof);
00087   void float_binary(Floats::Function f, int tof);
00088   void float_unaryToOop(Floats::Function f, int tof);
00089   void float_binaryToOop(Floats::Function f, int tof);
00090 };