comparison src/cpu/x86/vm/c1_Runtime1_x86.cpp @ 5618:60ca7d300b8f

reverted to using fast_new_instance_init_check_id stub to use fast TLAB refilling
author Doug Simon <doug.simon@oracle.com>
date Fri, 15 Jun 2012 13:16:43 +0200
parents fcb8d2b8dc42
children 7d25723b7699
comparison
equal deleted inserted replaced
5617:19ca9e48cd31 5618:60ca7d300b8f
1034 Register t2 = rsi; 1034 Register t2 = rsi;
1035 assert_different_registers(klass, obj, obj_size, t1, t2); 1035 assert_different_registers(klass, obj, obj_size, t1, t2);
1036 1036
1037 __ push(rdi); 1037 __ push(rdi);
1038 __ push(rbx); 1038 __ push(rbx);
1039 #ifdef GRAAL
1040 __ push(rcx);
1041 __ push(rsi);
1042 #endif
1039 1043
1040 if (id == fast_new_instance_init_check_id) { 1044 if (id == fast_new_instance_init_check_id) {
1041 // make sure the klass is initialized 1045 // make sure the klass is initialized
1042 __ cmpb(Address(klass, instanceKlass::init_state_offset()), instanceKlass::fully_initialized); 1046 __ cmpb(Address(klass, instanceKlass::init_state_offset()), instanceKlass::fully_initialized);
1043 __ jcc(Assembler::notEqual, slow_path); 1047 __ jcc(Assembler::notEqual, slow_path);
1072 1076
1073 __ tlab_allocate(obj, obj_size, 0, t1, t2, slow_path); 1077 __ tlab_allocate(obj, obj_size, 0, t1, t2, slow_path);
1074 1078
1075 __ initialize_object(obj, klass, obj_size, 0, t1, t2); 1079 __ initialize_object(obj, klass, obj_size, 0, t1, t2);
1076 __ verify_oop(obj); 1080 __ verify_oop(obj);
1081 #ifdef GRAAL
1082 __ pop(rsi);
1083 __ pop(rcx);
1084 #endif
1077 __ pop(rbx); 1085 __ pop(rbx);
1078 __ pop(rdi); 1086 __ pop(rdi);
1079 __ ret(0); 1087 __ ret(0);
1080 1088
1081 __ bind(try_eden); 1089 __ bind(try_eden);
1085 __ eden_allocate(obj, obj_size, 0, t1, slow_path); 1093 __ eden_allocate(obj, obj_size, 0, t1, slow_path);
1086 __ incr_allocated_bytes(thread, obj_size, 0); 1094 __ incr_allocated_bytes(thread, obj_size, 0);
1087 1095
1088 __ initialize_object(obj, klass, obj_size, 0, t1, t2); 1096 __ initialize_object(obj, klass, obj_size, 0, t1, t2);
1089 __ verify_oop(obj); 1097 __ verify_oop(obj);
1098 #ifdef GRAAL
1099 __ pop(rsi);
1100 __ pop(rcx);
1101 #endif
1090 __ pop(rbx); 1102 __ pop(rbx);
1091 __ pop(rdi); 1103 __ pop(rdi);
1092 __ ret(0); 1104 __ ret(0);
1093 1105
1094 __ bind(slow_path); 1106 __ bind(slow_path);
1107 #ifdef GRAAL
1108 __ pop(rsi);
1109 __ pop(rcx);
1110 #endif
1095 __ pop(rbx); 1111 __ pop(rbx);
1096 __ pop(rdi); 1112 __ pop(rdi);
1097 } 1113 }
1098 1114
1099 __ enter(); 1115 __ enter();