Mercurial > hg > truffle
comparison src/gpu/hsail/vm/hsailJavaCallArguments.hpp @ 16076:06eedda53e14
HSAIL: add support to allocate new TLAB from GPU
Contributed-by: Tom Deneau <tom.deneau@amd.com>
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 10 Jun 2014 22:36:26 +0200 |
parents | 3e9a960f0da1 |
children | f55f2d400797 |
comparison
equal
deleted
inserted
replaced
16074:b6ab7e7fa0a5 | 16076:06eedda53e14 |
---|---|
20 * or visit www.oracle.com if you need additional information or have any | 20 * or visit www.oracle.com if you need additional information or have any |
21 * questions. | 21 * questions. |
22 * | 22 * |
23 */ | 23 */ |
24 | 24 |
25 #ifndef JAVACALL_ARGUMENTS_HSAIL_HPP | 25 #ifndef GPU_HSAIL_VM_HSAIL_JAVACALL_ARGUMENTS_HPP |
26 #define JAVACALL_ARGUMENTS_HSAIL_HPP | 26 #define GPU_HSAIL_VM_HSAIL_JAVACALL_ARGUMENTS_HPP |
27 | 27 |
28 #include "hsailArgumentsBase.hpp" | 28 #include "hsailArgumentsBase.hpp" |
29 #include "runtime/javaCalls.hpp" | 29 #include "runtime/javaCalls.hpp" |
30 | 30 |
31 class HSAILJavaCallArguments : public HSAILArgumentsBase { | 31 class HSAILJavaCallArguments : public HSAILArgumentsBase { |
32 | 32 |
33 public: | 33 public: |
34 | 34 |
35 private: | 35 private: |
36 // JavaCall Args to push into | 36 // JavaCall args to push into |
37 JavaCallArguments *_javaArgs; | 37 JavaCallArguments* _javaArgs; |
38 int _workitemid; | 38 int _workitemid; |
39 public: | 39 public: |
40 HSAILJavaCallArguments(JavaCallArguments *javaArgs, int workitemid, Symbol* signature, objArrayOop args, bool is_static) : HSAILArgumentsBase(signature, args, is_static) { | 40 HSAILJavaCallArguments(JavaCallArguments* javaArgs, int workitemid, Symbol* signature, objArrayOop args, bool is_static) : HSAILArgumentsBase(signature, args, is_static) { |
41 _javaArgs = javaArgs; | 41 _javaArgs = javaArgs; |
42 _workitemid = workitemid; | 42 _workitemid = workitemid; |
43 collectArgs(); | 43 collectArgs(); |
44 } | 44 } |
45 virtual char *argsBuilderName() {return (char *)"HSAILJavaCallArguments";} | 45 virtual char* argsBuilderName() {return (char*)"HSAILJavaCallArguments";} |
46 virtual void pushObject(void *obj) { _javaArgs->push_oop((oop) obj); } | 46 virtual void pushObject(void* obj) { _javaArgs->push_oop((oop) obj); } |
47 virtual void pushBool(jboolean z) { pushInt(z); } | 47 virtual void pushBool(jboolean z) { pushInt(z); } |
48 virtual void pushByte(jbyte b) { pushInt(b); } | 48 virtual void pushByte(jbyte b) { pushInt(b); } |
49 virtual void pushDouble(jdouble d) { _javaArgs->push_double(d); } | 49 virtual void pushDouble(jdouble d) { _javaArgs->push_double(d); } |
50 virtual void pushFloat(jfloat f) { _javaArgs->push_float(f); } | 50 virtual void pushFloat(jfloat f) { _javaArgs->push_float(f); } |
51 virtual void pushInt(jint i) { _javaArgs->push_int(i); } | 51 virtual void pushInt(jint i) { _javaArgs->push_int(i); } |
62 } | 62 } |
63 // for kernel arguments, final obj parameter should be an object | 63 // for kernel arguments, final obj parameter should be an object |
64 // stream source array (already checked in the base class) so for | 64 // stream source array (already checked in the base class) so for |
65 // a javacall we need to extract the correct obj from it based on | 65 // a javacall we need to extract the correct obj from it based on |
66 // the workitemid | 66 // the workitemid |
67 virtual void handleFinalObjParameter(void *arg) { | 67 virtual void handleFinalObjParameter(void* arg) { |
68 objArrayOop objArrayArg = (objArrayOop) arg; | 68 objArrayOop objArrayArg = (objArrayOop) arg; |
69 oop extractedObj = objArrayArg->obj_at(_workitemid); | 69 oop extractedObj = objArrayArg->obj_at(_workitemid); |
70 if (TraceGPUInteraction) { | 70 if (TraceGPUInteraction) { |
71 tty->print_cr("[HSAIL] HSAILJavaCallArguments, extracted obj #%d from array, 0x%08x is a %s", | 71 tty->print_cr("[HSAIL] HSAILJavaCallArguments, extracted obj #%d from array, 0x%08x is a %s", |
72 _workitemid, (address) extractedObj, | 72 _workitemid, (address) extractedObj, |
75 pushObject(extractedObj); | 75 pushObject(extractedObj); |
76 } | 76 } |
77 | 77 |
78 }; | 78 }; |
79 | 79 |
80 #endif // JAVACALL_ARGUMENTS_HSAIL_HPP | 80 #endif // GPU_HSAIL_VM_HSAIL_JAVACALL_ARGUMENTS_HPP |
81 | 81 |