changeset in /hg/icedtea: 2009-03-04 Gary Benson <gbenson at redh...

Gary Benson gbenson at redhat.com
Thu Mar 19 03:48:17 PDT 2009


changeset c8fd76f04b59 in /hg/icedtea
details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=c8fd76f04b59
description:
	2009-03-04  Gary Benson  <gbenson at redhat.com>

		* ports/hotspot/src/share/vm/shark/sharkInliner.hpp: New file.
		* ports/hotspot/src/share/vm/shark/sharkInliner.cpp: Likewise.

		* ports/hotspot/src/share/vm/shark/sharkBlock.hpp: Moved partly into...
		* ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp: New file.
		* ports/hotspot/src/share/vm/shark/sharkBlock.cpp: Likewise into...
		* ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp: New file.

		* ports/hotspot/src/share/vm/shark/sharkState.hpp:
		Merged SharkTrackingState into SharkState, and moved
		SharkEntryState into sharkFunction.cpp and SharkPHIState
		into sharkTopLevelBlock.cpp.
		* ports/hotspot/src/share/vm/shark/sharkState.inline.hpp: Likewise.
		* ports/hotspot/src/share/vm/shark/sharkState.cpp: Likewise.

		* ports/hotspot/src/share/vm/shark/sharkConstantPool.hpp:
		s/SharkBlock/SharkTopLevelBlock/g
		* ports/hotspot/src/share/vm/shark/sharkMonitor.hpp: Likewise.
		* ports/hotspot/src/share/vm/shark/sharkMonitor.cpp: Likewise.
		* ports/hotspot/src/share/vm/shark/sharkFunction.hpp: Likewise.
		* ports/hotspot/src/share/vm/shark/sharkFunction.cpp: Likewise.

		* ports/hotspot/src/share/vm/shark/shark_globals.hpp
		(SharkMaxInlineSize): New parameter.

		* ports/hotspot/src/share/vm/shark/sharkBuilder.hpp
		(SharkBuilder::GetBlockInsertionPoint): New method.
		(SharkBuilder::CreateBlock): Likewise.

		* ports/hotspot/src/share/vm/includeDB_shark: Updated.
	(transplanted from b593d3ef9dce396c5355ea00592750acbd9337a7)

diffstat:

18 files changed, 3491 insertions(+), 2450 deletions(-)
ChangeLog                                               |   33 
ports/hotspot/src/share/vm/includeDB_shark              |  106 
ports/hotspot/src/share/vm/shark/sharkBlock.cpp         | 1904 +--------------
ports/hotspot/src/share/vm/shark/sharkBlock.hpp         |  488 +--
ports/hotspot/src/share/vm/shark/sharkBuilder.hpp       |   29 
ports/hotspot/src/share/vm/shark/sharkConstantPool.hpp  |    6 
ports/hotspot/src/share/vm/shark/sharkFunction.cpp      |   74 
ports/hotspot/src/share/vm/shark/sharkFunction.hpp      |   24 
ports/hotspot/src/share/vm/shark/sharkInliner.cpp       |  761 +++++
ports/hotspot/src/share/vm/shark/sharkInliner.hpp       |   32 
ports/hotspot/src/share/vm/shark/sharkMonitor.cpp       |    4 
ports/hotspot/src/share/vm/shark/sharkMonitor.hpp       |    6 
ports/hotspot/src/share/vm/shark/sharkState.cpp         |  243 -
ports/hotspot/src/share/vm/shark/sharkState.hpp         |  104 
ports/hotspot/src/share/vm/shark/sharkState.inline.hpp  |   59 
ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp | 1716 +++++++++++++
ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp |  344 ++
ports/hotspot/src/share/vm/shark/shark_globals.hpp      |    8 

diffs (truncated from 6546 to 500 lines):

