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

Gary Benson gbenson at redhat.com
Fri Mar 20 01:52:28 PDT 2009


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

		* ports/hotspot/src/share/vm/shark/sharkValue.hpp
		(SharkValue::create_generic): Make zero_checked argument mandatory.
		(SharkValue::create_jint): Fixups for the above.
		(SharkValue::create_jlong): Likewise.
		(SharkValue::create_jfloat): Likewise.
		(SharkValue::create_jdouble): Likewise.
		(SharkValue::create_jobject): Likewise.
		(SharkValue::jint_constant): Likewise.
		(SharkValue::jlong_constant): Likewise.
		(SharkValue::null): Likewise.
		* ports/hotspot/src/share/vm/shark/sharkState.cpp
		(SharkState::merge): Likewise.
		(SharkState::cache_after_Java_call): Likewise.
		(SharkEntryState::SharkEntryState): Likewise.
		(SharkPHIState::SharkPHIState): Likewise.
		* ports/hotspot/src/share/vm/shark/sharkBlock.hpp
		(SharkBlock::do_ldc): Likewise.
		* ports/hotspot/src/share/vm/shark/sharkBlock.cpp
		(SharkBlock::parse_bytecode): Likewise.
		(SharkBlock::do_div_or_rem): Likewise.
		(SharkBlock::do_field_access): Likewise.
		(SharkBlock::do_lcmp): Likewise.
		(SharkBlock::do_fcmp): Likewise.
		* ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
		(SharkTopLevelBlock::handle_exception): Likewise.
		(SharkTopLevelBlock::do_arraylength): Likewise.
		(SharkTopLevelBlock::do_aload): Likewise.
		(SharkTopLevelBlock::do_instance_check): Likewise.
		(SharkTopLevelBlock::do_new): Likewise.
		(SharkTopLevelBlock::do_newarray): Likewise.
		(SharkTopLevelBlock::do_anewarray): Likewise.
		(SharkTopLevelBlock::do_multianewarray): Likewise.
		* ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp
		(SharkCacher::process_stack_slot): Likewise.
		(SharkCacher::process_local_slot): Likewise.
		* ports/hotspot/src/share/vm/shark/sharkIntrinsics.cpp
		(SharkIntrinsics::do_Math_minmax): Likewise.
		(SharkIntrinsics::do_Object_getClass): Likewise.
		(SharkIntrinsics::do_System_currentTimeMillis): Likewise.
		(SharkIntrinsics::do_Thread_currentThread): Likewise.
		(SharkIntrinsics::do_Unsafe_compareAndSwapInt): Likewise.

diffstat:

8 files changed, 163 insertions(+), 119 deletions(-)
ChangeLog                                               |   44 +++++++++
ports/hotspot/src/share/vm/shark/sharkBlock.cpp         |   73 +++++++--------
ports/hotspot/src/share/vm/shark/sharkBlock.hpp         |    2 
ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp  |   12 +-
ports/hotspot/src/share/vm/shark/sharkIntrinsics.cpp    |   51 +++++-----
ports/hotspot/src/share/vm/shark/sharkState.cpp         |   29 +++--
ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp |   37 +++----
ports/hotspot/src/share/vm/shark/sharkValue.hpp         |   34 ++----

diffs (truncated from 748 to 500 lines):

