comparison src/cpu/x86/vm/c1_Runtime1_x86.cpp @ 1423:760213a60e8b

* rewrite of the code installation * partial support for safepoints * macro-based CiTargetMethod interface * code stub support
author Lukas Stadler <lukas.stadler@oracle.com>
date Mon, 16 Aug 2010 18:59:36 -0700
parents e1a275dbc8cd
children abc670a709dc
comparison
equal deleted inserted replaced
1422:3483ec571caf 1423:760213a60e8b
1364 1364
1365 // This is called by pushing args and not with C abi 1365 // This is called by pushing args and not with C abi
1366 __ movptr(rsi, Address(rsp, (klass_off) * VMRegImpl::stack_slot_size)); // subclass 1366 __ movptr(rsi, Address(rsp, (klass_off) * VMRegImpl::stack_slot_size)); // subclass
1367 __ movptr(rax, Address(rsp, (sup_k_off) * VMRegImpl::stack_slot_size)); // superclass 1367 __ movptr(rax, Address(rsp, (sup_k_off) * VMRegImpl::stack_slot_size)); // superclass
1368 1368
1369 Label success;
1369 Label miss; 1370 Label miss;
1371 if (UseC1X) {
1372 // TODO this should really be within the XirSnippets
1373 __ check_klass_subtype_fast_path(rsi, rax, rcx, &success, &miss, NULL);
1374 };
1375
1370 __ check_klass_subtype_slow_path(rsi, rax, rcx, rdi, NULL, &miss); 1376 __ check_klass_subtype_slow_path(rsi, rax, rcx, rdi, NULL, &miss);
1371 1377
1372 // fallthrough on success: 1378 // fallthrough on success:
1379 __ bind(success);
1373 __ movptr(Address(rsp, (result_off) * VMRegImpl::stack_slot_size), 1); // result 1380 __ movptr(Address(rsp, (result_off) * VMRegImpl::stack_slot_size), 1); // result
1374 __ pop(rax); 1381 __ pop(rax);
1375 __ pop(rcx); 1382 __ pop(rcx);
1376 __ pop(rsi); 1383 __ pop(rsi);
1377 __ pop(rdi); 1384 __ pop(rdi);