diff -r 474e0f80ba58 -r c8fd76f04b59 ChangeLog
--- a/ChangeLog	Tue Mar 03 23:58:43 2009 +0000
+++ b/ChangeLog	Wed Mar 04 10:41:13 2009 -0500
@@ -1,3 +1,36 @@ 2009-03-03  Andrew John Hughes  <ahughes
+2009-03-04  Gary Benson  <gbenson at redhat.com>
+
+	* ports/hotspot/src/share/vm/shark/sharkInliner.hpp: New file.
+	* ports/hotspot/src/share/vm/shark/sharkInliner.cpp: Likewise.
+
+	* ports/hotspot/src/share/vm/shark/sharkBlock.hpp: Moved partly into...
+	* ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp: New file.
+	* ports/hotspot/src/share/vm/shark/sharkBlock.cpp: Likewise into...
+	* ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp: New file.
+
+	* ports/hotspot/src/share/vm/shark/sharkState.hpp:
+	Merged SharkTrackingState into SharkState, and moved
+	SharkEntryState into sharkFunction.cpp and SharkPHIState
+	into sharkTopLevelBlock.cpp.
+	* ports/hotspot/src/share/vm/shark/sharkState.inline.hpp: Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkState.cpp: Likewise.
+	
+	* ports/hotspot/src/share/vm/shark/sharkConstantPool.hpp:
+	s/SharkBlock/SharkTopLevelBlock/g
+	* ports/hotspot/src/share/vm/shark/sharkMonitor.hpp: Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkMonitor.cpp: Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkFunction.hpp: Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkFunction.cpp: Likewise.
+
+	* ports/hotspot/src/share/vm/shark/shark_globals.hpp
+	(SharkMaxInlineSize): New parameter.
+
+	* ports/hotspot/src/share/vm/shark/sharkBuilder.hpp
+	(SharkBuilder::GetBlockInsertionPoint): New method.
+	(SharkBuilder::CreateBlock): Likewise.
+
+	* ports/hotspot/src/share/vm/includeDB_shark: Updated.
+
 2009-03-03  Andrew John Hughes  <ahughes at redhat.com>
 
 	* AUTHORS: Add Michael Franz.
diff -r 474e0f80ba58 -r c8fd76f04b59 ports/hotspot/src/share/vm/includeDB_shark
--- a/ports/hotspot/src/share/vm/includeDB_shark	Tue Mar 03 23:58:43 2009 +0000
+++ b/ports/hotspot/src/share/vm/includeDB_shark	Wed Mar 04 10:41:13 2009 -0500
@@ -24,6 +24,25 @@
 //
 
 // NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps!
+
+sharkBlock.cpp                          debug.hpp
+sharkBlock.cpp                          bytecodes.hpp
+sharkBlock.cpp                          llvmHeaders.hpp
+sharkBlock.cpp                          shark_globals.hpp
+sharkBlock.cpp                          sharkBlock.hpp
+sharkBlock.cpp                          sharkBuilder.hpp
+sharkBlock.cpp                          sharkRuntime.hpp
+sharkBlock.cpp                          sharkState.inline.hpp
+sharkBlock.cpp                          sharkValue.inline.hpp
+
+sharkBlock.hpp                          allocation.hpp
+sharkBlock.hpp                          ciMethod.hpp
+sharkBlock.hpp                          ciStreams.hpp
+sharkBlock.hpp                          debug.hpp
+sharkBlock.hpp                          llvmHeaders.hpp
+sharkBlock.hpp                          sharkBuilder.hpp
+sharkBlock.hpp                          sharkState.hpp
+sharkBlock.hpp                          sharkValue.hpp
 
 ciMethod.cpp                            ciTypeFlow.hpp
 ciMethod.cpp                            methodOop.hpp
@@ -63,33 +82,35 @@ shark_globals.hpp                       
 shark_globals.hpp                       shark_globals_<arch>.hpp
 shark_globals.hpp                       globals.hpp
 
