< prev index next >

src/hotspot/cpu/zero/zeroInterpreter_zero.cpp

Print this page
*** 1,7 ***
  /*
!  * Copyright (c) 2003, 2025, 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
--- 1,7 ---
  /*
!  * 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 >