comparison src/gpu/hsail/vm/gpu_hsail_Frame.hpp @ 15545:9d456ffc6120

HSAIL: fixed Windows build
author Doug Simon <doug.simon@oracle.com>
date Wed, 07 May 2014 11:51:52 +0200
parents 217c721b1ee1
children 06eedda53e14
comparison
equal deleted inserted replaced
15544:217c721b1ee1 15545:9d456ffc6120
27 27
28 #include "graal/graalEnv.hpp" 28 #include "graal/graalEnv.hpp"
29 #include "code/debugInfo.hpp" 29 #include "code/debugInfo.hpp"
30 #include "code/location.hpp" 30 #include "code/location.hpp"
31 31
32 class HSAILFrame { 32 class HSAILFrame VALUE_OBJ_CLASS_SPEC {
33 friend class VMStructs; 33 friend class VMStructs;
34 private: 34 private:
35 jint _pc_offset; // The HSAIL "pc_offset" where the exception happens 35 jint _pc_offset; // The HSAIL "pc_offset" where the exception happens
36 jbyte _num_s_regs; 36 jbyte _num_s_regs;
37 jbyte _num_d_regs; 37 jbyte _num_d_regs;
38 jshort _num_stack_slots; 38 jshort _num_stack_slots;
39 jbyte _save_area[0]; // save area size can vary per kernel compilation
40 39
41 public: 40 public:
42 // Accessors 41 // Accessors
43 jint pc_offset() { return _pc_offset; } 42 jint pc_offset() { return _pc_offset; }
44 jint num_s_regs() {return _num_s_regs; } 43 jint num_s_regs() {return _num_s_regs; }
45 jint num_d_regs() {return _num_d_regs; } 44 jint num_d_regs() {return _num_d_regs; }
46 jint num_stack_slots() {return _num_stack_slots; } 45 jint num_stack_slots() {return _num_stack_slots; }
46 jbyte * data_start() {return (jbyte *) this + sizeof(*this); }
47 jlong get_d_reg(int idx) { 47 jlong get_d_reg(int idx) {
48 int ofst = num_s_regs() * 4 + idx * 8; 48 int ofst = num_s_regs() * 4 + idx * 8;
49 return(*(jlong *) (_save_area + ofst)); 49 return(*(jlong *) (data_start() + ofst));
50 } 50 }
51 jint get_s_reg(int idx) { 51 jint get_s_reg(int idx) {
52 int ofst = idx * 4; 52 int ofst = idx * 4;
53 return(*(jint *) (_save_area + ofst)); 53 return(*(jint *) (data_start() + ofst));
54 } 54 }
55 void put_d_reg(int idx, jlong val) { 55 void put_d_reg(int idx, jlong val) {
56 int ofst = num_s_regs() * 4 + idx * 8; 56 int ofst = num_s_regs() * 4 + idx * 8;
57 (*(jlong *) (_save_area + ofst)) = val; 57 (*(jlong *) (data_start() + ofst)) = val;
58 } 58 }
59 jint get_stackslot32(int stackOffset) { 59 jint get_stackslot32(int stackOffset) {
60 int ofst = num_s_regs() * 4 + num_d_regs() * 8 + stackOffset; 60 int ofst = num_s_regs() * 4 + num_d_regs() * 8 + stackOffset;
61 return(*(jint *) (_save_area + ofst)); 61 return(*(jint *) (data_start() + ofst));
62 } 62 }
63 jlong get_stackslot64(int stackOffset) { 63 jlong get_stackslot64(int stackOffset) {
64 int ofst = num_s_regs() * 4 + num_d_regs() * 8 + stackOffset; 64 int ofst = num_s_regs() * 4 + num_d_regs() * 8 + stackOffset;
65 return(*(jlong *) (_save_area + ofst)); 65 return(*(jlong *) (data_start() + ofst));
66 } 66 }
67 void put_stackslot64(int stackOffset, jlong val) { 67 void put_stackslot64(int stackOffset, jlong val) {
68 int ofst = num_s_regs() * 4 + num_d_regs() * 8 + stackOffset; 68 int ofst = num_s_regs() * 4 + num_d_regs() * 8 + stackOffset;
69 (*(jlong *) (_save_area + ofst)) = val; 69 (*(jlong *) (data_start() + ofst)) = val;
70 } 70 }
71 }; 71 };
72 72
73 #endif // GPU_HSAIL_FRAME_HPP 73 #endif // GPU_HSAIL_FRAME_HPP