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