diff -r 5a1daec06e6d -r 96d1de001c8d ChangeLog
--- a/ChangeLog	Fri Mar 13 09:39:47 2009 -0400
+++ b/ChangeLog	Fri Mar 13 09:55:22 2009 -0400
@@ -1,3 +1,47 @@ 2009-03-13  Gary Benson  <gbenson at redhat
+2009-03-13  Gary Benson  <gbenson at redhat.com>
+
+	* ports/hotspot/src/share/vm/shark/sharkValue.hpp
+	(SharkValue::create_generic): Make zero_checked argument mandatory.
+	(SharkValue::create_jint): Fixups for the above.
+	(SharkValue::create_jlong): Likewise.
+	(SharkValue::create_jfloat): Likewise.
+	(SharkValue::create_jdouble): Likewise.
+	(SharkValue::create_jobject): Likewise.
+	(SharkValue::jint_constant): Likewise.
+	(SharkValue::jlong_constant): Likewise.
+	(SharkValue::null): Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkState.cpp
+	(SharkState::merge): Likewise.
+	(SharkState::cache_after_Java_call): Likewise.
+	(SharkEntryState::SharkEntryState): Likewise.
+	(SharkPHIState::SharkPHIState): Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkBlock.hpp
+	(SharkBlock::do_ldc): Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkBlock.cpp
+	(SharkBlock::parse_bytecode): Likewise.
+	(SharkBlock::do_div_or_rem): Likewise.
+	(SharkBlock::do_field_access): Likewise.
+	(SharkBlock::do_lcmp): Likewise.
+	(SharkBlock::do_fcmp): Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
+	(SharkTopLevelBlock::handle_exception): Likewise.
+	(SharkTopLevelBlock::do_arraylength): Likewise.
+	(SharkTopLevelBlock::do_aload): Likewise.
+	(SharkTopLevelBlock::do_instance_check): Likewise.
+	(SharkTopLevelBlock::do_new): Likewise.
+	(SharkTopLevelBlock::do_newarray): Likewise.
+	(SharkTopLevelBlock::do_anewarray): Likewise.
+	(SharkTopLevelBlock::do_multianewarray): Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp
+	(SharkCacher::process_stack_slot): Likewise.
+	(SharkCacher::process_local_slot): Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkIntrinsics.cpp
+	(SharkIntrinsics::do_Math_minmax): Likewise.
+	(SharkIntrinsics::do_Object_getClass): Likewise.
+	(SharkIntrinsics::do_System_currentTimeMillis): Likewise.
+	(SharkIntrinsics::do_Thread_currentThread): Likewise.
+	(SharkIntrinsics::do_Unsafe_compareAndSwapInt): Likewise.
+
 2009-03-13  Gary Benson  <gbenson at redhat.com>
 
 	* ports/hotspot/src/share/vm/shark/sharkInliner.cpp
diff -r 5a1daec06e6d -r 96d1de001c8d ports/hotspot/src/share/vm/shark/sharkBlock.cpp
--- a/ports/hotspot/src/share/vm/shark/sharkBlock.cpp	Fri Mar 13 09:39:47 2009 -0400
+++ b/ports/hotspot/src/share/vm/shark/sharkBlock.cpp	Fri Mar 13 09:55:22 2009 -0400
@@ -369,19 +369,19 @@ void SharkBlock::parse_bytecode(int star
       b = pop();
       a = pop();
       push(SharkValue::create_jint(
-        builder()->CreateAdd(a->jint_value(), b->jint_value())));
+        builder()->CreateAdd(a->jint_value(), b->jint_value()), false));
       break;
     case Bytecodes::_isub:
       b = pop();
       a = pop();
       push(SharkValue::create_jint(
-        builder()->CreateSub(a->jint_value(), b->jint_value())));
+        builder()->CreateSub(a->jint_value(), b->jint_value()), false));
       break;
     case Bytecodes::_imul:
       b = pop();
       a = pop();
       push(SharkValue::create_jint(
-        builder()->CreateMul(a->jint_value(), b->jint_value())));
+        builder()->CreateMul(a->jint_value(), b->jint_value()), false));
       break;
     case Bytecodes::_idiv:
       do_idiv();
@@ -392,7 +392,7 @@ void SharkBlock::parse_bytecode(int star
     case Bytecodes::_ineg:
       a = pop();      
       push(SharkValue::create_jint(
-        builder()->CreateNeg(a->jint_value())));
+        builder()->CreateNeg(a->jint_value()), a->zero_checked()));
       break;
     case Bytecodes::_ishl:
       b = pop();
@@ -401,7 +401,7 @@ void SharkBlock::parse_bytecode(int star
         builder()->CreateShl(
           a->jint_value(),
           builder()->CreateAnd(
-            b->jint_value(), LLVMValue::jint_constant(0x1f)))));
+            b->jint_value(), LLVMValue::jint_constant(0x1f))), false));
       break;
     case Bytecodes::_ishr:
       b = pop();
@@ -410,7 +410,7 @@ void SharkBlock::parse_bytecode(int star
         builder()->CreateAShr(
           a->jint_value(),
           builder()->CreateAnd(
-            b->jint_value(), LLVMValue::jint_constant(0x1f)))));
+            b->jint_value(), LLVMValue::jint_constant(0x1f))), false));
       break;
     case Bytecodes::_iushr:
       b = pop();
