Mercurial > hg > truffle
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 |