397 }
398 if (offset == -1) {
399 throw new JVMCIError("cannot get offset of field " + name + " with type long or jlong");
400 }
401 pendingFailedSpeculationOffset = offset;
402 }
403
404 public int threadLastJavaSpOffset() {
405 return javaThreadAnchorOffset + javaFrameAnchorLastJavaSpOffset;
406 }
407
408 public int threadLastJavaPcOffset() {
409 return javaThreadAnchorOffset + javaFrameAnchorLastJavaPcOffset;
410 }
411
412 public int threadLastJavaFpOffset() {
413 assert osArch.equals("aarch64") || osArch.equals("amd64");
414 return javaThreadAnchorOffset + getFieldOffset("JavaFrameAnchor::_last_Java_fp", Integer.class, "intptr_t*");
415 }
416
417 public int threadJavaFrameAnchorFlagsOffset() {
418 assert osArch.equals("sparc");
419 return javaThreadAnchorOffset + getFieldOffset("JavaFrameAnchor::_flags", Integer.class, "int");
420 }
421
422 public final int runtimeCallStackSize = getConstant("frame::arg_reg_save_area_bytes", Integer.class, intRequiredOnAMD64);
423 public final int frameInterpreterFrameSenderSpOffset = getConstant("frame::interpreter_frame_sender_sp_offset", Integer.class, intRequiredOnAMD64);
424 public final int frameInterpreterFrameLastSpOffset = getConstant("frame::interpreter_frame_last_sp_offset", Integer.class, intRequiredOnAMD64);
425
426 public final int osThreadInterruptedOffset = getFieldOffset("OSThread::_interrupted", Integer.class, "jint", Integer.MAX_VALUE);
427
428 public final long markWordHashShift = getConstant(markWordField("hash_shift"), Long.class);
429
430 public final int biasedLockMaskInPlace = getConstant(markWordField("biased_lock_mask_in_place"), Integer.class);
431 public final int ageMaskInPlace = getConstant(markWordField("age_mask_in_place"), Integer.class);
432 public final int epochMaskInPlace = getConstant(markWordField("epoch_mask_in_place"), Integer.class);
433 public final long markWordHashMask = getConstant(markWordField("hash_mask"), Long.class);
434 public final long markWordHashMaskInPlace = getConstant(markWordField("hash_mask_in_place"), Long.class);
435
436 public final int unlockedMask = getConstant(markWordField("unlocked_value"), Integer.class);
437 public final int monitorMask = getConstant(markWordField("monitor_value"), Integer.class, -1);
438 public final int biasedLockPattern = getConstant(markWordField("biased_lock_pattern"), Integer.class);
439
440 // This field has no type in vmStructs.cpp
441 public final int objectMonitorOwner = getFieldOffset("ObjectMonitor::_owner", Integer.class, null, -1);
|
397 }
398 if (offset == -1) {
399 throw new JVMCIError("cannot get offset of field " + name + " with type long or jlong");
400 }
401 pendingFailedSpeculationOffset = offset;
402 }
403
404 public int threadLastJavaSpOffset() {
405 return javaThreadAnchorOffset + javaFrameAnchorLastJavaSpOffset;
406 }
407
408 public int threadLastJavaPcOffset() {
409 return javaThreadAnchorOffset + javaFrameAnchorLastJavaPcOffset;
410 }
411
412 public int threadLastJavaFpOffset() {
413 assert osArch.equals("aarch64") || osArch.equals("amd64");
414 return javaThreadAnchorOffset + getFieldOffset("JavaFrameAnchor::_last_Java_fp", Integer.class, "intptr_t*");
415 }
416
417 public final int runtimeCallStackSize = getConstant("frame::arg_reg_save_area_bytes", Integer.class, intRequiredOnAMD64);
418 public final int frameInterpreterFrameSenderSpOffset = getConstant("frame::interpreter_frame_sender_sp_offset", Integer.class, intRequiredOnAMD64);
419 public final int frameInterpreterFrameLastSpOffset = getConstant("frame::interpreter_frame_last_sp_offset", Integer.class, intRequiredOnAMD64);
420
421 public final int osThreadInterruptedOffset = getFieldOffset("OSThread::_interrupted", Integer.class, "jint", Integer.MAX_VALUE);
422
423 public final long markWordHashShift = getConstant(markWordField("hash_shift"), Long.class);
424
425 public final int biasedLockMaskInPlace = getConstant(markWordField("biased_lock_mask_in_place"), Integer.class);
426 public final int ageMaskInPlace = getConstant(markWordField("age_mask_in_place"), Integer.class);
427 public final int epochMaskInPlace = getConstant(markWordField("epoch_mask_in_place"), Integer.class);
428 public final long markWordHashMask = getConstant(markWordField("hash_mask"), Long.class);
429 public final long markWordHashMaskInPlace = getConstant(markWordField("hash_mask_in_place"), Long.class);
430
431 public final int unlockedMask = getConstant(markWordField("unlocked_value"), Integer.class);
432 public final int monitorMask = getConstant(markWordField("monitor_value"), Integer.class, -1);
433 public final int biasedLockPattern = getConstant(markWordField("biased_lock_pattern"), Integer.class);
434
435 // This field has no type in vmStructs.cpp
436 public final int objectMonitorOwner = getFieldOffset("ObjectMonitor::_owner", Integer.class, null, -1);
|