@@ -419,44 +419,45 @@ void SharkBlock::parse_bytecode(int star
         builder()->CreateLShr(
           a->jint_value(),
           builder()->CreateAnd(
-            b->jint_value(), LLVMValue::jint_constant(0x1f)))));
+            b->jint_value(), LLVMValue::jint_constant(0x1f))), false));
       break;
     case Bytecodes::_iand:
       b = pop();
       a = pop();
       push(SharkValue::create_jint(
-        builder()->CreateAnd(a->jint_value(), b->jint_value())));
+        builder()->CreateAnd(a->jint_value(), b->jint_value()), false));
       break;
     case Bytecodes::_ior:
       b = pop();
       a = pop();
       push(SharkValue::create_jint(
-        builder()->CreateOr(a->jint_value(), b->jint_value())));
+        builder()->CreateOr(a->jint_value(), b->jint_value()),
+        a->zero_checked() && b->zero_checked()));
       break;
     case Bytecodes::_ixor:
       b = pop();
       a = pop();
       push(SharkValue::create_jint(
-        builder()->CreateXor(a->jint_value(), b->jint_value())));
+        builder()->CreateXor(a->jint_value(), b->jint_value()), false));
       break;
 
     case Bytecodes::_ladd:
       b = pop();
       a = pop();
       push(SharkValue::create_jlong(
-        builder()->CreateAdd(a->jlong_value(), b->jlong_value())));
+        builder()->CreateAdd(a->jlong_value(), b->jlong_value()), false));
       break;
     case Bytecodes::_lsub:
       b = pop();
       a = pop();
       push(SharkValue::create_jlong(
-        builder()->CreateSub(a->jlong_value(), b->jlong_value())));
+        builder()->CreateSub(a->jlong_value(), b->jlong_value()), false));
       break;
     case Bytecodes::_lmul:
       b = pop();
       a = pop();
       push(SharkValue::create_jlong(
-        builder()->CreateMul(a->jlong_value(), b->jlong_value())));
+        builder()->CreateMul(a->jlong_value(), b->jlong_value()), false));
       break;
     case Bytecodes::_ldiv:
       do_ldiv();
@@ -467,7 +468,7 @@ void SharkBlock::parse_bytecode(int star
     case Bytecodes::_lneg:
       a = pop();      
       push(SharkValue::create_jlong(
-        builder()->CreateNeg(a->jlong_value())));
+        builder()->CreateNeg(a->jlong_value()), a->zero_checked()));
       break;
     case Bytecodes::_lshl:
       b = pop();
@@ -478,7 +479,7 @@ void SharkBlock::parse_bytecode(int star
           builder()->CreateIntCast(
             builder()->CreateAnd(
               b->jint_value(), LLVMValue::jint_constant(0x3f)),
-            SharkType::jlong_type(), true))));
+            SharkType::jlong_type(), true)), false));
       break;
     case Bytecodes::_lshr:
       b = pop();
@@ -489,7 +490,7 @@ void SharkBlock::parse_bytecode(int star
           builder()->CreateIntCast(
             builder()->CreateAnd(
               b->jint_value(), LLVMValue::jint_constant(0x3f)),
-            SharkType::jlong_type(), true))));
+            SharkType::jlong_type(), true)), false));
       break;
     case Bytecodes::_lushr:
       b = pop();
@@ -500,25 +501,26 @@ void SharkBlock::parse_bytecode(int star
           builder()->CreateIntCast(
             builder()->CreateAnd(
               b->jint_value(), LLVMValue::jint_constant(0x3f)),
-            SharkType::jlong_type(), true))));
+            SharkType::jlong_type(), true)), false));
       break;
     case Bytecodes::_land:
       b = pop();
       a = pop();
       push(SharkValue::create_jlong(
-        builder()->CreateAnd(a->jlong_value(), b->jlong_value())));
+        builder()->CreateAnd(a->jlong_value(), b->jlong_value()), false));
       break;
     case Bytecodes::_lor:
       b = pop();
       a = pop();
       push(SharkValue::create_jlong(
-        builder()->CreateOr(a->jlong_value(), b->jlong_value())));
+        builder()->CreateOr(a->jlong_value(), b->jlong_value()),
+        a->zero_checked() && b->zero_checked()));
       break;
     case Bytecodes::_lxor:
       b = pop();
       a = pop();
       push(SharkValue::create_jlong(
-        builder()->CreateXor(a->jlong_value(), b->jlong_value())));
+        builder()->CreateXor(a->jlong_value(), b->jlong_value()), false));
       break;
 
     case Bytecodes::_fadd:
