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