Merge

Sat, 21 Jun 2008 10:03:31 -0700

author
never
date
Sat, 21 Jun 2008 10:03:31 -0700
changeset 652
411c61adc994
parent 646
337e0e51cd6b
parent 651
8d191a7697e2
child 653
a5838065ab24
child 654
ab65a4c9b2e8

Merge

     1.1 --- a/src/share/tools/MakeDeps/Database.java	Fri Jun 20 13:59:55 2008 -0700
     1.2 +++ b/src/share/tools/MakeDeps/Database.java	Sat Jun 21 10:03:31 2008 -0700
     1.3 @@ -36,6 +36,7 @@
     1.4    private FileList outerFiles;
     1.5    private FileList indivIncludes;
     1.6    private FileList grandInclude; // the results for the grand include file
     1.7 +  private HashMap<String,String> platformDepFiles;
     1.8    private long threshold;
     1.9    private int nOuterFiles;
    1.10    private int nPrecompiledFiles;
    1.11 @@ -57,6 +58,7 @@
    1.12      outerFiles      = new FileList("outerFiles", plat);
    1.13      indivIncludes   = new FileList("IndivIncludes", plat);
    1.14      grandInclude    = new FileList(plat.getGIFileTemplate().nameOfList(), plat);
    1.15 +    platformDepFiles = new HashMap<String,String>();
    1.16  
    1.17      threshold = t;
    1.18      nOuterFiles = 0;
    1.19 @@ -209,6 +211,10 @@
    1.20                FileList p = allFiles.listForFile(includer);
    1.21                p.setPlatformDependentInclude(pdName.dirPreStemSuff());
    1.22  
    1.23 +              // Record the implicit include of this file so that the
    1.24 +              // dependencies for precompiled headers can mention it.
    1.25 +              platformDepFiles.put(newIncluder, includer);
    1.26 +
    1.27                // Add an implicit dependency on platform
    1.28                // specific file for the generic file
    1.29  
    1.30 @@ -408,6 +414,12 @@
    1.31        for (Iterator iter = grandInclude.iterator(); iter.hasNext(); ) {
    1.32          FileList list = (FileList) iter.next();
    1.33          gd.println(list.getName() + " \\");
    1.34 +        String platformDep = platformDepFiles.get(list.getName());
    1.35 +        if (platformDep != null) {
    1.36 +            // make sure changes to the platform dependent file will
    1.37 +            // cause regeneration of the pch file.
    1.38 +            gd.println(platformDep + " \\");
    1.39 +        }
    1.40        }
    1.41        gd.println();
    1.42        gd.println();
     2.1 --- a/src/share/vm/adlc/formssel.cpp	Fri Jun 20 13:59:55 2008 -0700
     2.2 +++ b/src/share/vm/adlc/formssel.cpp	Sat Jun 21 10:03:31 2008 -0700
     2.3 @@ -729,6 +729,7 @@
     2.4          !strcmp(_matrule->_rChild->_opType,"DecodeN")    ||
     2.5          !strcmp(_matrule->_rChild->_opType,"EncodeP")    ||
     2.6          !strcmp(_matrule->_rChild->_opType,"LoadN")      ||
     2.7 +        !strcmp(_matrule->_rChild->_opType,"LoadNKlass") ||
     2.8          !strcmp(_matrule->_rChild->_opType,"CreateEx")   ||  // type of exception
     2.9          !strcmp(_matrule->_rChild->_opType,"CheckCastPP")) ) return true;
    2.10    else if ( is_ideal_load() == Form::idealP )                return true;
     3.1 --- a/src/share/vm/opto/connode.cpp	Fri Jun 20 13:59:55 2008 -0700
     3.2 +++ b/src/share/vm/opto/connode.cpp	Sat Jun 21 10:03:31 2008 -0700
     3.3 @@ -565,10 +565,12 @@
     3.4  }
     3.5  
     3.6  const Type *DecodeNNode::Value( PhaseTransform *phase ) const {
     3.7 -  if (phase->type( in(1) ) == TypeNarrowOop::NULL_PTR) {
     3.8 -    return TypePtr::NULL_PTR;
     3.9 -  }
    3.10 -  return bottom_type();
    3.11 +  const Type *t = phase->type( in(1) );
    3.12 +  if (t == Type::TOP) return Type::TOP;
    3.13 +  if (t == TypeNarrowOop::NULL_PTR) return TypePtr::NULL_PTR;
    3.14 +
    3.15 +  assert(t->isa_narrowoop(), "only  narrowoop here");
    3.16 +  return t->is_narrowoop()->make_oopptr();
    3.17  }
    3.18  
    3.19  Node* DecodeNNode::decode(PhaseTransform* phase, Node* value) {
    3.20 @@ -599,10 +601,12 @@
    3.21  }
    3.22  
    3.23  const Type *EncodePNode::Value( PhaseTransform *phase ) const {
    3.24 -  if (phase->type( in(1) ) == TypePtr::NULL_PTR) {
    3.25 -    return TypeNarrowOop::NULL_PTR;
    3.26 -  }
    3.27 -  return bottom_type();
    3.28 +  const Type *t = phase->type( in(1) );
    3.29 +  if (t == Type::TOP) return Type::TOP;
    3.30 +  if (t == TypePtr::NULL_PTR) return TypeNarrowOop::NULL_PTR;
    3.31 +
    3.32 +  assert(t->isa_oopptr(), "only oopptr here");
    3.33 +  return t->is_oopptr()->make_narrowoop();
    3.34  }
    3.35  
    3.36  Node* EncodePNode::encode(PhaseTransform* phase, Node* value) {
     4.1 --- a/src/share/vm/opto/connode.hpp	Fri Jun 20 13:59:55 2008 -0700
     4.2 +++ b/src/share/vm/opto/connode.hpp	Sat Jun 21 10:03:31 2008 -0700
     4.3 @@ -549,10 +549,18 @@
     4.4    virtual uint hash() const ;                  // { return NO_HASH; }
     4.5    virtual uint cmp( const Node &n ) const;
     4.6  public:
     4.7 -  Opaque1Node( Node *n ) : Node(0,n) {}
     4.8 +  Opaque1Node( Compile* C, Node *n ) : Node(0,n) {
     4.9 +    // Put it on the Macro nodes list to removed during macro nodes expansion.
    4.10 +    init_flags(Flag_is_macro);
    4.11 +    C->add_macro_node(this);
    4.12 +  }
    4.13    // Special version for the pre-loop to hold the original loop limit
    4.14    // which is consumed by range check elimination.
    4.15 -  Opaque1Node( Node *n, Node* orig_limit ) : Node(0,n,orig_limit) {}
    4.16 +  Opaque1Node( Compile* C, Node *n, Node* orig_limit ) : Node(0,n,orig_limit) {
    4.17 +    // Put it on the Macro nodes list to removed during macro nodes expansion.
    4.18 +    init_flags(Flag_is_macro);
    4.19 +    C->add_macro_node(this);
    4.20 +  }
    4.21    Node* original_loop_limit() { return req()==3 ? in(2) : NULL; }
    4.22    virtual int Opcode() const;
    4.23    virtual const Type *bottom_type() const { return TypeInt::INT; }
    4.24 @@ -572,7 +580,11 @@
    4.25    virtual uint hash() const ;                  // { return NO_HASH; }
    4.26    virtual uint cmp( const Node &n ) const;
    4.27  public:
    4.28 -  Opaque2Node( Node *n ) : Node(0,n) {}
    4.29 +  Opaque2Node( Compile* C, Node *n ) : Node(0,n) {
    4.30 +    // Put it on the Macro nodes list to removed during macro nodes expansion.
    4.31 +    init_flags(Flag_is_macro);
    4.32 +    C->add_macro_node(this);
    4.33 +  }
    4.34    virtual int Opcode() const;
    4.35    virtual const Type *bottom_type() const { return TypeInt::INT; }
    4.36  };
     5.1 --- a/src/share/vm/opto/gcm.cpp	Fri Jun 20 13:59:55 2008 -0700
     5.2 +++ b/src/share/vm/opto/gcm.cpp	Sat Jun 21 10:03:31 2008 -0700
     5.3 @@ -307,7 +307,6 @@
     5.4  
     5.5      // Test and set the visited bit.
     5.6      if (mid->raise_LCA_visited() == mark)  continue;  // already visited
     5.7 -    mid->set_raise_LCA_visited(mark);
     5.8  
     5.9      // Don't process the current LCA, otherwise the search may terminate early
    5.10      if (mid != LCA && mid->raise_LCA_mark() == mark) {
    5.11 @@ -317,6 +316,8 @@
    5.12        assert(early->dominates(LCA), "early is high enough");
    5.13        // Resume searching at that point, skipping intermediate levels.
    5.14        worklist.push(LCA);
    5.15 +      if (LCA == mid)
    5.16 +        continue; // Don't mark as visited to avoid early termination.
    5.17      } else {
    5.18        // Keep searching through this block's predecessors.
    5.19        for (uint j = 1, jmax = mid->num_preds(); j < jmax; j++) {
    5.20 @@ -324,6 +325,7 @@
    5.21          worklist.push(mid_parent);
    5.22        }
    5.23      }
    5.24 +    mid->set_raise_LCA_visited(mark);
    5.25    }
    5.26    return LCA;
    5.27  }
     6.1 --- a/src/share/vm/opto/loopTransform.cpp	Fri Jun 20 13:59:55 2008 -0700
     6.2 +++ b/src/share/vm/opto/loopTransform.cpp	Sat Jun 21 10:03:31 2008 -0700
     6.3 @@ -690,7 +690,7 @@
     6.4    // (the main-loop trip-counter exit value) because we will be changing
     6.5    // the exit value (via unrolling) so we cannot constant-fold away the zero
     6.6    // trip guard until all unrolling is done.
     6.7 -  Node *zer_opaq = new (C, 2) Opaque1Node(incr);
     6.8 +  Node *zer_opaq = new (C, 2) Opaque1Node(C, incr);
     6.9    Node *zer_cmp  = new (C, 3) CmpINode( zer_opaq, limit );
    6.10    Node *zer_bol  = new (C, 2) BoolNode( zer_cmp, b_test );
    6.11    register_new_node( zer_opaq, new_main_exit );
    6.12 @@ -760,7 +760,7 @@
    6.13    // pre-loop, the main-loop may not execute at all.  Later in life this
    6.14    // zero-trip guard will become the minimum-trip guard when we unroll
    6.15    // the main-loop.
    6.16 -  Node *min_opaq = new (C, 2) Opaque1Node(limit);
    6.17 +  Node *min_opaq = new (C, 2) Opaque1Node(C, limit);
    6.18    Node *min_cmp  = new (C, 3) CmpINode( pre_incr, min_opaq );
    6.19    Node *min_bol  = new (C, 2) BoolNode( min_cmp, b_test );
    6.20    register_new_node( min_opaq, new_pre_exit );
    6.21 @@ -810,7 +810,7 @@
    6.22  
    6.23    // Save the original loop limit in this Opaque1 node for
    6.24    // use by range check elimination.
    6.25 -  Node *pre_opaq  = new (C, 3) Opaque1Node(pre_limit, limit);
    6.26 +  Node *pre_opaq  = new (C, 3) Opaque1Node(C, pre_limit, limit);
    6.27  
    6.28    register_new_node( pre_limit, pre_head->in(0) );
    6.29    register_new_node( pre_opaq , pre_head->in(0) );
     7.1 --- a/src/share/vm/opto/loopUnswitch.cpp	Fri Jun 20 13:59:55 2008 -0700
     7.2 +++ b/src/share/vm/opto/loopUnswitch.cpp	Sat Jun 21 10:03:31 2008 -0700
     7.3 @@ -205,7 +205,7 @@
     7.4  
     7.5    Node *cont      = _igvn.intcon(1);
     7.6    set_ctrl(cont, C->root());
     7.7 -  Node* opq       = new (C, 2) Opaque1Node(cont);
     7.8 +  Node* opq       = new (C, 2) Opaque1Node(C, cont);
     7.9    register_node(opq, outer_loop, entry, dom_depth(entry));
    7.10    Node *bol       = new (C, 2) Conv2BNode(opq);
    7.11    register_node(bol, outer_loop, entry, dom_depth(entry));
     8.1 --- a/src/share/vm/opto/loopopts.cpp	Fri Jun 20 13:59:55 2008 -0700
     8.2 +++ b/src/share/vm/opto/loopopts.cpp	Sat Jun 21 10:03:31 2008 -0700
     8.3 @@ -2685,7 +2685,7 @@
     8.4        if( !cle->stride_is_con() ) continue;
     8.5        // Hit!  Refactor use to use the post-incremented tripcounter.
     8.6        // Compute a post-increment tripcounter.
     8.7 -      Node *opaq = new (C, 2) Opaque2Node( cle->incr() );
     8.8 +      Node *opaq = new (C, 2) Opaque2Node( C, cle->incr() );
     8.9        register_new_node( opaq, u_ctrl );
    8.10        Node *neg_stride = _igvn.intcon(-cle->stride_con());
    8.11        set_ctrl(neg_stride, C->root());
     9.1 --- a/src/share/vm/opto/machnode.cpp	Fri Jun 20 13:59:55 2008 -0700
     9.2 +++ b/src/share/vm/opto/machnode.cpp	Sat Jun 21 10:03:31 2008 -0700
     9.3 @@ -262,14 +262,16 @@
     9.4      // Now we have collected every part of the ADLC MEMORY_INTER.
     9.5      // See if it adds up to a base + offset.
     9.6      if (index != NULL) {
     9.7 -      if (!index->is_Con()) {
     9.8 -        const TypeNarrowOop* narrowoop = index->bottom_type()->isa_narrowoop();
     9.9 -        if (narrowoop != NULL) {
    9.10 -          // Memory references through narrow oops have a
    9.11 -          // funny base so grab the type from the index.
    9.12 -          adr_type = narrowoop->make_oopptr();
    9.13 -          return NULL;
    9.14 -        }
    9.15 +      const TypeNarrowOop* narrowoop = index->bottom_type()->isa_narrowoop();
    9.16 +      if (narrowoop != NULL) { // EncodeN, LoadN, LoadConN, LoadNKlass.
    9.17 +        // Memory references through narrow oops have a
    9.18 +        // funny base so grab the type from the index:
    9.19 +        // [R12 + narrow_oop_reg<<3 + offset]
    9.20 +        assert(base == NULL, "Memory references through narrow oops have no base");
    9.21 +        offset = disp;
    9.22 +        adr_type = narrowoop->make_oopptr()->add_offset(offset);
    9.23 +        return NULL;
    9.24 +      } else if (!index->is_Con()) {
    9.25          disp = Type::OffsetBot;
    9.26        } else if (disp != Type::OffsetBot) {
    9.27          const TypeX* ti = index->bottom_type()->isa_intptr_t();
    10.1 --- a/src/share/vm/opto/macro.cpp	Fri Jun 20 13:59:55 2008 -0700
    10.2 +++ b/src/share/vm/opto/macro.cpp	Sat Jun 21 10:03:31 2008 -0700
    10.3 @@ -1674,7 +1674,14 @@
    10.4          success = eliminate_locking_node(n->as_AbstractLock());
    10.5          break;
    10.6        default:
    10.7 -        assert(false, "unknown node type in macro list");
    10.8 +        if (n->Opcode() == Op_Opaque1 || n->Opcode() == Op_Opaque2) {
    10.9 +          _igvn.add_users_to_worklist(n);
   10.10 +          _igvn.hash_delete(n);
   10.11 +          _igvn.subsume_node(n, n->in(1));
   10.12 +          success = true;
   10.13 +        } else {
   10.14 +          assert(false, "unknown node type in macro list");
   10.15 +        }
   10.16        }
   10.17        assert(success == (C->macro_count() < old_macro_count), "elimination reduces macro count");
   10.18        progress = progress || success;
    11.1 --- a/src/share/vm/opto/matcher.cpp	Fri Jun 20 13:59:55 2008 -0700
    11.2 +++ b/src/share/vm/opto/matcher.cpp	Sat Jun 21 10:03:31 2008 -0700
    11.3 @@ -82,6 +82,7 @@
    11.4    idealreg2debugmask[Op_RegF] = NULL;
    11.5    idealreg2debugmask[Op_RegD] = NULL;
    11.6    idealreg2debugmask[Op_RegP] = NULL;
    11.7 +  debug_only(_mem_node = NULL;)   // Ideal memory node consumed by mach node
    11.8  }
    11.9  
   11.10  //------------------------------warp_incoming_stk_arg------------------------
   11.11 @@ -1153,7 +1154,10 @@
   11.12  
   11.13    // StoreNodes require their Memory input to match any LoadNodes
   11.14    Node *mem = n->is_Store() ? n->in(MemNode::Memory) : (Node*)1 ;
   11.15 -
   11.16 +#ifdef ASSERT
   11.17 +  Node* save_mem_node = _mem_node;
   11.18 +  _mem_node = n->is_Store() ? (Node*)n : NULL;
   11.19 +#endif
   11.20    // State object for root node of match tree
   11.21    // Allocate it on _states_arena - stack allocation can cause stack overflow.
   11.22    State *s = new (&_states_arena) State;
   11.23 @@ -1205,6 +1209,7 @@
   11.24      }
   11.25    }
   11.26  
   11.27 +  debug_only( _mem_node = save_mem_node; )
   11.28    return m;
   11.29  }
   11.30  
   11.31 @@ -1445,8 +1450,30 @@
   11.32    }
   11.33  
   11.34    // If a Memory was used, insert a Memory edge
   11.35 -  if( mem != (Node*)1 )
   11.36 +  if( mem != (Node*)1 ) {
   11.37      mach->ins_req(MemNode::Memory,mem);
   11.38 +#ifdef ASSERT
   11.39 +    // Verify adr type after matching memory operation
   11.40 +    const MachOper* oper = mach->memory_operand();
   11.41 +    if (oper != NULL && oper != (MachOper*)-1 &&
   11.42 +        mach->adr_type() != TypeRawPtr::BOTTOM) { // non-direct addressing mode
   11.43 +      // It has a unique memory operand.  Find corresponding ideal mem node.
   11.44 +      Node* m = NULL;
   11.45 +      if (leaf->is_Mem()) {
   11.46 +        m = leaf;
   11.47 +      } else {
   11.48 +        m = _mem_node;
   11.49 +        assert(m != NULL && m->is_Mem(), "expecting memory node");
   11.50 +      }
   11.51 +      if (m->adr_type() != mach->adr_type()) {
   11.52 +        m->dump();
   11.53 +        tty->print_cr("mach:");
   11.54 +        mach->dump(1);
   11.55 +      }
   11.56 +      assert(m->adr_type() == mach->adr_type(), "matcher should not change adr type");
   11.57 +    }
   11.58 +#endif
   11.59 +  }
   11.60  
   11.61    // If the _leaf is an AddP, insert the base edge
   11.62    if( leaf->is_AddP() )
   11.63 @@ -1510,7 +1537,9 @@
   11.64      assert( newrule >= _LAST_MACH_OPER, "Do NOT chain from internal operand");
   11.65      mach->_opnds[1] = s->MachOperGenerator( _reduceOp[catch_op], C );
   11.66      Node *mem1 = (Node*)1;
   11.67 +    debug_only(Node *save_mem_node = _mem_node;)
   11.68      mach->add_req( ReduceInst(s, newrule, mem1) );
   11.69 +    debug_only(_mem_node = save_mem_node;)
   11.70    }
   11.71    return;
   11.72  }
   11.73 @@ -1520,6 +1549,7 @@
   11.74    if( s->_leaf->is_Load() ) {
   11.75      Node *mem2 = s->_leaf->in(MemNode::Memory);
   11.76      assert( mem == (Node*)1 || mem == mem2, "multiple Memories being matched at once?" );
   11.77 +    debug_only( if( mem == (Node*)1 ) _mem_node = s->_leaf;)
   11.78      mem = mem2;
   11.79    }
   11.80    if( s->_leaf->in(0) != NULL && s->_leaf->req() > 1) {
   11.81 @@ -1563,7 +1593,9 @@
   11.82          //             --> ReduceInst( newrule )
   11.83          mach->_opnds[num_opnds++] = s->MachOperGenerator( _reduceOp[catch_op], C );
   11.84          Node *mem1 = (Node*)1;
   11.85 +        debug_only(Node *save_mem_node = _mem_node;)
   11.86          mach->add_req( ReduceInst( newstate, newrule, mem1 ) );
   11.87 +        debug_only(_mem_node = save_mem_node;)
   11.88        }
   11.89      }
   11.90      assert( mach->_opnds[num_opnds-1], "" );
   11.91 @@ -1594,6 +1626,7 @@
   11.92    if( s->_leaf->is_Load() ) {
   11.93      assert( mem == (Node*)1, "multiple Memories being matched at once?" );
   11.94      mem = s->_leaf->in(MemNode::Memory);
   11.95 +    debug_only(_mem_node = s->_leaf;)
   11.96    }
   11.97    if( s->_leaf->in(0) && s->_leaf->req() > 1) {
   11.98      if( !mach->in(0) )
   11.99 @@ -1618,7 +1651,9 @@
  11.100        // Reduce the instruction, and add a direct pointer from this
  11.101        // machine instruction to the newly reduced one.
  11.102        Node *mem1 = (Node*)1;
  11.103 +      debug_only(Node *save_mem_node = _mem_node;)
  11.104        mach->add_req( ReduceInst( kid, newrule, mem1 ) );
  11.105 +      debug_only(_mem_node = save_mem_node;)
  11.106      }
  11.107    }
  11.108  }
    12.1 --- a/src/share/vm/opto/matcher.hpp	Fri Jun 20 13:59:55 2008 -0700
    12.2 +++ b/src/share/vm/opto/matcher.hpp	Sat Jun 21 10:03:31 2008 -0700
    12.3 @@ -104,6 +104,8 @@
    12.4  #ifdef ASSERT
    12.5    // Make sure only new nodes are reachable from this node
    12.6    void verify_new_nodes_only(Node* root);
    12.7 +
    12.8 +  Node* _mem_node;   // Ideal memory node consumed by mach node
    12.9  #endif
   12.10  
   12.11  public:
    13.1 --- a/src/share/vm/opto/subnode.cpp	Fri Jun 20 13:59:55 2008 -0700
    13.2 +++ b/src/share/vm/opto/subnode.cpp	Sat Jun 21 10:03:31 2008 -0700
    13.3 @@ -45,10 +45,13 @@
    13.4      return in(2)->in(2);
    13.5    }
    13.6  
    13.7 -  // Convert "(X+Y) - Y" into X
    13.8 +  // Convert "(X+Y) - Y" into X and "(X+Y) - X" into Y
    13.9    if( in(1)->Opcode() == Op_AddI ) {
   13.10      if( phase->eqv(in(1)->in(2),in(2)) )
   13.11        return in(1)->in(1);
   13.12 +    if (phase->eqv(in(1)->in(1),in(2)))
   13.13 +      return in(1)->in(2);
   13.14 +
   13.15      // Also catch: "(X + Opaque2(Y)) - Y".  In this case, 'Y' is a loop-varying
   13.16      // trip counter and X is likely to be loop-invariant (that's how O2 Nodes
   13.17      // are originally used, although the optimizer sometimes jiggers things).
    14.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2 +++ b/test/compiler/6714694/Tester.java	Sat Jun 21 10:03:31 2008 -0700
    14.3 @@ -0,0 +1,820 @@
    14.4 +/*
    14.5 + * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
    14.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    14.7 + *
    14.8 + * This code is free software; you can redistribute it and/or modify it
    14.9 + * under the terms of the GNU General Public License version 2 only, as
   14.10 + * published by the Free Software Foundation.
   14.11 + *
   14.12 + * This code is distributed in the hope that it will be useful, but WITHOUT
   14.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   14.14 + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   14.15 + * version 2 for more details (a copy is included in the LICENSE file that
   14.16 + * accompanied this code).
   14.17 + *
   14.18 + * You should have received a copy of the GNU General Public License version
   14.19 + * 2 along with this work; if not, write to the Free Software Foundation,
   14.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
   14.21 + *
   14.22 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
   14.23 + * CA 95054 USA or visit www.sun.com if you need additional information or
   14.24 + * have any questions.
   14.25 + */
   14.26 +
   14.27 +/*
   14.28 + * @test
   14.29 + * @bug 6714694
   14.30 + * @summary assertion in 64bit server vm (store->find_edge(load) != -1,"missing precedence edge") with COOPs
   14.31 + * @run main/othervm -Xcomp Tester
   14.32 + */
   14.33 +
   14.34 +/* Complexity upper bound: 38602 ops */
   14.35 +
   14.36 +interface Tester_Interface_0 {
   14.37 +}
   14.38 +
   14.39 +
   14.40 +abstract class Tester_Class_1 implements Tester_Interface_0 {
   14.41 +    static int var_1 = (false ? (short)'b' : (short)-2.4256387E38F) | (byte)('g' * -7.660532860983624E307);
   14.42 +    float var_2;
   14.43 +    byte var_3;
   14.44 +    static boolean var_4 = true;
   14.45 +    double var_5 = 8.818325751338691E307;
   14.46 +    Object var_6;
   14.47 +    static short var_7;
   14.48 +    final static char var_8 = 'x';
   14.49 +    final static float var_9 = 2.2030989E38F;
   14.50 +
   14.51 +
   14.52 +    public Tester_Class_1()
   14.53 +    {
   14.54 +        var_6 = (var_6 = (var_6 = "xkx"));
   14.55 +        switch (var_7 = (var_3 = (byte)var_5))
   14.56 +        {
   14.57 +            case 113:
   14.58 +
   14.59 +            case 114:
   14.60 +                Object var_12;
   14.61 +                var_4 = 4.9121917E37F < 1957795258;
   14.62 +                var_4 |= (var_4 ^= !var_4) ^ (var_4 |= var_4);
   14.63 +                var_3 = (var_3 = (var_3 = (byte)+6010964363045275648L));
   14.64 +                break;
   14.65 +
   14.66 +            case 102:
   14.67 +
   14.68 +        }
   14.69 +        final float var_13 = 1.2443151E38F;
   14.70 +        var_3 = (byte)(var_1 |= (var_7 = (var_3 = (byte)var_5)));
   14.71 +        var_2 = (long)(var_7 = (var_3 = (byte)var_8)) - (var_7 = (byte)386742565);
   14.72 +        var_4 &= var_4;
   14.73 +        var_2 = (long)((var_3 = (var_3 = (byte)var_8)) / ((var_4 ^= (var_5 /= var_9) <= (var_1 &= var_1)) ? (var_7 = (short)6872886933545336832L) : (byte)var_8));
   14.74 +        var_6 = "uqflj";
   14.75 +        {
   14.76 +            switch (((new String[var_3 = (byte)var_5])[var_3 = (byte)8097442298927900672L]).charAt(1540148550))
   14.77 +            {
   14.78 +                case 'l':
   14.79 +
   14.80 +            }
   14.81 +            var_2 = (var_7 = (byte)2.9859440663042714E307);
   14.82 +            {
   14.83 +                Object var_14;
   14.84 +            }
   14.85 +            var_3 = (var_3 = (var_3 = (byte)3.3634427195550136E307));
   14.86 +            var_5 += '_';
   14.87 +        }
   14.88 +        var_6 = "tempfdjen";
   14.89 +        var_3 = (((var_4 ^= new String("jmwiwmk").endsWith("rtlstmnuo")) ? !true : !false) ? true : (var_4 = false)) ? (var_3 = (byte)var_5) : (var_3 = (var_3 = (byte)var_5));
   14.90 +        var_4 ^= false;
   14.91 +        if (1.6435436003809043E307 != var_9)
   14.92 +        {
   14.93 +            boolean var_15 = true;
   14.94 +        }
   14.95 +        else
   14.96 +        {
   14.97 +            var_4 = false;
   14.98 +        }
   14.99 +        {
  14.100 +            Object var_16 = ((new Tester_Class_1[(byte)71832757][(byte)1.0694914E38F])[(byte)1315653071][(byte)(var_7 = (var_7 = (byte)var_8))]).var_6 = new int[(byte)var_8][var_3 = (byte)1933656747];
  14.101 +        }
  14.102 +        var_7 = (var_4 = var_4) ? (short)2.756967E37F : (short)'K';
  14.103 +        byte var_17;
  14.104 +    }
  14.105 +
  14.106 +
  14.107 +
  14.108 +    abstract public Tester_Interface_0 func_0(double[][] arg_0, final Object arg_1);
  14.109 +
  14.110 +
  14.111 +    final double func_0(final float arg_0, final short arg_1, final boolean arg_2)
  14.112 +    {
  14.113 +        var_6 = (var_6 = "lmshbl");
  14.114 +        var_3 = (var_3 = (new byte[(new byte[(byte)arg_1])[var_3 = (byte)arg_0]])[var_3 = (var_3 = (byte)(var_1 >>>= var_1))]);
  14.115 +        var_5 %= (var_3 = (byte)1909375874);
  14.116 +        var_1 /= (char)(short)'i';
  14.117 +        {
  14.118 +            "vgar".length();
  14.119 +        }
  14.120 +        int var_10;
  14.121 +        {
  14.122 +            var_3 = (var_4 &= true) ? (byte)(var_5 *= 6375499657746206720L) : (byte)+ (var_5 /= var_9);
  14.123 +            var_7 = (var_4 = true) ? (byte)(false ? (short)749593632 : (byte)8.692758043260743E307) : (byte)var_1;
  14.124 +            ((new Tester_Class_1[(byte)1.2890904018345944E308])[(byte)var_1]).var_3 = (var_3 = (byte)arg_0);
  14.125 +            var_4 = true ^ var_4;
  14.126 +        }
  14.127 +        {
  14.128 +            var_1 ^= (var_3 = (var_3 = (var_3 = (byte)'U')));
  14.129 +        }
  14.130 +        var_3 = (var_3 = (var_3 = (var_3 = (byte)arg_1)));
  14.131 +        char var_11;
  14.132 +        var_1 += (var_2 = (var_7 = arg_1));
  14.133 +        {
  14.134 +            var_7 = (var_7 = arg_1);
  14.135 +        }
  14.136 +        var_7 = arg_1;
  14.137 +        var_6 = (new char[(byte)1985094111797788672L][var_3 = (byte)3112604683090268160L])[var_3 = (byte)~ (var_3 = (byte)(var_5 += var_1))];
  14.138 +        var_3 = (var_3 = (var_3 = (var_3 = (byte)3694858000202921984L)));
  14.139 +        var_1 /= ~ ((byte)1311538336);
  14.140 +        (((var_4 |= arg_2 ? !true && arg_2 : false) ? arg_2 : arg_2) ? "iih".substring(~ (var_3 = (byte)3.5401308E37F), 'g' * arg_1) : "gynskmvoj").trim();
  14.141 +        var_3 = (var_3 = arg_2 ? (byte)+ ~5247392660383928320L : (byte)8392160279007184896L);
  14.142 +        var_3 = (var_3 = (var_3 = (byte)var_8));
  14.143 +        return (var_5 += 7.157559E37F) + (var_11 = 'V');
  14.144 +    }
  14.145 +
  14.146 +    public String toString()
  14.147 +    {
  14.148 +        String result =  "[\n";
  14.149 +        result += "Tester_Class_1.var_7 = "; result += Tester.Printer.print(var_7);
  14.150 +        result += "\n";
  14.151 +        result += "Tester_Class_1.var_3 = "; result += Tester.Printer.print(var_3);
  14.152 +        result += "\n";
  14.153 +        result += "Tester_Class_1.var_8 = "; result += Tester.Printer.print(var_8);
  14.154 +        result += "\n";
  14.155 +        result += "Tester_Class_1.var_1 = "; result += Tester.Printer.print(var_1);
  14.156 +        result += "\n";
  14.157 +        result += "Tester_Class_1.var_4 = "; result += Tester.Printer.print(var_4);
  14.158 +        result += "\n";
  14.159 +        result += "Tester_Class_1.var_5 = "; result += Tester.Printer.print(var_5);
  14.160 +        result += "\n";
  14.161 +        result += "Tester_Class_1.var_2 = "; result += Tester.Printer.print(var_2);
  14.162 +        result += "\n";
  14.163 +        result += "Tester_Class_1.var_9 = "; result += Tester.Printer.print(var_9);
  14.164 +        result += "\n";
  14.165 +        result += "Tester_Class_1.var_6 = "; result += Tester.Printer.print(var_6);
  14.166 +        result += "";
  14.167 +        result += "\n]";
  14.168 +        return result;
  14.169 +    }
  14.170 +}
  14.171 +
  14.172 +
  14.173 +class Tester_Class_2 extends Tester_Class_1 implements Tester_Interface_0 {
  14.174 +    final static String var_18 = false | Tester_Class_1.var_4 | (Tester_Class_1.var_4 &= (Tester_Class_1.var_4 |= (Tester_Class_1.var_4 = var_4))) ? "tbobyhqne" : "";
  14.175 +    static String var_19 = "acxfj";
  14.176 +
  14.177 +
  14.178 +    public Tester_Class_2()
  14.179 +    {
  14.180 +        Tester_Class_1.var_4 = !Tester_Class_1.var_4;
  14.181 +        var_1++;
  14.182 +        var_2 = (byte)2.4009747E38F;
  14.183 +        new String();
  14.184 +        var_6 = (var_19 = "hsshyw");
  14.185 +        var_19 = var_19;
  14.186 +    }
  14.187 +
  14.188 +
  14.189 +    public Tester_Interface_0 func_0(double[][] arg_0, final Object arg_1)
  14.190 +    {
  14.191 +        var_5 = 4.0352057E37F;
  14.192 +        (((false && ! ((Tester_Class_1.var_4 |= !true) ^ (Tester_Class_1.var_4 ^ false))) ^ (var_4 &= true) ? var_4 : (var_4 ^= true)) ? "spskwj" : "xcqianm").length();
  14.193 +        ((var_4 |= (Tester_Class_1.var_4 ^= Tester_Class_1.var_4) ? (Tester_Class_1.var_4 &= false) : (Tester_Class_1.var_4 |= Tester_Class_1.var_4)) ? (Tester_Class_1)(var_6 = new double[(byte)6.628342687109622E307]) : (Tester_Class_1)arg_1).var_6 = arg_0;
  14.194 +        var_7 = (short)(byte)(short)8775325134193811456L;
  14.195 +        var_4 ^= (var_4 &= !false);
  14.196 +        ((Tester_Class_1)arg_1).var_3 = (var_3 = (byte)(var_5 %= 8.933448E37F));
  14.197 +        Tester_Class_1 var_20 = Tester_Class_1.var_4 ? (Tester_Class_1)arg_1 : (Tester_Class_1)arg_1;
  14.198 +        {
  14.199 +            var_19.endsWith(var_19);
  14.200 +            var_6 = var_20;
  14.201 +            (var_20 = (var_20 = var_20)).var_2 = (short)('p' <= 1986176769 % (int)2242661265280256000L % 2664882044098145280L ? ~ (var_3 = (byte)1.1892553447967157E308) & ~1806805036550279168L : (var_7 = (byte)var_8));
  14.202 +        }
  14.203 +        final boolean var_21 = Tester_Class_1.var_4;
  14.204 +        var_20.var_3 = (var_3 = (var_20.var_3 = (byte)'t'));
  14.205 +        boolean var_22 = true;
  14.206 +        Tester_Class_1.var_4 |= (var_4 = var_21);
  14.207 +        var_19 = "ocn";
  14.208 +        var_19 = var_19;
  14.209 +        var_1 *= Tester_Class_1.var_8;
  14.210 +        var_20 = var_22 ? var_20 : var_20;
  14.211 +        var_7 = var_21 ? (byte)+ ((byte)var_1) : ((var_20 = (var_20 = var_20)).var_3 = (var_3 = (var_3 = (byte)'L')));
  14.212 +        return true ? (var_20 = var_20) : (new Tester_Interface_0[(byte)5618282952859970560L])[var_3 = (byte)Tester_Class_1.var_8];
  14.213 +    }
  14.214 +
  14.215 +
  14.216 +    public boolean equals(Object obj)
  14.217 +    {
  14.218 +        Tester_Class_1.var_7 = (var_7 = (((Tester_Class_1)obj).var_3 = (byte)var_9));
  14.219 +        {
  14.220 +            final Tester_Class_1 var_23 = (Tester_Class_1)obj;
  14.221 +        }
  14.222 +        ++Tester_Class_1.var_1;
  14.223 +        var_5 = (Tester_Class_1.var_7 = var_4 ? (Tester_Class_1.var_7 = (((Tester_Class_1)obj).var_3 = (byte)Tester_Class_1.var_8)) : (var_7 = (byte)var_9));
  14.224 +        ((Tester_Class_1)obj).var_6 = var_18.replace(Tester_Class_1.var_8, Tester_Class_1.var_8);
  14.225 +        ((new Tester_Class_1[((Tester_Class_1)(obj = new char[var_3 = (byte)Tester_Class_1.var_8])).var_3 = (((Tester_Class_1)obj).var_3 = (byte)(var_1 %= 787509251458841600L))])[(new byte[var_3 = (byte)Tester_Class_1.var_1])[((Tester_Class_1)obj).var_3 = (byte)1.2382548E38F]]).var_3 = (((Tester_Class_1)obj).var_3 = var_4 ? (byte)Tester_Class_1.var_8 : (byte)4.1085164E36F);
  14.226 +        var_1 &= var_8;
  14.227 +        var_7 = var_4 ? (var_3 = (byte)var_8) : (byte)var_5;
  14.228 +        var_19 = var_18;
  14.229 +        ("o".compareTo("kwlfk") > (var_2 = 5289241662482067456L) ? (Tester_Class_1)obj : (Tester_Class_1)obj).var_5 -= (((Tester_Class_1)obj).var_3 = (((Tester_Class_1)obj).var_3 = (((Tester_Class_1)obj).var_3 = (byte)var_9)));
  14.230 +        return true;
  14.231 +    }
  14.232 +
  14.233 +
  14.234 +    public String toString()
  14.235 +    {
  14.236 +        String result =  "[\n";
  14.237 +        result += "Tester_Class_2.var_7 = "; result += Tester.Printer.print(var_7);
  14.238 +        result += "\n";
  14.239 +        result += "Tester_Class_2.var_8 = "; result += Tester.Printer.print(var_8);
  14.240 +        result += "\n";
  14.241 +        result += "Tester_Class_2.var_3 = "; result += Tester.Printer.print(var_3);
  14.242 +        result += "\n";
  14.243 +        result += "Tester_Class_2.var_18 = "; result += Tester.Printer.print(var_18);
  14.244 +        result += "\n";
  14.245 +        result += "Tester_Class_2.var_19 = "; result += Tester.Printer.print(var_19);
  14.246 +        result += "\n";
  14.247 +        result += "Tester_Class_2.var_1 = "; result += Tester.Printer.print(var_1);
  14.248 +        result += "\n";
  14.249 +        result += "Tester_Class_2.var_4 = "; result += Tester.Printer.print(var_4);
  14.250 +        result += "\n";
  14.251 +        result += "Tester_Class_2.var_5 = "; result += Tester.Printer.print(var_5);
  14.252 +        result += "\n";
  14.253 +        result += "Tester_Class_2.var_2 = "; result += Tester.Printer.print(var_2);
  14.254 +        result += "\n";
  14.255 +        result += "Tester_Class_2.var_9 = "; result += Tester.Printer.print(var_9);
  14.256 +        result += "\n";
  14.257 +        result += "Tester_Class_2.var_6 = "; result += Tester.Printer.print(var_6);
  14.258 +        result += "";
  14.259 +        result += "\n]";
  14.260 +        return result;
  14.261 +    }
  14.262 +}
  14.263 +
  14.264 +
  14.265 +class Tester_Class_3 extends Tester_Class_2 implements Tester_Interface_0 {
  14.266 +    long var_24 = 9026266006808413184L;
  14.267 +    char var_25;
  14.268 +    String var_26 = ((var_4 ^= Tester_Class_1.var_4) ? (!true ? false : (var_4 |= true)) : (Tester_Class_2.var_4 ^= var_4)) ? "dkmhvhl" : (var_19 = (Tester_Class_2.var_19 = (Tester_Class_2.var_19 = var_18)));
  14.269 +    static Tester_Class_2 var_27;
  14.270 +    short var_28 = Tester_Class_2.var_7 = (short)(Tester_Class_2.var_1 &= (var_3 = (var_3 = (var_3 = (byte)Tester_Class_2.var_9))));
  14.271 +    static boolean var_29 = false;
  14.272 +    static Object[][] var_30;
  14.273 +    int var_31 = 750583762;
  14.274 +    Tester_Class_2 var_32;
  14.275 +    final static long var_33 = 3050784555932008448L;
  14.276 +
  14.277 +
  14.278 +    public Tester_Class_3()
  14.279 +    {
  14.280 +        byte[] var_34;
  14.281 +        var_4 &= (Tester_Class_1.var_4 = true);
  14.282 +        Tester_Class_1.var_1--;
  14.283 +        switch (var_28 >>= ~ ((byte)var_28))
  14.284 +        {
  14.285 +            case 9:
  14.286 +
  14.287 +            case 26:
  14.288 +                Tester_Class_1.var_4 ^= Tester_Class_1.var_4;
  14.289 +                (Tester_Class_2.var_19 = "pwtic").indexOf(Tester_Class_2.var_18);
  14.290 +                var_26.indexOf(var_19);
  14.291 +                ((Tester_Class_1)(new Tester_Interface_0[(byte)var_5])[var_24 <= var_31 ? (byte)'^' : (byte)var_24]).var_2 = 5611775846881101824L;
  14.292 +                var_29 |= (Tester_Class_2.var_4 ^= var_29);
  14.293 +                Tester_Class_2 var_35;
  14.294 +                var_24 <<= (var_31 >>= (var_25 = var_8));
  14.295 +                break;
  14.296 +
  14.297 +            case 28:
  14.298 +
  14.299 +        }
  14.300 +        new String();
  14.301 +        var_5 %= (var_25 = 'n');
  14.302 +        ((Tester_Class_2)(Tester_Class_1)(((Tester_Class_1)(var_6 = Tester_Class_2.var_18)).var_6 = (var_26 = ""))).var_2 = var_31;
  14.303 +        --var_1;
  14.304 +    }
  14.305 +
  14.306 +
  14.307 +
  14.308 +
  14.309 +    public String toString()
  14.310 +    {
  14.311 +        String result =  "[\n";
  14.312 +        result += "Tester_Class_3.var_8 = "; result += Tester.Printer.print(var_8);
  14.313 +        result += "\n";
  14.314 +        result += "Tester_Class_3.var_25 = "; result += Tester.Printer.print(var_25);
  14.315 +        result += "\n";
  14.316 +        result += "Tester_Class_3.var_1 = "; result += Tester.Printer.print(var_1);
  14.317 +        result += "\n";
  14.318 +        result += "Tester_Class_3.var_31 = "; result += Tester.Printer.print(var_31);
  14.319 +        result += "\n";
  14.320 +        result += "Tester_Class_3.var_30 = "; result += Tester.Printer.print(var_30);
  14.321 +        result += "\n";
  14.322 +        result += "Tester_Class_3.var_24 = "; result += Tester.Printer.print(var_24);
  14.323 +        result += "\n";
  14.324 +        result += "Tester_Class_3.var_33 = "; result += Tester.Printer.print(var_33);
  14.325 +        result += "\n";
  14.326 +        result += "Tester_Class_3.var_5 = "; result += Tester.Printer.print(var_5);
  14.327 +        result += "\n";
  14.328 +        result += "Tester_Class_3.var_2 = "; result += Tester.Printer.print(var_2);
  14.329 +        result += "\n";
  14.330 +        result += "Tester_Class_3.var_9 = "; result += Tester.Printer.print(var_9);
  14.331 +        result += "\n";
  14.332 +        result += "Tester_Class_3.var_7 = "; result += Tester.Printer.print(var_7);
  14.333 +        result += "\n";
  14.334 +        result += "Tester_Class_3.var_28 = "; result += Tester.Printer.print(var_28);
  14.335 +        result += "\n";
  14.336 +        result += "Tester_Class_3.var_3 = "; result += Tester.Printer.print(var_3);
  14.337 +        result += "\n";
  14.338 +        result += "Tester_Class_3.var_18 = "; result += Tester.Printer.print(var_18);
  14.339 +        result += "\n";
  14.340 +        result += "Tester_Class_3.var_19 = "; result += Tester.Printer.print(var_19);
  14.341 +        result += "\n";
  14.342 +        result += "Tester_Class_3.var_26 = "; result += Tester.Printer.print(var_26);
  14.343 +        result += "\n";
  14.344 +        result += "Tester_Class_3.var_4 = "; result += Tester.Printer.print(var_4);
  14.345 +        result += "\n";
  14.346 +        result += "Tester_Class_3.var_29 = "; result += Tester.Printer.print(var_29);
  14.347 +        result += "\n";
  14.348 +        result += "Tester_Class_3.var_27 = "; result += Tester.Printer.print(var_27);
  14.349 +        result += "\n";
  14.350 +        result += "Tester_Class_3.var_32 = "; result += Tester.Printer.print(var_32);
  14.351 +        result += "\n";
  14.352 +        result += "Tester_Class_3.var_6 = "; result += Tester.Printer.print(var_6);
  14.353 +        result += "";
  14.354 +        result += "\n]";
  14.355 +        return result;
  14.356 +    }
  14.357 +}
  14.358 +
  14.359 +public class Tester {
  14.360 +    static double var_36 = 2.679028326789642E307;
  14.361 +    float var_37;
  14.362 +    String var_38 = Tester_Class_2.var_18;
  14.363 +    static Tester_Interface_0 var_39;
  14.364 +    static char var_40 = 'D';
  14.365 +    Tester_Class_1 var_41;
  14.366 +    static int var_42;
  14.367 +    final static boolean var_43 = false;
  14.368 +
  14.369 +
  14.370 +    final static Tester_Class_2 func_0(Tester_Class_1 arg_0, final Tester_Class_2 arg_1)
  14.371 +    {
  14.372 +        "ooots".replaceFirst("rdxor", ((new Tester_Class_3[arg_1.var_3 = (byte)2.7836305E38F])[arg_0.var_3 = (byte)+ + +1.4958218616334936E307]).var_26);
  14.373 +        if (true)
  14.374 +        {
  14.375 +            arg_0 = (Tester_Class_3)arg_0;
  14.376 +            ((Tester_Class_3)arg_0).var_25 = var_40;
  14.377 +            final Tester_Class_2 var_44 = (Tester_Class_2)((Tester_Class_3.var_29 |= var_43) ? arg_0 : (arg_0.var_6 = Tester_Class_3.var_18));
  14.378 +        }
  14.379 +        else
  14.380 +        {
  14.381 +            var_39 = (Tester_Class_3.var_27 = (Tester_Class_3)arg_1);
  14.382 +        }
  14.383 +        Tester_Class_3.var_19 = "onndgsil";
  14.384 +        var_39 = arg_0;
  14.385 +        return (Tester_Class_2.var_4 &= Tester_Class_2.var_4 ^ true) ? (((Tester_Class_3)arg_0).var_32 = (Tester_Class_3)arg_1) : (((Tester_Class_3)arg_0).var_32 = (Tester_Class_3)arg_1);
  14.386 +    }
  14.387 +
  14.388 +    private final static float func_1(final short arg_0, int[][] arg_1, final long arg_2)
  14.389 +    {
  14.390 +        Tester_Class_2.var_1 *= arg_0;
  14.391 +        double var_45 = 6.841391103184752E307;
  14.392 +        long var_46;
  14.393 +        Tester_Class_2.var_1--;
  14.394 +        --var_40;
  14.395 +        ++var_40;
  14.396 +        ++Tester_Class_3.var_1;
  14.397 +        Tester_Class_1.var_4 = false;
  14.398 +        var_36 %= 'X';
  14.399 +        ++Tester_Class_2.var_1;
  14.400 +        Tester_Class_1.var_1++;
  14.401 +        return 3.2422038E38F;
  14.402 +    }
  14.403 +
  14.404 +    private final static char func_2(double arg_0, final byte arg_1, int arg_2)
  14.405 +    {
  14.406 +        --Tester_Class_3.var_1;
  14.407 +        if (Tester_Class_1.var_4)
  14.408 +        {
  14.409 +            if (var_43)
  14.410 +            {
  14.411 +                Tester_Class_3.var_1++;
  14.412 +            }
  14.413 +            else
  14.414 +            {
  14.415 +                var_40 <<= 1329560515532651520L;
  14.416 +            }
  14.417 +            (false & Tester_Class_2.var_4 ? (new Tester_Class_1[arg_1])[arg_1] : (new Tester_Class_1[arg_1][arg_1])[arg_1][arg_1]).var_3 = arg_1;
  14.418 +            Tester_Class_2.var_19 = Tester_Class_3.var_19;
  14.419 +            --var_40;
  14.420 +            final long var_47 = ~Tester_Class_3.var_33 << var_40--;
  14.421 +            ((Tester_Class_3)(new Tester_Class_2[arg_1][arg_1])[arg_1][arg_1]).var_24 *= (var_36 *= (long)arg_1 * ~arg_1);
  14.422 +            Tester_Class_2.var_19 = Tester_Class_2.var_19;
  14.423 +            ++((new Tester_Class_3[arg_1])[arg_1]).var_24;
  14.424 +        }
  14.425 +        else
  14.426 +        {
  14.427 +            var_40++;
  14.428 +        }
  14.429 +        var_40 <<= var_40;
  14.430 +        if (true)
  14.431 +        {
  14.432 +            ++arg_2;
  14.433 +        }
  14.434 +        else
  14.435 +        {
  14.436 +            Tester_Class_2.var_7 = arg_1;
  14.437 +        }
  14.438 +        boolean var_48 = true;
  14.439 +        var_36 /= arg_1;
  14.440 +        final short var_49 = 15276;
  14.441 +        Tester_Interface_0 var_50;
  14.442 +        ((Tester_Class_2.var_19 = (Tester_Class_2.var_19 = Tester_Class_2.var_19)) + "xhi").toString();
  14.443 +        arg_2++;
  14.444 +        return var_40;
  14.445 +    }
  14.446 +
  14.447 +    public final static char func_4(final boolean arg_0)
  14.448 +    {
  14.449 +        float var_52 = 2.8063675E38F;
  14.450 +        var_40--;
  14.451 +        Object var_53;
  14.452 +        Tester_Class_3.var_29 |= (Tester_Class_3.var_29 &= true);
  14.453 +        if (!Tester_Class_1.var_4)
  14.454 +        {
  14.455 +            --var_40;
  14.456 +        }
  14.457 +        else
  14.458 +        {
  14.459 +            var_52 %= 2027756834;
  14.460 +        }
  14.461 +        int var_54 = Tester_Class_1.var_1++;
  14.462 +        var_40--;
  14.463 +        long var_55;
  14.464 +        byte var_56 = 97;
  14.465 +        var_36 *= 9.75628909363086E307 % + -1.9812653793936264E306;
  14.466 +        int var_57;
  14.467 +        boolean var_58 = Tester_Class_1.var_4 ^= var_43;
  14.468 +        return 'J';
  14.469 +    }
  14.470 +
  14.471 +    static float func_5(final Object arg_0, float arg_1, final Tester_Class_2 arg_2)
  14.472 +    {
  14.473 +        var_39 = arg_2;
  14.474 +        Tester_Class_3.var_27 = arg_2;
  14.475 +        arg_1 %= 1.7777554E38F;
  14.476 +        var_39 = (Tester_Class_3.var_27 = arg_2);
  14.477 +        Tester_Class_3 var_59;
  14.478 +        {
  14.479 +            var_40 -= arg_1 - ~ (((Tester_Class_3)arg_2).var_3 = (byte)1455854212);
  14.480 +        }
  14.481 +        Object var_60 = Tester_Class_1.var_4 ? arg_0 : new String[arg_2.var_3 = (byte)arg_1][(byte)((Tester_Class_3)arg_0).var_28];
  14.482 +        Tester_Class_3.var_27 = (Tester_Class_2)(var_39 = arg_2);
  14.483 +        ((Tester_Class_3.var_4 |= var_43) ? (var_59 = (var_59 = (var_59 = (Tester_Class_3)var_60))) : (var_59 = (Tester_Class_3)arg_2)).var_24 ^= Tester_Class_3.var_1;
  14.484 +        return Tester_Class_1.var_9;
  14.485 +    }
  14.486 +
  14.487 +    private static void func_6(char arg_0, final Tester_Class_3 arg_1, String arg_2, final double arg_3)
  14.488 +    {
  14.489 +        ((new Tester_Class_1[(byte)arg_1.var_28])[(arg_1.var_32 = arg_1).var_3 = (byte)var_40]).var_2 = Tester_Class_3.var_9;
  14.490 +        double var_61;
  14.491 +        (true ? (arg_1.var_32 = arg_1) : (arg_1.var_32 = (Tester_Class_3.var_27 = (arg_1.var_32 = arg_1)))).var_6 = var_43 | (Tester_Class_2.var_4 = !Tester_Class_3.var_4) ? (arg_1.var_26 = arg_2) : (Tester_Class_2.var_19 = Tester_Class_2.var_18);
  14.492 +    }
  14.493 +
  14.494 +    private final char func_7(int arg_0)
  14.495 +    {
  14.496 +        Tester_Class_2.var_4 &= var_43;
  14.497 +        float var_62 = Tester_Class_3.var_9;
  14.498 +        --var_40;
  14.499 +        int var_63 = Tester_Class_1.var_1++;
  14.500 +        {
  14.501 +            "nncjfoit".indexOf((new int[(byte)'\\'])[(byte)var_36]);
  14.502 +            if (var_43)
  14.503 +            {
  14.504 +                ((new Tester_Class_3[(byte)var_40][(byte)Tester_Class_2.var_1])[(byte)5046997225818337280L][(byte)var_63]).var_24 >>>= var_40;
  14.505 +            }
  14.506 +            else
  14.507 +            {
  14.508 +                --var_40;
  14.509 +            }
  14.510 +            --Tester_Class_2.var_1;
  14.511 +            --var_63;
  14.512 +        }
  14.513 +        {
  14.514 +            final byte var_64 = Tester_Class_1.var_4 ? (byte)'M' : (byte)(var_62 -= + ((byte)Tester_Class_1.var_8));
  14.515 +            float var_65;
  14.516 +            var_62 *= ((Tester_Class_3)(new Tester_Interface_0[var_64])[var_64]).var_24++;
  14.517 +            var_36 /= var_64;
  14.518 +            {
  14.519 +                double var_66;
  14.520 +            }
  14.521 +            var_40 += 3500240160155094016L;
  14.522 +            ((new Tester_Class_1[var_64][var_64])[var_64][var_64]).var_3 = (byte)(Tester_Class_2.var_7 = (Tester_Class_1.var_7 = (Tester_Class_1.var_7 = (Tester_Class_1.var_7 = var_64))));
  14.523 +            ++Tester_Class_3.var_1;
  14.524 +        }
  14.525 +        --arg_0;
  14.526 +        {
  14.527 +            arg_0++;
  14.528 +        }
  14.529 +        Tester_Class_2.var_1++;
  14.530 +        var_40 &= (short)((byte)Tester_Class_2.var_8 >> (((new Tester_Class_3[(byte)var_36])[(byte)(var_40 = Tester_Class_3.var_8)]).var_3 = (byte)((byte)3.3531374E38F * var_40)));
  14.531 +        var_36 %= (var_62 = (byte)900943133);
  14.532 +        var_36 = Tester_Class_3.var_33;
  14.533 +        var_62 += (var_40 /= (byte)6766658341842315264L % (byte)'p') * (short)2019461672;
  14.534 +        --var_40;
  14.535 +        if (true)
  14.536 +        {
  14.537 +            var_62 *= 365879806965555200L;
  14.538 +        }
  14.539 +        else
  14.540 +        {
  14.541 +            var_36 -= ~9163555887358003200L;
  14.542 +        }
  14.543 +        Tester_Class_1.var_4 = Tester_Class_1.var_4;
  14.544 +        {
  14.545 +            var_40 <<= var_63;
  14.546 +        }
  14.547 +        var_40++;
  14.548 +        String var_67;
  14.549 +        return Tester_Class_1.var_8;
  14.550 +    }
  14.551 +
  14.552 +    private final static Tester_Interface_0 func_8(char arg_0, final Tester_Class_2 arg_1, final String arg_2)
  14.553 +    {
  14.554 +        ((new Tester[(byte)((Tester_Class_3)arg_1).var_28])[((Tester_Class_1)(var_39 = arg_1)).var_3 = ((Tester_Class_3.var_27 = (Tester_Class_3)arg_1).var_3 = (byte)+ -9.9100855E36F)]).var_38 = (var_43 ? "k" : Tester_Class_2.var_19).substring(350785312);
  14.555 +        return (new Tester_Interface_0[(byte)'l'])[((Tester_Class_1)(var_39 = (Tester_Class_3.var_27 = (Tester_Class_3)arg_1))).var_3 = ((Tester_Class_3.var_27 = arg_1).var_3 = (((Tester_Class_3)arg_1).var_3 = (arg_1.var_3 = (arg_1.var_3 = (byte)'['))))];
  14.556 +    }
  14.557 +
  14.558 +    private final int func_9(Tester_Class_3 arg_0, char arg_1)
  14.559 +    {
  14.560 +        final float var_68 = Tester_Class_3.var_9;
  14.561 +        Tester_Class_2.var_18.toLowerCase();
  14.562 +        double var_69;
  14.563 +        {
  14.564 +            Tester_Class_3.var_29 ^= !false || Tester_Class_2.var_4;
  14.565 +        }
  14.566 +        Tester_Class_1 var_70;
  14.567 +        (Tester_Class_3.var_27 = (Tester_Class_2)(var_70 = arg_0)).var_6 = (Tester_Class_2)((var_41 = arg_0).var_6 = (arg_0.var_6 = arg_0));
  14.568 +        "hv".codePointBefore(--Tester_Class_2.var_1);
  14.569 +        var_41 = arg_0;
  14.570 +        return ~ (((arg_0 = arg_0).var_24 &= arg_1) == 3.0764282E38F ? (byte)457565863 : ((arg_0 = arg_0).var_3 = (byte)arg_0.var_28));
  14.571 +    }
  14.572 +
  14.573 +    private static void func_10(double arg_0, final Tester_Class_3 arg_1, double arg_2)
  14.574 +    {
  14.575 +        arg_1.var_32 = 'g' != 1.520646515461986E307 ? (arg_1.var_32 = arg_1) : arg_1;
  14.576 +        Tester_Class_2.var_19.startsWith(Tester_Class_2.var_19 = Tester_Class_3.var_18);
  14.577 +        Tester_Class_1.var_4 ^= true & (arg_1.var_3 = (arg_1.var_3 = (byte)- ((byte)1.4509185661781193E308))) > (arg_1.var_2 = var_40);
  14.578 +        var_36 += Tester_Class_3.var_9;
  14.579 +    }
  14.580 +
  14.581 +    Tester_Interface_0 func_12(final Object arg_0, float arg_1)
  14.582 +    {
  14.583 +        switch (((Tester_Class_3)arg_0).var_3 = (byte)arg_1)
  14.584 +        {
  14.585 +            case 4:
  14.586 +                var_41 = (Tester_Class_3)(var_39 = (Tester_Class_3.var_27 = (Tester_Class_3.var_27 = (Tester_Class_3)arg_0)));
  14.587 +                double var_72 = (double)3858573493713776640L;
  14.588 +                byte var_73 = (var_41 = (Tester_Class_2)arg_0).var_3 = (((Tester_Class_3)arg_0).var_3 = (byte)var_72);
  14.589 +                break;
  14.590 +
  14.591 +            case 13:
  14.592 +                (Tester_Class_3.var_27 = (((Tester_Class_3)arg_0).var_32 = (Tester_Class_3)(Tester_Class_2)arg_0)).var_3 = (Tester_Class_2.var_1 *= ((Tester_Class_3)arg_0).var_24) == (byte)Tester_Class_3.var_33 ? (byte)188693954866039808L : (byte)Tester_Class_2.var_8;
  14.593 +                break;
  14.594 +
  14.595 +            default:
  14.596 +                var_40 <<= (byte)157510337;
  14.597 +                break;
  14.598 +
  14.599 +            case 26:
  14.600 +
  14.601 +            case 122:
  14.602 +
  14.603 +        }
  14.604 +        Tester_Interface_0 var_74;
  14.605 +        long var_75;
  14.606 +        var_41 = (var_41 = (var_41 = (Tester_Class_2)arg_0));
  14.607 +        arg_1 *= 1601420762;
  14.608 +        var_74 = (var_41 = Tester_Class_1.var_4 ? (Tester_Class_3)arg_0 : (Tester_Class_2)arg_0);
  14.609 +        (Tester_Class_1.var_4 ? (Tester_Class_3)(var_39 = (Tester_Class_3)arg_0) : (true ? (Tester_Class_3)arg_0 : (Tester_Class_3)arg_0)).var_28 *= 1066935145;
  14.610 +        var_40 >>>= (byte)6.643183E36F / - ((byte)1.277596E37F);
  14.611 +        {
  14.612 +            ((Tester_Class_3)(((Tester_Class_3)((Tester_Class_3.var_29 ^= (Tester_Class_3.var_29 &= var_43)) ? (Tester_Class_2)arg_0 : (Tester_Class_2)arg_0)).var_32 = (Tester_Class_3.var_27 = (Tester_Class_2)arg_0))).var_28--;
  14.613 +        }
  14.614 +        var_38 = "qad";
  14.615 +        byte var_76 = ((Tester_Class_2)(var_39 = (Tester_Class_3)arg_0)).var_3 = true ? ((var_41 = (var_41 = (Tester_Class_3)arg_0)).var_3 = (byte)1.7128118638075888E308) : (byte)1.6562746603631249E308;
  14.616 +        return var_39 = (Tester_Class_3)((var_41 = (Tester_Class_3)arg_0).var_6 = Tester_Class_2.var_18);
  14.617 +    }
  14.618 +
  14.619 +    protected final String func_13()
  14.620 +    {
  14.621 +        float var_77;
  14.622 +        var_38 = (Tester_Class_2.var_19 = var_38);
  14.623 +        Tester_Class_2.var_4 ^= !var_43 | (Tester_Class_3.var_29 ^= Tester_Class_1.var_4);
  14.624 +        Tester_Class_3.var_1--;
  14.625 +        Tester_Class_2.var_1++;
  14.626 +        return Tester_Class_2.var_18;
  14.627 +    }
  14.628 +
  14.629 +    public static String execute()
  14.630 +    {
  14.631 +        try {
  14.632 +            Tester t = new Tester();
  14.633 +            try { t.test(); }
  14.634 +            catch(Throwable e) { }
  14.635 +            try { return t.toString(); }
  14.636 +            catch (Throwable e) { return "Error during result conversion to String"; }
  14.637 +        } catch (Throwable e) { return "Error during test execution"; }
  14.638 +    }
  14.639 +
  14.640 +    public static void main(String[] args)
  14.641 +    {
  14.642 +        try {
  14.643 +            Tester t = new Tester();
  14.644 +            try { t.test(); }
  14.645 +            catch(Throwable e) { }
  14.646 +            try { System.out.println(t); }
  14.647 +            catch(Throwable e) { }
  14.648 +        } catch (Throwable e) { }
  14.649 +    }
  14.650 +
  14.651 +    private void test()
  14.652 +    {
  14.653 +        int var_78 = 0;
  14.654 +        var_39 = (new Tester_Class_1[(byte)var_40])[(byte)Tester_Class_3.var_33];
  14.655 +        while (var_43 && (var_78 < 70 && true))
  14.656 +        {
  14.657 +            var_40 *= ~ ~Tester_Class_3.var_33 % Tester_Class_3.var_9;
  14.658 +            var_78++;
  14.659 +            var_39 = new Tester_Class_3();
  14.660 +            var_39 = (var_41 = (Tester_Class_3.var_27 = new Tester_Class_2()));
  14.661 +        }
  14.662 +        final Tester_Class_3 var_79 = (Tester_Class_1.var_4 ? ~Tester_Class_3.var_33 : var_36) == 1433764895112462336L ? new Tester_Class_3() : new Tester_Class_3();
  14.663 +        Tester_Class_2 var_80;
  14.664 +    }
  14.665 +    public String toString()
  14.666 +    {
  14.667 +        String result =  "[\n";
  14.668 +        result += "Tester.var_40 = "; result += Printer.print(var_40);
  14.669 +        result += "\n";
  14.670 +        result += "Tester.var_42 = "; result += Printer.print(var_42);
  14.671 +        result += "\n";
  14.672 +        result += "Tester.var_36 = "; result += Printer.print(var_36);
  14.673 +        result += "\n";
  14.674 +        result += "Tester.var_37 = "; result += Printer.print(var_37);
  14.675 +        result += "\n";
  14.676 +        result += "Tester.var_39 = "; result += Printer.print(var_39);
  14.677 +        result += "\n";
  14.678 +        result += "Tester.var_38 = "; result += Printer.print(var_38);
  14.679 +        result += "\n";
  14.680 +        result += "Tester.var_43 = "; result += Printer.print(var_43);
  14.681 +        result += "\n";
  14.682 +        result += "Tester.var_41 = "; result += Printer.print(var_41);
  14.683 +        result += "";
  14.684 +        result += "\n]";
  14.685 +        return result;
  14.686 +    }
  14.687 +    static class Printer
  14.688 +    {
  14.689 +        public static String print(boolean arg) { return String.valueOf(arg); }
  14.690 +        public static String print(byte arg)    { return String.valueOf(arg); }
  14.691 +        public static String print(short arg)   { return String.valueOf(arg); }
  14.692 +        public static String print(char arg)    { return String.valueOf((int)arg); }
  14.693 +        public static String print(int arg)     { return String.valueOf(arg); }
  14.694 +        public static String print(long arg)    { return String.valueOf(arg); }
  14.695 +        public static String print(float arg)   { return String.valueOf(arg); }
  14.696 +        public static String print(double arg)  { return String.valueOf(arg); }
  14.697 +
  14.698 +
  14.699 +        public static String print(Object arg)
  14.700 +        {
  14.701 +            return print_r(new java.util.Stack(), arg);
  14.702 +        }
  14.703 +
  14.704 +        private static String print_r(java.util.Stack visitedObjects, Object arg)
  14.705 +        {
  14.706 +            String result = "";
  14.707 +            if (arg == null)
  14.708 +                result += "null";
  14.709 +            else
  14.710 +            if (arg.getClass().isArray())
  14.711 +            {
  14.712 +                for (int i = 0; i < visitedObjects.size(); i++)
  14.713 +                    if (visitedObjects.elementAt(i) == arg) return "<recursive>";
  14.714 +
  14.715 +                visitedObjects.push(arg);
  14.716 +
  14.717 +                final String delimiter = ", ";
  14.718 +                result += "[";
  14.719 +
  14.720 +                if (arg instanceof Object[])
  14.721 +                {
  14.722 +                    Object[] array = (Object[]) arg;
  14.723 +                    for (int i = 0; i < array.length; i++)
  14.724 +                    {
  14.725 +                        result += print_r(visitedObjects, array[i]);
  14.726 +                        if (i < array.length - 1) result += delimiter;
  14.727 +                    }
  14.728 +                }
  14.729 +                else
  14.730 +                if (arg instanceof boolean[])
  14.731 +                {
  14.732 +                    boolean[] array = (boolean[]) arg;
  14.733 +                    for (int i = 0; i < array.length; i++)
  14.734 +                    {
  14.735 +                        result += print(array[i]);
  14.736 +                        if (i < array.length - 1) result += delimiter;
  14.737 +                    }
  14.738 +                }
  14.739 +                else
  14.740 +                if (arg instanceof byte[])
  14.741 +                {
  14.742 +                    byte[] array = (byte[]) arg;
  14.743 +                    for (int i = 0; i < array.length; i++)
  14.744 +                    {
  14.745 +                        result += print(array[i]);
  14.746 +                        if (i < array.length - 1) result += delimiter;
  14.747 +                    }
  14.748 +                }
  14.749 +                else
  14.750 +                if (arg instanceof short[])
  14.751 +                {
  14.752 +                    short[] array = (short[]) arg;
  14.753 +                    for (int i = 0; i < array.length; i++)
  14.754 +                    {
  14.755 +                        result += print(array[i]);
  14.756 +                        if (i < array.length - 1) result += delimiter;
  14.757 +                    }
  14.758 +                }
  14.759 +                else
  14.760 +                if (arg instanceof char[])
  14.761 +                {
  14.762 +                    char[] array = (char[]) arg;
  14.763 +                    for (int i = 0; i < array.length; i++)
  14.764 +                    {
  14.765 +                        result += print(array[i]);
  14.766 +                        if (i < array.length - 1) result += delimiter;
  14.767 +                    }
  14.768 +                }
  14.769 +                else
  14.770 +                if (arg instanceof int[])
  14.771 +                {
  14.772 +                     int[] array = (int[]) arg;
  14.773 +                     for (int i = 0; i < array.length; i++)
  14.774 +                     {
  14.775 +                        result += print(array[i]);
  14.776 +                        if (i < array.length - 1) result += delimiter;
  14.777 +                     }
  14.778 +                }
  14.779 +                else
  14.780 +                if (arg instanceof long[])
  14.781 +                {
  14.782 +                    long[] array = (long[]) arg;
  14.783 +                    for (int i = 0; i < array.length; i++)
  14.784 +                    {
  14.785 +                        result += print(array[i]);
  14.786 +                        if (i < array.length - 1) result += delimiter;
  14.787 +                    }
  14.788 +                }
  14.789 +                else
  14.790 +                if (arg instanceof float[])
  14.791 +                {
  14.792 +                    float[] array = (float[]) arg;
  14.793 +                    for (int i = 0; i < array.length; i++)
  14.794 +                    {
  14.795 +                        result += print(array[i]);
  14.796 +                        if (i < array.length - 1) result += delimiter;
  14.797 +                    }
  14.798 +                }
  14.799 +                else
  14.800 +                if (arg instanceof double[])
  14.801 +                {
  14.802 +                    double[] array = (double[]) arg;
  14.803 +                    for (int i = 0; i < array.length; i++)
  14.804 +                    {
  14.805 +                        result += print(array[i]);
  14.806 +                        if (i < array.length - 1) result += delimiter;
  14.807 +                    }
  14.808 +                }
  14.809 +
  14.810 +                result += "]";
  14.811 +                visitedObjects.pop();
  14.812 +
  14.813 +            } else
  14.814 +            {
  14.815 +                result += arg.toString();
  14.816 +            }
  14.817 +
  14.818 +            return result;
  14.819 +        }
  14.820 +    }
  14.821 +}
  14.822 +
  14.823 +

mercurial