comparison src/share/vm/runtime/sharedRuntime.cpp @ 1506:2338d41fbd81

6943304: remove tagged stack interpreter Reviewed-by: coleenp, never, gbenson
author twisti
date Fri, 30 Apr 2010 08:37:24 -0700
parents 9f5b60a14736
children cd5dbf694d45
comparison
equal deleted inserted replaced
1505:0c5b3cf3c1f5 1506:2338d41fbd81
1840 // There are all promoted to T_INT in the calling convention 1840 // There are all promoted to T_INT in the calling convention
1841 return T_INT; 1841 return T_INT;
1842 1842
1843 case T_OBJECT: 1843 case T_OBJECT:
1844 case T_ARRAY: 1844 case T_ARRAY:
1845 if (!TaggedStackInterpreter) {
1846 #ifdef _LP64 1845 #ifdef _LP64
1847 return T_LONG; 1846 return T_LONG;
1848 #else 1847 #else
1849 return T_INT; 1848 return T_INT;
1850 #endif 1849 #endif
1851 }
1852 return T_OBJECT;
1853 1850
1854 case T_INT: 1851 case T_INT:
1855 case T_LONG: 1852 case T_LONG:
1856 case T_FLOAT: 1853 case T_FLOAT:
1857 case T_DOUBLE: 1854 case T_DOUBLE:
2593 intptr_t *buf = NEW_C_HEAP_ARRAY(intptr_t,buf_size_words); 2590 intptr_t *buf = NEW_C_HEAP_ARRAY(intptr_t,buf_size_words);
2594 2591
2595 // Copy the locals. Order is preserved so that loading of longs works. 2592 // Copy the locals. Order is preserved so that loading of longs works.
2596 // Since there's no GC I can copy the oops blindly. 2593 // Since there's no GC I can copy the oops blindly.
2597 assert( sizeof(HeapWord)==sizeof(intptr_t), "fix this code"); 2594 assert( sizeof(HeapWord)==sizeof(intptr_t), "fix this code");
2598 if (TaggedStackInterpreter) { 2595 Copy::disjoint_words((HeapWord*)fr.interpreter_frame_local_at(max_locals-1),
2599 for (int i = 0; i < max_locals; i++) {
2600 // copy only each local separately to the buffer avoiding the tag
2601 buf[i] = *fr.interpreter_frame_local_at(max_locals-i-1);
2602 }
2603 } else {
2604 Copy::disjoint_words(
2605 (HeapWord*)fr.interpreter_frame_local_at(max_locals-1),
2606 (HeapWord*)&buf[0], 2596 (HeapWord*)&buf[0],
2607 max_locals); 2597 max_locals);
2608 }
2609 2598
2610 // Inflate locks. Copy the displaced headers. Be careful, there can be holes. 2599 // Inflate locks. Copy the displaced headers. Be careful, there can be holes.
2611 int i = max_locals; 2600 int i = max_locals;
2612 for( BasicObjectLock *kptr2 = fr.interpreter_frame_monitor_end(); 2601 for( BasicObjectLock *kptr2 = fr.interpreter_frame_monitor_end();
2613 kptr2 < fr.interpreter_frame_monitor_begin(); 2602 kptr2 < fr.interpreter_frame_monitor_begin();