342 void load_method_holder_cld(Register rresult, Register rmethod); 343 344 void load_method_holder(Register holder, Register method); 345 346 // oop manipulations 347 void load_metadata(Register dst, Register src); 348 void load_storage_props(Register dst, Register src); 349 void load_klass(Register dst, Register src); 350 void store_klass(Register dst, Register src); 351 352 void access_load_at(BasicType type, DecoratorSet decorators, Register dst, Address src, 353 Register tmp1, Register thread_tmp); 354 void access_store_at(BasicType type, DecoratorSet decorators, Address dst, Register src, 355 Register tmp1, Register tmp2, Register tmp3 = noreg); 356 357 void access_value_copy(DecoratorSet decorators, Register src, Register dst, Register value_klass); 358 359 // value type data payload offsets... 360 void first_field_offset(Register value_klass, Register offset); 361 void data_for_oop(Register oop, Register data, Register value_klass); 362 363 364 // Resolves obj access. Result is placed in the same register. 365 // All other registers are preserved. 366 void resolve(DecoratorSet decorators, Register obj); 367 368 void load_heap_oop(Register dst, Address src, Register tmp1 = noreg, 369 Register thread_tmp = noreg, DecoratorSet decorators = 0); 370 void load_heap_oop_not_null(Register dst, Address src, Register tmp1 = noreg, 371 Register thread_tmp = noreg, DecoratorSet decorators = 0); 372 void store_heap_oop(Address dst, Register src, Register tmp1 = noreg, 373 Register tmp2 = noreg, Register tmp3 = noreg, DecoratorSet decorators = 0); 374 375 // Used for storing NULL. All other oop constants should be 376 // stored using routines that take a jobject. 377 void store_heap_oop_null(Address dst); 378 379 void load_prototype_header(Register dst, Register src); 380 381 #ifdef _LP64 | 342 void load_method_holder_cld(Register rresult, Register rmethod); 343 344 void load_method_holder(Register holder, Register method); 345 346 // oop manipulations 347 void load_metadata(Register dst, Register src); 348 void load_storage_props(Register dst, Register src); 349 void load_klass(Register dst, Register src); 350 void store_klass(Register dst, Register src); 351 352 void access_load_at(BasicType type, DecoratorSet decorators, Register dst, Address src, 353 Register tmp1, Register thread_tmp); 354 void access_store_at(BasicType type, DecoratorSet decorators, Address dst, Register src, 355 Register tmp1, Register tmp2, Register tmp3 = noreg); 356 357 void access_value_copy(DecoratorSet decorators, Register src, Register dst, Register value_klass); 358 359 // value type data payload offsets... 360 void first_field_offset(Register value_klass, Register offset); 361 void data_for_oop(Register oop, Register data, Register value_klass); 362 // get data payload ptr a flat value array at index, kills rcx and index 363 void data_for_value_array_index(Register array, Register array_klass, 364 Register index, Register data); 365 366 367 // Resolves obj access. Result is placed in the same register. 368 // All other registers are preserved. 369 void resolve(DecoratorSet decorators, Register obj); 370 371 void load_heap_oop(Register dst, Address src, Register tmp1 = noreg, 372 Register thread_tmp = noreg, DecoratorSet decorators = 0); 373 void load_heap_oop_not_null(Register dst, Address src, Register tmp1 = noreg, 374 Register thread_tmp = noreg, DecoratorSet decorators = 0); 375 void store_heap_oop(Address dst, Register src, Register tmp1 = noreg, 376 Register tmp2 = noreg, Register tmp3 = noreg, DecoratorSet decorators = 0); 377 378 // Used for storing NULL. All other oop constants should be 379 // stored using routines that take a jobject. 380 void store_heap_oop_null(Address dst); 381 382 void load_prototype_header(Register dst, Register src); 383 384 #ifdef _LP64 |