-sharkBlock.cpp                          allocation.hpp
-sharkBlock.cpp                          bytecodes.hpp
-sharkBlock.cpp                          ciField.hpp
-sharkBlock.cpp                          ciStreams.hpp
-sharkBlock.cpp                          ciType.hpp
-sharkBlock.cpp                          ciTypeFlow.hpp
-sharkBlock.cpp                          debug.hpp
-sharkBlock.cpp                          llvmHeaders.hpp
-sharkBlock.cpp                          shark_globals.hpp
-sharkBlock.cpp                          sharkBlock.hpp
-sharkBlock.cpp                          sharkBuilder.hpp
-sharkBlock.cpp                          sharkConstantPool.hpp
-sharkBlock.cpp                          sharkRuntime.hpp
-sharkBlock.cpp                          sharkState.inline.hpp
-sharkBlock.cpp                          sharkValue.inline.hpp
-
-sharkBlock.hpp                          allocation.hpp
-sharkBlock.hpp                          bytecodes.hpp
-sharkBlock.hpp                          ciStreams.hpp
-sharkBlock.hpp                          ciType.hpp
-sharkBlock.hpp                          ciTypeFlow.hpp
-sharkBlock.hpp                          llvmHeaders.hpp
-sharkBlock.hpp                          sharkBuilder.hpp
-sharkBlock.hpp                          sharkFunction.hpp
-sharkBlock.hpp                          sharkMonitor.hpp
-sharkBlock.hpp                          sharkState.hpp
-sharkBlock.hpp                          sharkValue.inline.hpp
+sharkTopLevelBlock.cpp                  allocation.hpp
+sharkTopLevelBlock.cpp                  bytecodes.hpp
+sharkTopLevelBlock.cpp                  ciField.hpp
+sharkTopLevelBlock.cpp                  ciStreams.hpp
+sharkTopLevelBlock.cpp                  ciType.hpp
+sharkTopLevelBlock.cpp                  ciTypeFlow.hpp
+sharkTopLevelBlock.cpp                  debug.hpp
+sharkTopLevelBlock.cpp                  llvmHeaders.hpp
+sharkTopLevelBlock.cpp                  shark_globals.hpp
+sharkTopLevelBlock.cpp                  sharkTopLevelBlock.hpp
+sharkTopLevelBlock.cpp                  sharkBuilder.hpp
+sharkTopLevelBlock.cpp                  sharkConstantPool.hpp
+sharkTopLevelBlock.cpp                  sharkInliner.hpp
+sharkTopLevelBlock.cpp                  sharkRuntime.hpp
+sharkTopLevelBlock.cpp                  sharkState.inline.hpp
+sharkTopLevelBlock.cpp                  sharkValue.inline.hpp
+
+sharkTopLevelBlock.hpp                  allocation.hpp
+sharkTopLevelBlock.hpp                  bytecodes.hpp
+sharkTopLevelBlock.hpp                  ciStreams.hpp
+sharkTopLevelBlock.hpp                  ciType.hpp
+sharkTopLevelBlock.hpp                  ciTypeFlow.hpp
+sharkTopLevelBlock.hpp                  llvmHeaders.hpp
+sharkTopLevelBlock.hpp                  sharkBlock.hpp
+sharkTopLevelBlock.hpp                  sharkBuilder.hpp
+sharkTopLevelBlock.hpp                  sharkFunction.hpp
+sharkTopLevelBlock.hpp                  sharkMonitor.hpp
+sharkTopLevelBlock.hpp                  sharkState.inline.hpp
+sharkTopLevelBlock.hpp                  sharkValue.inline.hpp
 
 sharkBuilder.cpp                        ciMethod.hpp
 sharkBuilder.cpp                        debug.hpp
@@ -163,8 +184,8 @@ sharkConstantPool.cpp                   
 
 sharkConstantPool.hpp                   allocation.hpp
 sharkConstantPool.hpp                   llvmHeaders.hpp
-sharkConstantPool.hpp                   sharkBlock.hpp
 sharkConstantPool.hpp                   sharkBuilder.hpp
+sharkConstantPool.hpp                   sharkTopLevelBlock.hpp
 
 sharkEntry.cpp                          sharkEntry.hpp
 
@@ -175,12 +196,12 @@ sharkFunction.cpp                       
 sharkFunction.cpp                       debug.hpp
 sharkFunction.cpp                       llvmHeaders.hpp
 sharkFunction.cpp                       shark_globals.hpp
-sharkFunction.cpp                       sharkBlock.hpp
 sharkFunction.cpp                       sharkBuilder.hpp
 sharkFunction.cpp                       sharkEntry.hpp
 sharkFunction.cpp                       sharkFunction.hpp
 sharkFunction.cpp                       sharkMonitor.hpp
 sharkFunction.cpp                       sharkState.inline.hpp
+sharkFunction.cpp                       sharkTopLevelBlock.hpp
 
 sharkFunction.hpp                       allocation.hpp
 sharkFunction.hpp                       ciEnv.hpp
