static void stack_expressions(StackValueCollection* result,
                              int length,
                              int max_locals,
                              const InterpreterOopMap& oop_mask,
                              const frame& fr) {

  assert(result != NULL, "invariant");

  for (int i = 0; i < length; ++i) {
    const intptr_t* addr = fr.interpreter_frame_expression_stack_at(i);
    assert(addr != NULL, "invariant");
    if (!is_in_expression_stack(fr, addr)) {
      // Need to ensure no bogus escapes.
      addr = NULL;
    }

    StackValue* const sv = create_stack_value_from_oop_map(oop_mask,
                                                           i + max_locals,
                                                           addr);
    assert(sv != NULL, "sanity check");

    result->add(sv);
  }
}