@@ -600,7 +602,7 @@ void SharkBlock::parse_bytecode(int star
         SharkValue::create_jint(
           builder()->CreateAdd(
             LLVMValue::jint_constant(iter()->get_iinc_con()),
-            local(i)->jint_value())));
+            local(i)->jint_value()), false));
       break;
 
     case Bytecodes::_lcmp:
@@ -621,9 +623,10 @@ void SharkBlock::parse_bytecode(int star
       break;
 
     case Bytecodes::_i2l:
+      a = pop();      
       push(SharkValue::create_jlong(
         builder()->CreateIntCast(
-          pop()->jint_value(), SharkType::jlong_type(), true)));
+          a->jint_value(), SharkType::jlong_type(), true), a->zero_checked()));
       break;
     case Bytecodes::_i2f:
       push(SharkValue::create_jfloat(
@@ -639,7 +642,7 @@ void SharkBlock::parse_bytecode(int star
     case Bytecodes::_l2i:
       push(SharkValue::create_jint(
         builder()->CreateIntCast(
-          pop()->jlong_value(), SharkType::jint_type(), true)));
+          pop()->jlong_value(), SharkType::jint_type(), true), false));
       break;
     case Bytecodes::_l2f:
       push(SharkValue::create_jfloat(
@@ -654,11 +657,11 @@ void SharkBlock::parse_bytecode(int star
 
     case Bytecodes::_f2i:
       push(SharkValue::create_jint(
-        call_vm_leaf(SharkRuntime::f2i(), pop()->jfloat_value())));
+        call_vm_leaf(SharkRuntime::f2i(), pop()->jfloat_value()), false));
       break;
     case Bytecodes::_f2l:
       push(SharkValue::create_jlong(
-        call_vm_leaf(SharkRuntime::f2l(), pop()->jfloat_value())));
+        call_vm_leaf(SharkRuntime::f2l(), pop()->jfloat_value()), false));
       break;
     case Bytecodes::_f2d:
       push(SharkValue::create_jdouble(
@@ -668,11 +671,11 @@ void SharkBlock::parse_bytecode(int star
 
     case Bytecodes::_d2i:
       push(SharkValue::create_jint(
-        call_vm_leaf(SharkRuntime::d2i(), pop()->jdouble_value())));
+        call_vm_leaf(SharkRuntime::d2i(), pop()->jdouble_value()), false));
       break;
     case Bytecodes::_d2l:
       push(SharkValue::create_jlong(
-        call_vm_leaf(SharkRuntime::d2l(), pop()->jdouble_value())));
+        call_vm_leaf(SharkRuntime::d2l(), pop()->jdouble_value()), false));
       break;
     case Bytecodes::_d2f:
       push(SharkValue::create_jfloat(
@@ -686,13 +689,13 @@ void SharkBlock::parse_bytecode(int star
           builder()->CreateShl(
             pop()->jint_value(),
             LLVMValue::jint_constant(24)),
-          LLVMValue::jint_constant(24))));
+          LLVMValue::jint_constant(24)), false));
       break;
     case Bytecodes::_i2c:
       push(SharkValue::create_jint(
         builder()->CreateAnd(
             pop()->jint_value(),
-            LLVMValue::jint_constant(0xffff))));
+            LLVMValue::jint_constant(0xffff)), false));
       break;
     case Bytecodes::_i2s:
       push(SharkValue::create_jint(
@@ -700,7 +703,7 @@ void SharkBlock::parse_bytecode(int star
           builder()->CreateShl(
             pop()->jint_value(),
             LLVMValue::jint_constant(16)),
-          LLVMValue::jint_constant(16))));
+          LLVMValue::jint_constant(16)), false));
       break;
 
     case Bytecodes::_return:
@@ -963,9 +966,9 @@ void SharkBlock::do_div_or_rem(bool is_l
   result->addIncoming(general_result, general_case);
 
   if (is_long)
-    push(SharkValue::create_jlong(result));
+    push(SharkValue::create_jlong(result, false));
   else
-    push(SharkValue::create_jint(result));
+    push(SharkValue::create_jint(result, false));
 }
 
 void SharkBlock::do_field_access(bool is_get, bool is_field)