@@ -189,11 +210,25 @@ sharkFunction.hpp                       
 sharkFunction.hpp                       llvmHeaders.hpp
 sharkFunction.hpp                       sharkBuilder.hpp
 
+sharkInliner.cpp                        allocation.hpp
+sharkInliner.cpp                        bytecodes.hpp
+sharkInliner.cpp                        ciField.hpp
+sharkInliner.cpp                        ciMethod.hpp
+sharkInliner.cpp                        ciStreams.hpp
+sharkInliner.cpp                        shark_globals.hpp
+sharkInliner.cpp                        sharkInliner.hpp
+sharkInliner.cpp                        sharkState.inline.hpp
+sharkInliner.cpp                        sharkValue.inline.hpp
+
+sharkInliner.hpp                        allocation.hpp
+sharkInliner.hpp                        ciMethod.hpp
+sharkInliner.hpp                        sharkState.inline.hpp
+
 sharkMonitor.cpp                        llvmHeaders.hpp
-sharkMonitor.cpp                        sharkBlock.hpp
 sharkMonitor.cpp                        sharkMonitor.hpp
 sharkMonitor.cpp                        sharkRuntime.hpp
 sharkMonitor.cpp                        sharkState.inline.hpp
+sharkMonitor.cpp                        sharkTopLevelBlock.hpp
 
 sharkMonitor.hpp                        allocation.hpp
 sharkMonitor.hpp                        llvmHeaders.hpp
@@ -218,21 +253,22 @@ sharkState.cpp                          
 sharkState.cpp                          allocation.hpp
 sharkState.cpp                          ciType.hpp
 sharkState.cpp                          ciTypeFlow.hpp
-sharkState.cpp                          sharkBlock.hpp
 sharkState.cpp                          sharkBuilder.hpp
+sharkState.cpp                          sharkCacheDecache.hpp
 sharkState.cpp                          sharkState.inline.hpp
+sharkState.cpp                          sharkTopLevelBlock.hpp
 sharkState.cpp                          sharkType.hpp
 sharkState.cpp                          sharkValue.inline.hpp
 
 sharkState.hpp                          allocation.hpp
+sharkState.hpp                          ciMethod.hpp
+sharkState.hpp                          llvmHeaders.hpp
 sharkState.hpp                          sharkBuilder.hpp
-sharkState.hpp                          sharkFunction.hpp
-sharkState.hpp                          sharkValue.inline.hpp
-sharkState.hpp                          vmreg.hpp
+sharkState.hpp                          sharkValue.hpp
 
 sharkState.inline.hpp                   sharkBlock.hpp
+sharkState.inline.hpp                   sharkBuilder.hpp
 sharkState.inline.hpp                   sharkState.hpp
-sharkState.inline.hpp                   sharkCacheDecache.hpp
 
 sharkStateScanner.cpp                   sharkState.inline.hpp
 sharkStateScanner.cpp                   sharkStateScanner.hpp
diff -r 474e0f80ba58 -r c8fd76f04b59 ports/hotspot/src/share/vm/shark/sharkBlock.cpp
--- a/ports/hotspot/src/share/vm/shark/sharkBlock.cpp	Tue Mar 03 23:58:43 2009 +0000
+++ b/ports/hotspot/src/share/vm/shark/sharkBlock.cpp	Wed Mar 04 10:41:13 2009 -0500
@@ -25,112 +25,26 @@
 
 #include "incls/_precompiled.incl"
 #include "incls/_sharkBlock.cpp.incl"
-#include "ciArrayKlass.hpp" // XXX fuck you makeDeps
-#include "ciObjArrayKlass.hpp" // XXX likewise
 
 using namespace llvm;
 
