Skip to content

Commit

Permalink
Merge pull request #1573 from SAP/pr-jdk-23+2
Browse files Browse the repository at this point in the history
Merge to tag jdk-23+2
  • Loading branch information
RealCLanger authored Dec 20, 2023
2 parents f138e49 + 2a94c2f commit 67dcb9e
Show file tree
Hide file tree
Showing 172 changed files with 11,065 additions and 2,903 deletions.
2 changes: 1 addition & 1 deletion make/CompileDemos.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ DEMO_MANIFEST := $(SUPPORT_OUTPUTDIR)/demos/java-main-manifest.mf
# This rule will be depended on due to the MANIFEST line in SetupBuildDemo
# and SetupBuildJvmtiDemo.
$(eval $(call SetupTextFileProcessing, BUILD_JAVA_MANIFEST, \
SOURCE_FILES := $(TOPDIR)/make/data/mainmanifest/manifest.mf, \
SOURCE_FILES := $(TOPDIR)/make/data/mainmanifest/manifest.mf.template, \
OUTPUT_FILE := $(DEMO_MANIFEST), \
REPLACEMENTS := \
@@VERSION_SPECIFICATION@@ => $(VERSION_SPECIFICATION) ; \
Expand Down
2 changes: 1 addition & 1 deletion make/JrtfsJar.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ include TextFileProcessing.gmk

# This rule will be depended on due to the MANIFEST line
$(eval $(call SetupTextFileProcessing, BUILD_JAVA_MANIFEST, \
SOURCE_FILES := $(TOPDIR)/make/data/mainmanifest/manifest.mf, \
SOURCE_FILES := $(TOPDIR)/make/data/mainmanifest/manifest.mf.template, \
OUTPUT_FILE := $(SUPPORT_OUTPUTDIR)/java-main-manifest.mf, \
REPLACEMENTS := \
@@VERSION_SPECIFICATION@@ => $(VERSION_SPECIFICATION) ; \
Expand Down
4 changes: 2 additions & 2 deletions make/MacBundles.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ ifeq ($(call isTargetOs, macosx), true)
))

$(eval $(call SetupTextFileProcessing, BUILD_JDK_PLIST, \
SOURCE_FILES := $(MACOSX_PLIST_SRC)/JDK-Info.plist, \
SOURCE_FILES := $(MACOSX_PLIST_SRC)/JDK-Info.plist.template, \
OUTPUT_FILE := $(JDK_MACOSX_CONTENTS_DIR)/Info.plist, \
REPLACEMENTS := \
@@ID@@ => $(MACOSX_BUNDLE_ID_BASE).jdk ; \
Expand All @@ -87,7 +87,7 @@ ifeq ($(call isTargetOs, macosx), true)
))

$(eval $(call SetupTextFileProcessing, BUILD_JRE_PLIST, \
SOURCE_FILES := $(MACOSX_PLIST_SRC)/JRE-Info.plist, \
SOURCE_FILES := $(MACOSX_PLIST_SRC)/JRE-Info.plist.template, \
OUTPUT_FILE := $(JRE_MACOSX_CONTENTS_DIR)/Info.plist, \
REPLACEMENTS := \
@@ID@@ => $(MACOSX_BUNDLE_ID_BASE).jre ; \
Expand Down
11 changes: 9 additions & 2 deletions make/Main.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -744,9 +744,16 @@ endif

$(eval $(call SetupTarget, build-test-lib, \
MAKEFILE := test/BuildTestLib, \
TARGET := build-test-lib, \
DEPS := exploded-image, \
))

$(eval $(call SetupTarget, test-image-lib, \
MAKEFILE := test/BuildTestLib, \
TARGET := test-image-lib, \
DEPS := build-test-lib, \
))

ifeq ($(BUILD_FAILURE_HANDLER), true)
# Builds the failure handler jtreg extension
$(eval $(call SetupTarget, build-test-failure-handler, \
Expand Down Expand Up @@ -781,7 +788,7 @@ endif

$(eval $(call SetupTarget, build-microbenchmark, \
MAKEFILE := test/BuildMicrobenchmark, \
DEPS := interim-langtools exploded-image, \
DEPS := interim-langtools exploded-image build-test-lib, \
))

################################################################################
Expand Down Expand Up @@ -1264,7 +1271,7 @@ all-docs-bundles: docs-jdk-bundles docs-javase-bundles docs-reference-bundles
# This target builds the test image
test-image: prepare-test-image test-image-jdk-jtreg-native \
test-image-demos-jdk test-image-libtest-jtreg-native \
test-image-lib-native
test-image-lib test-image-lib-native

ifneq ($(JVM_TEST_IMAGE_TARGETS), )
# If JVM_TEST_IMAGE_TARGETS is externally defined, use it instead of the
Expand Down
File renamed without changes.
10 changes: 5 additions & 5 deletions make/autoconf/basic.m4
Original file line number Diff line number Diff line change
Expand Up @@ -448,17 +448,17 @@ AC_DEFUN_ONCE([BASIC_SETUP_OUTPUT_DIR],
AC_SUBST(CONFIGURESUPPORT_OUTPUTDIR)
# The spec.gmk file contains all variables for the make system.
AC_CONFIG_FILES([$OUTPUTDIR/spec.gmk:$AUTOCONF_DIR/spec.gmk.in])
AC_CONFIG_FILES([$OUTPUTDIR/spec.gmk:$AUTOCONF_DIR/spec.gmk.template])
# The bootcycle-spec.gmk file contains support for boot cycle builds.
AC_CONFIG_FILES([$OUTPUTDIR/bootcycle-spec.gmk:$AUTOCONF_DIR/bootcycle-spec.gmk.in])
AC_CONFIG_FILES([$OUTPUTDIR/bootcycle-spec.gmk:$AUTOCONF_DIR/bootcycle-spec.gmk.template])
# The buildjdk-spec.gmk file contains support for building a buildjdk when cross compiling.
AC_CONFIG_FILES([$OUTPUTDIR/buildjdk-spec.gmk:$AUTOCONF_DIR/buildjdk-spec.gmk.in])
AC_CONFIG_FILES([$OUTPUTDIR/buildjdk-spec.gmk:$AUTOCONF_DIR/buildjdk-spec.gmk.template])
# The compare.sh is used to compare the build output to other builds.
AC_CONFIG_FILES([$OUTPUTDIR/compare.sh:$AUTOCONF_DIR/compare.sh.in])
AC_CONFIG_FILES([$OUTPUTDIR/compare.sh:$AUTOCONF_DIR/compare.sh.template])
# The generated Makefile knows where the spec.gmk is and where the source is.
# You can run make from the OUTPUTDIR, or from the top-level Makefile
# which will look for generated configurations
AC_CONFIG_FILES([$OUTPUTDIR/Makefile:$AUTOCONF_DIR/Makefile.in])
AC_CONFIG_FILES([$OUTPUTDIR/Makefile:$AUTOCONF_DIR/Makefile.template])
])

###############################################################################
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
9 changes: 9 additions & 0 deletions make/autoconf/jdk-version.m4
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,15 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
CHECK_VALUE: [UTIL_CHECK_STRING_NON_EMPTY_PRINTABLE])
AC_SUBST(COMPANY_NAME)
# Set the JDK RC Company name
# Otherwise uses the value set for "vendor-name".
UTIL_ARG_WITH(NAME: jdk-rc-company-name, TYPE: string,
DEFAULT: $COMPANY_NAME,
DESC: [Set JDK RC company name. This is used for CompanyName properties of MS Windows binaries.],
DEFAULT_DESC: [from branding.conf],
CHECK_VALUE: [UTIL_CHECK_STRING_NON_EMPTY_PRINTABLE])
AC_SUBST(JDK_RC_COMPANY_NAME)
# The vendor URL, if any
# Only set VENDOR_URL if '--with-vendor-url' was used and is not empty.
# Otherwise we will use the value from "branding.conf" included above.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ PRODUCT_NAME := @PRODUCT_NAME@
PRODUCT_SUFFIX := @PRODUCT_SUFFIX@
JDK_RC_PLATFORM_NAME := @JDK_RC_PLATFORM_NAME@
JDK_RC_NAME := @JDK_RC_NAME@
JDK_RC_COMPANY_NAME:=@JDK_RC_COMPANY_NAME@
COMPANY_NAME := @COMPANY_NAME@
HOTSPOT_VM_DISTRO := @HOTSPOT_VM_DISTRO@
MACOSX_BUNDLE_NAME_BASE := @MACOSX_BUNDLE_NAME_BASE@
Expand Down
2 changes: 1 addition & 1 deletion make/common/JdkNativeCompilation.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ GLOBAL_VERSION_INFO_RESOURCE := $(TOPDIR)/src/java.base/windows/native/common/ve

JDK_RCFLAGS=$(RCFLAGS) \
-D"JDK_VERSION_STRING=$(VERSION_STRING)" \
-D"JDK_COMPANY=$(COMPANY_NAME)" \
-D"JDK_COMPANY=$(JDK_RC_COMPANY_NAME)" \
-D"JDK_VER=$(VERSION_NUMBER_FOUR_POSITIONS)" \
-D"JDK_COPYRIGHT=Copyright \xA9 $(COPYRIGHT_YEAR)" \
-D"JDK_NAME=$(JDK_RC_NAME) $(VERSION_SHORT)" \
Expand Down
2 changes: 1 addition & 1 deletion make/common/modules/LauncherCommon.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ define SetupBuildLauncherBody
$1_PLIST_FILE := $$(SUPPORT_OUTPUTDIR)/native/$$(MODULE)/$1/Info.plist

$$(eval $$(call SetupTextFileProcessing, BUILD_PLIST_$1, \
SOURCE_FILES := $(TOPDIR)/make/data/bundle/cmdline-Info.plist, \
SOURCE_FILES := $(TOPDIR)/make/data/bundle/cmdline-Info.plist.template, \
OUTPUT_FILE := $$($1_PLIST_FILE), \
REPLACEMENTS := \
@@ID@@ => $(MACOSX_BUNDLE_ID_BASE).$1 ; \
Expand Down
2 changes: 1 addition & 1 deletion make/conf/jib-profiles.js
Original file line number Diff line number Diff line change
Expand Up @@ -1206,7 +1206,7 @@ var getJibProfilesDependencies = function (input, common) {

jcov: {
organization: common.organization,
revision: "3.0-15-jdk-asm+1.0",
revision: "3.0-16-jdk-asm+1.0",
ext: "zip",
environment_name: "JCOV_HOME",
},
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion make/hotspot/gensrc/GenerateSources.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ $(eval $(call IncludeCustomExtension, hotspot/gensrc/GenerateSources.gmk))

# Setup the hotspot launcher script for developer use
$(eval $(call SetupTextFileProcessing, CREATE_HOTSPOT_LAUNCHER, \
SOURCE_FILES := $(TOPDIR)/make/scripts/hotspot.sh, \
SOURCE_FILES := $(TOPDIR)/make/scripts/hotspot.sh.template, \
OUTPUT_FILE := $(JVM_OUTPUTDIR)/hotspot, \
REPLACEMENTS := \
@@LIBARCH@@ => $(OPENJDK_TARGET_CPU_LEGACY_LIB) ; \
Expand Down
2 changes: 1 addition & 1 deletion make/modules/java.base/Lib.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ ifeq ($(call isTargetOs, linux)+$(call isTargetCpu, x86_64)+$(INCLUDE_COMPILER2)
TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
OPTIMIZATION := HIGH, \
CFLAGS := $(CFLAGS_JDKLIB), \
CXXFLAGS := $(CXXFLAGS_JDKLIB), \
CXXFLAGS := $(CXXFLAGS_JDKLIB) -std=c++17, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
LIBS := $(LIBCXX), \
Expand Down
File renamed without changes.
29 changes: 16 additions & 13 deletions make/test/BuildMicrobenchmark.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,10 @@ JMH_UNPACKED_DIR := $(MICROBENCHMARK_OUTPUT)/jmh_jars
JMH_UNPACKED_JARS_DONE := $(JMH_UNPACKED_DIR)/_unpacked.marker

# External dependencies
JMH_COMPILE_JARS := $(JMH_CORE_JAR) $(JMH_GENERATOR_JAR)
WHITEBOX_JAR := $(SUPPORT_OUTPUTDIR)/test/lib/wb.jar
JMH_COMPILE_JARS := $(JMH_CORE_JAR) $(JMH_GENERATOR_JAR) $(WHITEBOX_JAR)
JMH_RUNTIME_JARS := $(JMH_CORE_JAR) $(JMH_COMMONS_MATH_JAR) $(JMH_JOPT_SIMPLE_JAR)

MICROBENCHMARK_CLASSPATH := $(call PathList, $(JMH_COMPILE_JARS))

# Native dependencies
MICROBENCHMARK_NATIVE_SRC_DIRS := $(MICROBENCHMARK_SRC)
MICROBENCHMARK_NATIVE_OUTPUT := $(MICROBENCHMARK_OUTPUT)/native
Expand Down Expand Up @@ -92,24 +91,28 @@ $(eval $(call SetupJavaCompilation, BUILD_INDIFY, \
$(eval $(call SetupJavaCompilation, BUILD_JDK_MICROBENCHMARK, \
TARGET_RELEASE := $(TARGET_RELEASE_NEWJDK_UPGRADED), \
SMALL_JAVA := false, \
CLASSPATH := $(MICROBENCHMARK_CLASSPATH), \
DISABLED_WARNINGS := restricted this-escape processing rawtypes cast serial preview, \
CLASSPATH := $(JMH_COMPILE_JARS), \
DISABLED_WARNINGS := restricted this-escape processing rawtypes cast \
serial preview, \
SRC := $(MICROBENCHMARK_SRC), \
BIN := $(MICROBENCHMARK_CLASSES), \
JAVAC_FLAGS := --add-exports java.base/sun.security.util=ALL-UNNAMED \
--add-exports java.base/sun.invoke.util=ALL-UNNAMED \
JAVAC_FLAGS := \
--add-exports java.base/jdk.internal.classfile.impl=ALL-UNNAMED \
--add-exports java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED \
--add-exports java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED \
--add-exports java.base/jdk.internal.vm=ALL-UNNAMED \
--add-exports java.base/jdk.internal.misc=ALL-UNNAMED \
--add-exports java.base/jdk.internal.event=ALL-UNNAMED \
--add-exports java.base/jdk.internal.foreign=ALL-UNNAMED \
--add-exports java.base/jdk.internal.misc=ALL-UNNAMED \
--add-exports java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED \
--add-exports java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED \
--add-exports java.base/jdk.internal.vm=ALL-UNNAMED \
--add-exports java.base/sun.invoke.util=ALL-UNNAMED \
--add-exports java.base/sun.security.util=ALL-UNNAMED \
--enable-preview \
-processor org.openjdk.jmh.generators.BenchmarkProcessor, \
JAVA_FLAGS := --add-modules jdk.unsupported --limit-modules java.management \
JAVA_FLAGS := \
--add-exports java.base/jdk.internal.vm=ALL-UNNAMED \
--enable-preview, \
--add-modules jdk.unsupported \
--enable-preview \
--limit-modules java.management, \
))

$(BUILD_JDK_MICROBENCHMARK): $(JMH_COMPILE_JARS)
Expand Down
29 changes: 26 additions & 3 deletions make/test/BuildTestLib.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,22 @@
# questions.
#

################################################################################
# This file builds the Java components of testlib.
# It also covers the test-image part, where the built files are copied to the
# test image.
################################################################################

default: all

include $(SPEC)
include MakeBase.gmk
include JavaCompilation.gmk

################################################################################
# Targets for building the test lib jars
################################################################################

TARGETS :=

TEST_LIB_SOURCE_DIR := $(TOPDIR)/test/lib
Expand Down Expand Up @@ -63,8 +73,21 @@ $(eval $(call SetupJavaCompilation, BUILD_TEST_LIB_JAR, \

TARGETS += $(BUILD_TEST_LIB_JAR)

##########################################################################################
build-test-lib: $(TARGETS)

################################################################################
# Targets for building test-image.
################################################################################

# Copy the jars to the test image.
$(eval $(call SetupCopyFiles, COPY_LIBTEST_JARS, \
DEST := $(TEST_IMAGE_DIR)/lib-test, \
FILES := $(BUILD_WB_JAR_JAR) $(BUILD_TEST_LIB_JAR_JAR), \
))
#

test-image-lib: $(COPY_LIBTEST_JARS)

all: $(TARGETS)
all: build-test-lib

.PHONY: default all
.PHONY: default all build-test-lib test-image-lib
5 changes: 5 additions & 0 deletions src/hotspot/cpu/aarch64/matcher_aarch64.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -193,4 +193,9 @@
}
}

// Is SIMD sort supported for this CPU?
static bool supports_simd_sort(BasicType bt) {
return false;
}

#endif // CPU_AARCH64_MATCHER_AARCH64_HPP
6 changes: 5 additions & 1 deletion src/hotspot/cpu/arm/interp_masm_arm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -303,15 +303,19 @@ void InterpreterMacroAssembler::load_field_entry(Register cache, Register index,
}

void InterpreterMacroAssembler::load_method_entry(Register cache, Register index, int bcp_offset) {
assert_different_registers(cache, index);

// Get index out of bytecode pointer
get_index_at_bcp(index, bcp_offset, cache /* as tmp */, sizeof(u2));

// sizeof(ResolvedMethodEntry) is not a power of 2 on Arm, so can't use shift
mov(cache, sizeof(ResolvedMethodEntry));
mul(index, index, cache); // Scale the index to be the entry index * sizeof(ResolvedMethodEntry)

// load constant pool cache pointer
ldr(cache, Address(FP, frame::interpreter_frame_cache_offset * wordSize));
// Get address of method entries array
ldr(cache, Address(cache, ConstantPoolCache::method_entries_offset()));
ldr(cache, Address(cache, in_bytes(ConstantPoolCache::method_entries_offset())));
add(cache, cache, Array<ResolvedMethodEntry>::base_offset_in_bytes());
add(cache, cache, index);
}
Expand Down
5 changes: 5 additions & 0 deletions src/hotspot/cpu/arm/matcher_arm.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -186,4 +186,9 @@
}
}

// Is SIMD sort supported for this CPU?
static bool supports_simd_sort(BasicType bt) {
return false;
}

#endif // CPU_ARM_MATCHER_ARM_HPP
9 changes: 4 additions & 5 deletions src/hotspot/cpu/arm/templateInterpreterGenerator_arm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -370,17 +370,16 @@ address TemplateInterpreterGenerator::generate_return_entry_for(TosState state,
if (index_size == sizeof(u4)) {
__ load_resolved_indy_entry(Rcache, Rindex);
__ ldrh(Rcache, Address(Rcache, in_bytes(ResolvedIndyEntry::num_parameters_offset())));
__ check_stack_top();
__ add(Rstack_top, Rstack_top, AsmOperand(Rcache, lsl, Interpreter::logStackElementSize));
} else {
// Pop N words from the stack
assert(index_size == sizeof(u2), "Can only be u2");
__ load_method_entry(Rcache, Rindex);
__ ldrh(Rcache, Address(Rcache, in_bytes(ResolvedIndyEntry::num_parameters_offset())));
__ check_stack_top();
__ add(Rstack_top, Rstack_top, AsmOperand(Rcache, lsl, Interpreter::logStackElementSize));
__ ldrh(Rcache, Address(Rcache, in_bytes(ResolvedMethodEntry::num_parameters_offset())));
}

__ check_stack_top();
__ add(Rstack_top, Rstack_top, AsmOperand(Rcache, lsl, Interpreter::logStackElementSize));

__ convert_retval_to_tos(state);

__ check_and_handle_popframe();
Expand Down
33 changes: 20 additions & 13 deletions src/hotspot/cpu/arm/templateTable_arm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3666,15 +3666,15 @@ void TemplateTable::prepare_invoke(Register Rcache, Register recv) {
// load receiver if needed (after extra argument is pushed so parameter size is correct)
if (load_receiver) {
__ ldrh(recv, Address(Rcache, in_bytes(ResolvedMethodEntry::num_parameters_offset())));
Address recv_addr = __ receiver_argument_address(Rstack_top, Rtemp, recv);
__ ldr(recv, recv_addr);
__ add(recv, Rstack_top, AsmOperand(recv, lsl, Interpreter::logStackElementSize));
__ ldr(recv, Address(recv, -Interpreter::stackElementSize));
__ verify_oop(recv);
}

// load return address
{ const address table = (address) Interpreter::invoke_return_entry_table_for(code);
__ mov_slow(Rtemp, table);
__ ldr(LR, Address::indexed_ptr(Rtemp, ret_type));
__ mov_slow(LR, table);
__ ldr(LR, Address::indexed_ptr(LR, ret_type));
}
}

Expand Down Expand Up @@ -3744,10 +3744,13 @@ void TemplateTable::invokevirtual(int byte_no) {
void TemplateTable::invokespecial(int byte_no) {
transition(vtos, vtos);
assert(byte_no == f1_byte, "use this argument");

const Register Rrecv = R2_tmp;
load_resolved_method_entry_special_or_static(R2_tmp, // ResolvedMethodEntry*
const Register Rflags = R3_tmp;

load_resolved_method_entry_special_or_static(Rrecv, // ResolvedMethodEntry*
Rmethod, // Method*
R3_tmp); // Flags
Rflags); // Flags
prepare_invoke(Rrecv, Rrecv);
__ verify_oop(Rrecv);
__ null_check(Rrecv, Rtemp);
Expand All @@ -3760,12 +3763,16 @@ void TemplateTable::invokespecial(int byte_no) {
void TemplateTable::invokestatic(int byte_no) {
transition(vtos, vtos);
assert(byte_no == f1_byte, "use this argument");
load_resolved_method_entry_special_or_static(R2_tmp, // ResolvedMethodEntry*

const Register Rrecv = R2_tmp;
const Register Rflags = R3_tmp;

load_resolved_method_entry_special_or_static(Rrecv, // ResolvedMethodEntry*
Rmethod, // Method*
R3_tmp); // Flags
prepare_invoke(R2_tmp, R2_tmp);
Rflags); // Flags
prepare_invoke(Rrecv, Rrecv);
// do the call
__ profile_call(R2_tmp);
__ profile_call(Rrecv);
__ jump_from_interpreted(Rmethod);
}

Expand All @@ -3788,10 +3795,10 @@ void TemplateTable::invokeinterface(int byte_no) {
const Register Rflags = R3_tmp;
const Register Rklass = R2_tmp; // Note! Same register with Rrecv

load_resolved_method_entry_interface(R2_tmp, // ResolvedMethodEntry*
R1_tmp, // Klass*
load_resolved_method_entry_interface(Rrecv, // ResolvedMethodEntry*
Rinterf, // Klass*
Rmethod, // Method* or itable/vtable index
R3_tmp); // Flags
Rflags); // Flags
prepare_invoke(Rrecv, Rrecv);

// First check for Object case, then private interface method,
Expand Down
Loading

0 comments on commit 67dcb9e

Please sign in to comment.