@@ -1011,7 +1014,7 @@ void SharkBlock::do_field_access(bool is
       field_value = builder()->CreateIntCast(
         field_value, stack_type, basic_type != T_CHAR);
 
-      value = SharkValue::create_generic(field->type(), field_value);
+      value = SharkValue::create_generic(field->type(), field_value, false);
     }
     else {
       Value *field_value = value->generic_value();
@@ -1064,7 +1067,7 @@ void SharkBlock::do_lcmp()
   result->addIncoming(LLVMValue::jint_constant(0),  eq);
   result->addIncoming(LLVMValue::jint_constant(1),  gt);
 
-  push(SharkValue::create_jint(result));
+  push(SharkValue::create_jint(result, false));
 }
 
 void SharkBlock::do_fcmp(bool is_double, bool unordered_is_greater)
@@ -1112,7 +1115,7 @@ void SharkBlock::do_fcmp(bool is_double,
   result->addIncoming(LLVMValue::jint_constant(0),  eq);
   result->addIncoming(LLVMValue::jint_constant(1),  gt);
 
-  push(SharkValue::create_jint(result));
+  push(SharkValue::create_jint(result, false));
 }
 
 void SharkBlock::emit_IR()
diff -r 5a1daec06e6d -r 96d1de001c8d ports/hotspot/src/share/vm/shark/sharkBlock.hpp
--- a/ports/hotspot/src/share/vm/shark/sharkBlock.hpp	Fri Mar 13 09:39:47 2009 -0400
+++ b/ports/hotspot/src/share/vm/shark/sharkBlock.hpp	Fri Mar 13 09:55:22 2009 -0400
@@ -239,7 +239,7 @@ class SharkBlock : public ResourceObj {
   {
     SharkValue *value = SharkValue::from_ciConstant(iter()->get_constant());
     if (value == NULL)
-      value = SharkValue::create_jobject(lookup_for_ldc());
+      value = SharkValue::create_jobject(lookup_for_ldc(), true);
     push(value);
   }
 
diff -r 5a1daec06e6d -r 96d1de001c8d ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp
--- a/ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp	Fri Mar 13 09:39:47 2009 -0400
+++ b/ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp	Fri Mar 13 09:55:22 2009 -0400
@@ -1,6 +1,6 @@
 /*
  * Copyright 1999-2007 Sun Microsystems, Inc.  All Rights Reserved.
- * Copyright 2008 Red Hat, Inc.
+ * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -180,7 +180,8 @@ void SharkCacher::process_stack_slot(int
       builder()->CreateLoad(
         function()->CreateAddressOfFrameEntry(
           adjusted_offset(value, offset),
-          SharkType::to_stackType(value->basic_type()))));
+          SharkType::to_stackType(value->basic_type()))),
+      value->zero_checked());
   }
 }
 
@@ -206,6 +207,7 @@ void SharkCacher::process_local_slot(int
       builder()->CreateLoad(
         function()->CreateAddressOfFrameEntry(
           adjusted_offset(value, offset),
-          SharkType::to_stackType(value->basic_type()))));
-  }
-}
+          SharkType::to_stackType(value->basic_type()))),
+      value->zero_checked());
+  }
+}
diff -r 5a1daec06e6d -r 96d1de001c8d ports/hotspot/src/share/vm/shark/sharkIntrinsics.cpp
--- a/ports/hotspot/src/share/vm/shark/sharkIntrinsics.cpp	Fri Mar 13 09:39:47 2009 -0400
+++ b/ports/hotspot/src/share/vm/shark/sharkIntrinsics.cpp	Fri Mar 13 09:55:22 2009 -0400
@@ -173,10 +173,10 @@ void SharkIntrinsics::do_Math_minmax(Sha
   phi->addIncoming(b, return_b);
 
   // Push the result
-  SharkValue *result = SharkValue::create_jint(phi);
-  if (sa->zero_checked() && sb->zero_checked())
-    result->set_zero_checked(true);
-  state->push(result);
+  state->push(
+    SharkValue::create_jint(
+      phi,
+      sa->zero_checked() && sb->zero_checked()));
 }
 
 void SharkIntrinsics::do_Math_1to1(SharkState *state, Constant *function)
@@ -219,34 +219,34 @@ void SharkIntrinsics::do_Object_getClass
     SharkType::klass_type(),
     "klass_part");
 
-  SharkValue *result = SharkValue::create_jobject(
-    builder->CreateValueOfStructEntry(
-      klass_part,
-      in_ByteSize(Klass::java_mirror_offset_in_bytes()),
-      SharkType::oop_type(),
-      "java_mirror"));
-
-  result->set_zero_checked(true);
-  state->push(result);
+  state->push(
+    SharkValue::create_jobject(
+      builder->CreateValueOfStructEntry(
+        klass_part,
+        in_ByteSize(Klass::java_mirror_offset_in_bytes()),
+        SharkType::oop_type(),
+        "java_mirror"),
+      true));
 }
 
 void SharkIntrinsics::do_System_currentTimeMillis(SharkState *state)
 {
   state->push(
     SharkValue::create_jlong(
-      state->builder()->CreateCall(SharkRuntime::current_time_millis())));
+      state->builder()->CreateCall(SharkRuntime::current_time_millis()),
+      false));
   state->push(NULL);
 }
 
 void SharkIntrinsics::do_Thread_currentThread(SharkState *state, Value *thread)
 {
-  SharkValue *result = SharkValue::create_jobject(
-    state->builder()->CreateValueOfStructEntry(
-      thread, JavaThread::threadObj_offset(),
-      SharkType::jobject_type(),
-      "threadObj"));
-  result->set_zero_checked(true);
-  state->push(result);
+  state->push(
+    SharkValue::create_jobject(
+      state->builder()->CreateValueOfStructEntry(
+        thread, JavaThread::threadObj_offset(),
+        SharkType::jobject_type(),
+        "threadObj"),
+      true));
 }
 
 void SharkIntrinsics::do_Unsafe_compareAndSwapInt(SharkState *state)
@@ -279,6 +279,9 @@ void SharkIntrinsics::do_Unsafe_compareA
   Value *result = builder->CreateCmpxchgInt(x, addr, e);
 
   // Push the result
-  state->push(SharkValue::create_jint(builder->CreateIntCast(
-    builder->CreateICmpEQ(result, e), SharkType::jint_type(), true)));
-}
+  state->push(
+    SharkValue::create_jint(
+      builder->CreateIntCast(
+        builder->CreateICmpEQ(result, e), SharkType::jint_type(), true),
+      false));
+}
diff -r 5a1daec06e6d -r 96d1de001c8d ports/hotspot/src/share/vm/shark/sharkState.cpp
--- a/ports/hotspot/src/share/vm/shark/sharkState.cpp	Fri Mar 13 09:39:47 2009 -0400
+++ b/ports/hotspot/src/share/vm/shark/sharkState.cpp	Fri Mar 13 09:55:22 2009 -0400
@@ -155,11 +155,14 @@ void SharkState::merge(SharkState* other
     ciType *this_type = this_value->type();
     assert(this_type == other_value->type(), "should be");
 
+    bool this_checked = this_value->zero_checked();
+    assert(this_checked == other_value->zero_checked(), "should be");
+
     snprintf(name, sizeof(name), "local_%d_", i);
     phi = builder()->CreatePHI(SharkType::to_stackType(this_type), name);
     phi->addIncoming(this_value->generic_value(), this_block);
     phi->addIncoming(other_value->generic_value(), other_block);
-    set_local(i, SharkValue::create_generic(this_type, phi));
+    set_local(i, SharkValue::create_generic(this_type, phi, this_checked));
   }
 
   // Expression stack
@@ -174,11 +177,14 @@ void SharkState::merge(SharkState* other
     ciType *this_type = this_value->type();
     assert(this_type == other_value->type(), "should be");
 
+    bool this_checked = this_value->zero_checked();
+    assert(this_checked == other_value->zero_checked(), "should be");
+
     snprintf(name, sizeof(name), "stack_%d_", i);
     phi = builder()->CreatePHI(SharkType::to_stackType(this_type), name);
     phi->addIncoming(this_value->generic_value(), this_block);
     phi->addIncoming(other_value->generic_value(), other_block);
-    set_stack(i, SharkValue::create_generic(this_type, phi));
+    set_stack(i, SharkValue::create_generic(this_type, phi, this_checked));
   }
 }
 
@@ -206,7 +212,7 @@ void SharkState::cache_after_Java_call(c



More information about the distro-pkg-dev mailing list