-void SharkBlock::enter(SharkBlock* predecessor, bool is_exception)
-{
-  // This block requires phis:
-  //  - if it is entered more than once
-  //  - if it is an exception handler, because in which
-  //    case we assume it's entered more than once.
-  //  - if the predecessor will be compiled after this
-  //    block, in which case we can't simple propagate
-  //    the state forward.
-  if (!needs_phis() &&
-      (entered() ||
-       is_exception ||
-       (predecessor && predecessor->index() >= index())))
-    _needs_phis = true;
-
-  // Recurse into the tree
-  if (!entered()) {
-    _entered = true;
-
-    if (!has_trap()) {
-      for (int i = 0; i < num_successors(); i++) {
-        successor(i)->enter(this, false);
-      }
-      for (int i = 0; i < num_exceptions(); i++) {
-        exception(i)->enter(this, true);
-      }
-    }
-  }
-}
-  
-void SharkBlock::initialize()
-{
-  char name[28];
-  snprintf(name, sizeof(name),
-           "bci_%d%s",
-           start(), is_private_copy() ? "_private_copy" : "");
-  _entry_block = function()->CreateBlock(name);
-}
-
-void SharkBlock::acquire_method_lock()
-{
-  Value *object;
-  if (target()->is_static()) {
-    SharkConstantPool constants(this);
-    object = constants.java_mirror();
-  }
-  else {
-    object = local(0)->jobject_value();
-  }
-  iter()->force_bci(start()); // for the decache
-  function()->monitor(0)->acquire(this, object);
-  check_pending_exception(false);
-}
-
-void SharkBlock::release_method_lock()
-{
-  function()->monitor(0)->release(this);
-
-  // We neither need nor want to check for pending exceptions here.
-  // This method is only called by handle_return, which copes with
-  // them implicitly:
-  //  - if a value is being returned then we just carry on as normal;
-  //    the caller will see the pending exception and handle it.
-  //  - if an exception is being thrown then that exception takes
-  //    priority and ours will be ignored.
-}
-
-void SharkBlock::parse()
+void SharkBlock::parse_bytecode(int start, int limit)
 {
   SharkValue *a, *b, *c, *d;
   int i;
 
-  builder()->SetInsertPoint(entry_block());
-
-  if (has_trap()) {
-    iter()->force_bci(start());
-
-    current_state()->decache_for_trap();
-    builder()->CreateCall2(
-      SharkRuntime::uncommon_trap(),
-      thread(),
-      LLVMValue::jint_constant(trap_index()));
-    builder()->CreateRetVoid();
-    return;
-  }
-
-  iter()->reset_to_bci(start());
-  bool successors_done = false;
-  while (iter()->next() != ciBytecodeStream::EOBC() && bci() < limit()) {
-    NOT_PRODUCT(a = b = c = d = NULL);    
+  iter()->reset_to_bci(start);
+  while (iter()->next_bci() < limit) {
+    NOT_PRODUCT(a = b = c = d = NULL);
+    iter()->next();
 
     if (SharkTraceBytecodes)
       tty->print_cr("%4d: %s", bci(), Bytecodes::name(bc()));
     
-    if(UseLoopSafepoints) {
-      int len;
-
+    if (UseLoopSafepoints) {
       // XXX if a lcmp is followed by an if_?? then C2 maybe-inserts
       // the safepoint before the lcmp rather than before the if.
       // Maybe we should do this too.  See parse2.cpp for details.
-
       switch (bc()) {
       case Bytecodes::_goto:
       case Bytecodes::_ifnull:
@@ -164,15 +78,15 @@ void SharkBlock::parse()
           add_safepoint();
           break;
         }
-        len = switch_table_length();
-        for (i = 0; i < len; i++) {
+        int len = switch_table_length();
+        for (int i = 0; i < len; i++) {
           if (switch_dest(i) <= bci()) {
             add_safepoint();
             break;
           }
         }
         break;
-      }
+      }  
     }
 
     switch (bc()) {
@@ -809,19 +723,16 @@ void SharkBlock::parse()
 
     case Bytecodes::_goto:
     case Bytecodes::_goto_w:
-      builder()->CreateBr(successor(ciTypeFlow::GOTO_TARGET)->entry_block());
+      do_goto();
       break;
 
     case Bytecodes::_jsr:
     case Bytecodes::_jsr_w:
-      push(SharkValue::create_returnAddress(iter()->next_bci()));
-      builder()->CreateBr(successor(ciTypeFlow::GOTO_TARGET)->entry_block());
+      do_jsr();
       break;
 
     case Bytecodes::_ret:
-      assert(local(iter()->get_index())->returnAddress_value() ==
-             successor(ciTypeFlow::GOTO_TARGET)->start(), "should be");
-      builder()->CreateBr(successor(ciTypeFlow::GOTO_TARGET)->entry_block());
+      do_ret();
       break;
 
     case Bytecodes::_ifnull:
@@ -831,11 +742,13 @@ void SharkBlock::parse()
       do_if(ICmpInst::ICMP_NE, SharkValue::null(), pop());
       break;
     case Bytecodes::_if_acmpeq:
-      b = pop(); a = pop();
+      b = pop();
+      a = pop();
       do_if(ICmpInst::ICMP_EQ, b, a);
       break;
     case Bytecodes::_if_acmpne:
-      b = pop(); a = pop();
+      b = pop();
+      a = pop();
       do_if(ICmpInst::ICMP_NE, b, a);
       break;
     case Bytecodes::_ifeq:
@@ -857,34 +770,39 @@ void SharkBlock::parse()
       do_if(ICmpInst::ICMP_SGE, SharkValue::jint_constant(0), pop());
       break;
     case Bytecodes::_if_icmpeq:
-      b = pop(); a = pop();
+      b = pop();
+      a = pop();
       do_if(ICmpInst::ICMP_EQ, b, a);
       break;
     case Bytecodes::_if_icmpne:
-      b = pop(); a = pop();
+      b = pop();
+      a = pop();
       do_if(ICmpInst::ICMP_NE, b, a);
       break;
     case Bytecodes::_if_icmplt:
-      b = pop(); a = pop();
+      b = pop();
+      a = pop();
       do_if(ICmpInst::ICMP_SLT, b, a);
       break;
     case Bytecodes::_if_icmple:
-      b = pop(); a = pop();
+      b = pop();
+      a = pop();
       do_if(ICmpInst::ICMP_SLE, b, a);
       break;
     case Bytecodes::_if_icmpgt:
-      b = pop(); a = pop();
+      b = pop();
+      a = pop();
       do_if(ICmpInst::ICMP_SGT, b, a);
       break;
     case Bytecodes::_if_icmpge:
-      b = pop(); a = pop();
+      b = pop();
+      a = pop();
       do_if(ICmpInst::ICMP_SGE, b, a);
       break;
 
     case Bytecodes::_tableswitch:
     case Bytecodes::_lookupswitch:
       do_switch();
-      successors_done = true;
       break;
 
     case Bytecodes::_invokestatic:
@@ -923,533 +841,58 @@ void SharkBlock::parse()
       ShouldNotReachHere();
     }
   }
-
-  if (falls_through()) {
-    builder()->CreateBr(successor(ciTypeFlow::FALL_THROUGH)->entry_block());
-  }
-
-  if (!successors_done) {
-    for (int i = 0; i < num_successors(); i++)
-      successor(i)->add_incoming(current_state());
-  }
-}
-
-SharkBlock* SharkBlock::bci_successor(int bci) const
-{
-  // XXX now with Linear Search Technology (tm)
-  for (int i = 0; i < num_successors(); i++) {
-    ciTypeFlow::Block *successor = ciblock()->successors()->at(i);
-    if (successor->start() == bci)
-      return function()->block(successor->pre_order());
-  }
-  ShouldNotReachHere();
-}
-
-void SharkBlock::check_zero(SharkValue *value)
-{
-  if (value->zero_checked())
-    return;
-
-  BasicBlock *zero     = function()->CreateBlock("zero");
-  BasicBlock *not_zero = function()->CreateBlock("not_zero");
-
-  Value *a, *b;
-  switch (value->basic_type()) {
-  case T_BYTE:
-  case T_CHAR:
-  case T_SHORT:
-  case T_INT:
-    a = value->jint_value();
-    b = LLVMValue::jint_constant(0);
-    break;
-  case T_LONG:
-    a = value->jlong_value();
-    b = LLVMValue::jlong_constant(0);
-    break;
-  case T_OBJECT:
-  case T_ARRAY:
-    a = value->jobject_value();
-    b = LLVMValue::LLVMValue::null();
-    break;
+}
+
+SharkState* SharkBlock::initial_current_state()
+{
+  return new SharkState(entry_state());
+}
+
+int SharkBlock::switch_default_dest()
+{
+  return iter()->get_dest_table(0);



More information about the distro-pkg-dev mailing list