< prev index next >

src/hotspot/cpu/zero/zeroInterpreter_zero.cpp

Print this page
@@ -1,7 +1,7 @@
  /*
-  * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved.
+  * Copyright (c) 2003, 2026, Oracle and/or its affiliates. All rights reserved.
   * Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   *
   * This code is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License version 2 only, as

@@ -580,10 +580,16 @@
    ResolvedFieldEntry* entry = cache->resolved_field_entry_at(index);
    if (!entry->is_resolved(Bytecodes::_getfield)) {
      return normal_entry(method, 0, THREAD);
    }
  
+   // Flattened entries require handling beyond a direct field load.
+   // Bail to slow path.
+   if (entry->is_flat()) {
+     return normal_entry(method, 0, THREAD);
+   }
+ 
    ZeroStack* stack = thread->zero_stack();
    intptr_t* topOfStack = stack->sp();
  
    // Load the object pointer and drop into the slow path
    // if we have a NullPointerException

@@ -671,10 +677,16 @@
    ResolvedFieldEntry* entry = cache->resolved_field_entry_at(index);
    if (!entry->is_resolved(Bytecodes::_putfield)) {
      return normal_entry(method, 0, THREAD);
    }
  
+   // Flattened entries require handling beyond a direct field store.
+   // Bail to slow path.
+   if (entry->is_flat()) {
+     return normal_entry(method, 0, THREAD);
+   }
+ 
    ZeroStack* stack = thread->zero_stack();
    intptr_t* topOfStack = stack->sp();
  
    // Figure out where the receiver is. If there is a long/double
    // operand on stack top, then receiver is two slots down.
< prev index next >