Mercurial > hg > truffle
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(); |