提交 cb8841c9 编写于 作者: J jwilhelm

Merge

...@@ -71,41 +71,36 @@ default:: $(AdditionalTargets) $(JvmtiGeneratedFiles) ...@@ -71,41 +71,36 @@ default:: $(AdditionalTargets) $(JvmtiGeneratedFiles)
!include $(HOTSPOTWORKSPACE)/make/hotspot_version !include $(HOTSPOTWORKSPACE)/make/hotspot_version
!if "$(HOTSPOT_RELEASE_VERSION)" != ""
HOTSPOT_RELEASE_VERSION="$(HOTSPOT_RELEASE_VERSION)"
!else
HOTSPOT_RELEASE_VERSION="$(HS_MAJOR_VER).$(HS_MINOR_VER)-b$(HS_BUILD_NUMBER)"
!endif
!if "$(USER_RELEASE_SUFFIX)" != "" !if "$(USER_RELEASE_SUFFIX)" != ""
HOTSPOT_BUILD_VERSION$(HOTSPOT_BUILD_VERSION) = internal-$(USER_RELEASE_SUFFIX) HOTSPOT_BUILD_VERSION = internal-$(USER_RELEASE_SUFFIX)
!else !else
HOTSPOT_BUILD_VERSION$(HOTSPOT_BUILD_VERSION) = internal HOTSPOT_BUILD_VERSION = internal
!endif !endif
!if "$(HOTSPOT_BUILD_VERSION)" != "" !if "$(HOTSPOT_RELEASE_VERSION)" != ""
HOTSPOT_RELEASE_VERSION="$(HOTSPOT_RELEASE_VERSION)-$(HOTSPOT_BUILD_VERSION)" HOTSPOT_RELEASE_VERSION="\\\"$(HOTSPOT_RELEASE_VERSION)\\\""
!else
HOTSPOT_RELEASE_VERSION="\\\"$(HS_MAJOR_VER).$(HS_MINOR_VER)-b$(HS_BUILD_NUMBER)-$(HOTSPOT_BUILD_VERSION)\\\""
!endif !endif
!if "$(JRE_RELEASE_VERSION)" != "" !if "$(JRE_RELEASE_VERSION)" != ""
JRE_RELEASE_VERSION="$(JRE_RELEASE_VERSION)" JRE_RELEASE_VERSION="\\\"$(JRE_RELEASE_VERSION)\\\""
!else !else
JRE_RELEASE_VERSION="$(JDK_MAJOR_VER).$(JDK_MINOR_VER).$(JDK_MICRO_VER)" JRE_RELEASE_VERSION="\\\"$(JDK_MAJOR_VER).$(JDK_MINOR_VER).$(JDK_MICRO_VER)\\\""
!endif !endif
# Define HOTSPOT_VM_DISTRO if HOTSPOT_VM_DISTRO is set, # Define HOTSPOT_VM_DISTRO if HOTSPOT_VM_DISTRO is set,
# and if it is not see if we have the src/closed directory # and if it is not see if we have the src/closed directory
!if "$(HOTSPOT_VM_DISTRO)" != "" !if "$(HOTSPOT_VM_DISTRO)" != ""
HOTSPOT_VM_DISTRO="$(HOTSPOT_VM_DISTRO)" HOTSPOT_VM_DISTRO=$(HOTSPOT_VM_DISTRO)
!else !else
!if exists($(HOTSPOTWORKSPACE)\src\closed) !if exists($(HOTSPOTWORKSPACE)\src\closed)
HOTSPOT_VM_DISTRO="Java HotSpot(TM)" HOTSPOT_VM_DISTRO="\\\"Java HotSpot(TM)\\\""
!else !else
HOTSPOT_VM_DISTRO="OpenJDK" HOTSPOT_VM_DISTRO="\\\"OpenJDK\\\""
!endif !endif
!endif !endif
ProjectCreatorIDEOptions = $(ProjectCreatorIDEOptions) \ ReleaseOptions = -define HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) -define JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION) -define HOTSPOT_VM_DISTRO=$(HOTSPOT_VM_DISTRO)
-define HOTSPOT_RELEASE_VERSION=\\\"$(HOTSPOT_RELEASE_VERSION)\\\" \ ProjectCreatorIDEOptions = $(ProjectCreatorIDEOptions) $(ReleaseOptions)
-define JRE_RELEASE_VERSION=\\\"$(JRE_RELEASE_VERSION)\\\" \
-define HOTSPOT_VM_DISTRO=\\\"$(HOTSPOT_VM_DISTRO)\\\"
$(HOTSPOTBUILDSPACE)/$(ProjectFile): $(HOTSPOTBUILDSPACE)/classes/ProjectCreator.class $(HOTSPOTBUILDSPACE)/$(ProjectFile): $(HOTSPOTBUILDSPACE)/classes/ProjectCreator.class
@$(RUN_JAVA) -Djava.class.path="$(HOTSPOTBUILDSPACE)/classes" ProjectCreator WinGammaPlatform$(VcVersion) $(ProjectCreatorIDEOptions) @$(RUN_JAVA) -Djava.class.path="$(HOTSPOTBUILDSPACE)/classes" ProjectCreator WinGammaPlatform$(VcVersion) $(ProjectCreatorIDEOptions)
......
...@@ -31,9 +31,4 @@ private: ...@@ -31,9 +31,4 @@ private:
public: public:
void flush_bundle(bool start_new_bundle) {} void flush_bundle(bool start_new_bundle) {}
// Heuristic for pre-packing the pt/pn bit of a predicted branch.
bool is_backward_branch(Label& L) {
return L.is_bound() && insts_end() <= locator_address(L.loc());
}
#endif // CPU_SPARC_VM_CODEBUFFER_SPARC_HPP #endif // CPU_SPARC_VM_CODEBUFFER_SPARC_HPP
...@@ -204,25 +204,6 @@ ...@@ -204,25 +204,6 @@
intptr_t* out_register_addr(Register reg) const { intptr_t* out_register_addr(Register reg) const {
return younger_sp_addr_at(reg->after_save()->sp_offset_in_saved_window()); return younger_sp_addr_at(reg->after_save()->sp_offset_in_saved_window());
} }
intptr_t* memory_param_addr(int param_ix, bool is_in) const {
int offset = callee_register_argument_save_area_sp_offset + param_ix;
if (is_in)
return fp_addr_at(offset);
else
return sp_addr_at(offset);
}
intptr_t* param_addr(int param_ix, bool is_in) const {
if (param_ix >= callee_register_argument_save_area_words)
return memory_param_addr(param_ix, is_in);
else if (is_in)
return register_addr(Argument(param_ix, true).as_register());
else {
// the registers are stored in the next younger frame
// %%% is this really necessary?
ShouldNotReachHere();
return NULL;
}
}
// Interpreter frames // Interpreter frames
...@@ -269,12 +250,8 @@ ...@@ -269,12 +250,8 @@
#ifndef CC_INTERP #ifndef CC_INTERP
// where Lmonitors is saved: // where Lmonitors is saved:
BasicObjectLock** interpreter_frame_monitors_addr() const { inline BasicObjectLock** interpreter_frame_monitors_addr() const;
return (BasicObjectLock**) sp_addr_at(Lmonitors->sp_offset_in_saved_window()); inline intptr_t** interpreter_frame_esp_addr() const;
}
intptr_t** interpreter_frame_esp_addr() const {
return (intptr_t**)sp_addr_at(Lesp->sp_offset_in_saved_window());
}
inline void interpreter_frame_set_tos_address(intptr_t* x); inline void interpreter_frame_set_tos_address(intptr_t* x);
......
...@@ -25,6 +25,8 @@ ...@@ -25,6 +25,8 @@
#ifndef CPU_SPARC_VM_FRAME_SPARC_INLINE_HPP #ifndef CPU_SPARC_VM_FRAME_SPARC_INLINE_HPP
#define CPU_SPARC_VM_FRAME_SPARC_INLINE_HPP #define CPU_SPARC_VM_FRAME_SPARC_INLINE_HPP
#include "asm/macroAssembler.hpp"
// Inline functions for SPARC frames: // Inline functions for SPARC frames:
// Constructors // Constructors
...@@ -185,6 +187,13 @@ inline intptr_t* frame::interpreter_frame_tos_address() const { ...@@ -185,6 +187,13 @@ inline intptr_t* frame::interpreter_frame_tos_address() const {
return *interpreter_frame_esp_addr() + 1; return *interpreter_frame_esp_addr() + 1;
} }
inline BasicObjectLock** frame::interpreter_frame_monitors_addr() const {
return (BasicObjectLock**) sp_addr_at(Lmonitors->sp_offset_in_saved_window());
}
inline intptr_t** frame::interpreter_frame_esp_addr() const {
return (intptr_t**)sp_addr_at(Lesp->sp_offset_in_saved_window());
}
inline void frame::interpreter_frame_set_tos_address( intptr_t* x ) { inline void frame::interpreter_frame_set_tos_address( intptr_t* x ) {
*interpreter_frame_esp_addr() = x - 1; *interpreter_frame_esp_addr() = x - 1;
} }
......
...@@ -23,8 +23,7 @@ ...@@ -23,8 +23,7 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "asm/assembler.hpp" #include "asm/macroAssembler.inline.hpp"
#include "assembler_sparc.inline.hpp"
#include "code/icBuffer.hpp" #include "code/icBuffer.hpp"
#include "gc_interface/collectedHeap.inline.hpp" #include "gc_interface/collectedHeap.inline.hpp"
#include "interpreter/bytecodes.hpp" #include "interpreter/bytecodes.hpp"
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "assembler_sparc.inline.hpp" #include "asm/macroAssembler.inline.hpp"
#include "runtime/icache.hpp" #include "runtime/icache.hpp"
#define __ _masm-> #define __ _masm->
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#ifndef CPU_SPARC_VM_INTERP_MASM_SPARC_HPP #ifndef CPU_SPARC_VM_INTERP_MASM_SPARC_HPP
#define CPU_SPARC_VM_INTERP_MASM_SPARC_HPP #define CPU_SPARC_VM_INTERP_MASM_SPARC_HPP
#include "assembler_sparc.inline.hpp" #include "asm/macroAssembler.inline.hpp"
#include "interpreter/invocationCounter.hpp" #include "interpreter/invocationCounter.hpp"
// This file specializes the assember with interpreter-specific macros // This file specializes the assember with interpreter-specific macros
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "asm/assembler.hpp" #include "asm/macroAssembler.hpp"
#include "interpreter/bytecodeHistogram.hpp" #include "interpreter/bytecodeHistogram.hpp"
#include "interpreter/interpreter.hpp" #include "interpreter/interpreter.hpp"
#include "interpreter/interpreterGenerator.hpp" #include "interpreter/interpreterGenerator.hpp"
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "assembler_sparc.inline.hpp" #include "asm/macroAssembler.inline.hpp"
#include "memory/resourceArea.hpp" #include "memory/resourceArea.hpp"
#include "prims/jniFastGetField.hpp" #include "prims/jniFastGetField.hpp"
#include "prims/jvm_misc.hpp" #include "prims/jvm_misc.hpp"
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
...@@ -23,7 +23,8 @@ ...@@ -23,7 +23,8 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "assembler_sparc.inline.hpp" #include "asm/macroAssembler.inline.hpp"
#include "asm/codeBuffer.hpp"
#include "memory/metaspaceShared.hpp" #include "memory/metaspaceShared.hpp"
// Generate the self-patching vtable method: // Generate the self-patching vtable method:
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "asm/macroAssembler.hpp"
#include "interpreter/interpreter.hpp" #include "interpreter/interpreter.hpp"
#include "memory/allocation.inline.hpp" #include "memory/allocation.inline.hpp"
#include "prims/methodHandles.hpp" #include "prims/methodHandles.hpp"
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "assembler_sparc.inline.hpp" #include "asm/macroAssembler.hpp"
#include "memory/resourceArea.hpp" #include "memory/resourceArea.hpp"
#include "nativeInst_sparc.hpp" #include "nativeInst_sparc.hpp"
#include "oops/oop.inline.hpp" #include "oops/oop.inline.hpp"
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#ifndef CPU_SPARC_VM_NATIVEINST_SPARC_HPP #ifndef CPU_SPARC_VM_NATIVEINST_SPARC_HPP
#define CPU_SPARC_VM_NATIVEINST_SPARC_HPP #define CPU_SPARC_VM_NATIVEINST_SPARC_HPP
#include "asm/assembler.hpp" #include "asm/macroAssembler.hpp"
#include "memory/allocation.hpp" #include "memory/allocation.hpp"
#include "runtime/icache.hpp" #include "runtime/icache.hpp"
#include "runtime/os.hpp" #include "runtime/os.hpp"
...@@ -194,11 +194,10 @@ class NativeInstruction VALUE_OBJ_CLASS_SPEC { ...@@ -194,11 +194,10 @@ class NativeInstruction VALUE_OBJ_CLASS_SPEC {
static int inv_simm( int x, int nbits ) { return Assembler::inv_simm(x, nbits); } static int inv_simm( int x, int nbits ) { return Assembler::inv_simm(x, nbits); }
static intptr_t inv_wdisp( int x, int nbits ) { return Assembler::inv_wdisp( x, 0, nbits); } static intptr_t inv_wdisp( int x, int nbits ) { return Assembler::inv_wdisp( x, 0, nbits); }
static intptr_t inv_wdisp16( int x ) { return Assembler::inv_wdisp16(x, 0); } static intptr_t inv_wdisp16( int x ) { return Assembler::inv_wdisp16(x, 0); }
static int branch_destination_offset(int x) { return Assembler::branch_destination(x, 0); } static int branch_destination_offset(int x) { return MacroAssembler::branch_destination(x, 0); }
static int patch_branch_destination_offset(int dest_offset, int x) { static int patch_branch_destination_offset(int dest_offset, int x) {
return Assembler::patched_branch(dest_offset, x, 0); return MacroAssembler::patched_branch(dest_offset, x, 0);
} }
void set_annul_bit() { set_long_at(0, long_at(0) | Assembler::annul(true)); }
// utility for checking if x is either of 2 small constants // utility for checking if x is either of 2 small constants
static bool is_either(int x, int k1, int k2) { static bool is_either(int x, int k1, int k2) {
...@@ -889,7 +888,6 @@ class NativeGeneralJump: public NativeInstruction { ...@@ -889,7 +888,6 @@ class NativeGeneralJump: public NativeInstruction {
int patched_instr = patch_branch_destination_offset(dest - addr_at(0), long_at(0)); int patched_instr = patch_branch_destination_offset(dest - addr_at(0), long_at(0));
set_long_at(0, patched_instr); set_long_at(0, patched_instr);
} }
void set_annul() { set_annul_bit(); }
NativeInstruction *delay_slot_instr() { return nativeInstruction_at(addr_at(4));} NativeInstruction *delay_slot_instr() { return nativeInstruction_at(addr_at(4));}
void fill_delay_slot(int instr) { set_long_at(4, instr);} void fill_delay_slot(int instr) { set_long_at(4, instr);}
Assembler::Condition condition() { Assembler::Condition condition() {
......
...@@ -23,8 +23,7 @@ ...@@ -23,8 +23,7 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "asm/assembler.inline.hpp" #include "asm/assembler.hpp"
#include "assembler_sparc.inline.hpp"
#include "code/relocInfo.hpp" #include "code/relocInfo.hpp"
#include "nativeInst_sparc.hpp" #include "nativeInst_sparc.hpp"
#include "oops/oop.inline.hpp" #include "oops/oop.inline.hpp"
......
...@@ -24,8 +24,7 @@ ...@@ -24,8 +24,7 @@
#include "precompiled.hpp" #include "precompiled.hpp"
#ifdef COMPILER2 #ifdef COMPILER2
#include "asm/assembler.hpp" #include "asm/macroAssembler.inline.hpp"
#include "assembler_sparc.inline.hpp"
#include "classfile/systemDictionary.hpp" #include "classfile/systemDictionary.hpp"
#include "code/vmreg.hpp" #include "code/vmreg.hpp"
#include "interpreter/interpreter.hpp" #include "interpreter/interpreter.hpp"
......
...@@ -23,8 +23,7 @@ ...@@ -23,8 +23,7 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "asm/assembler.hpp" #include "asm/macroAssembler.inline.hpp"
#include "assembler_sparc.inline.hpp"
#include "code/debugInfoRec.hpp" #include "code/debugInfoRec.hpp"
#include "code/icBuffer.hpp" #include "code/icBuffer.hpp"
#include "code/vtableStubs.hpp" #include "code/vtableStubs.hpp"
......
...@@ -23,8 +23,7 @@ ...@@ -23,8 +23,7 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "asm/assembler.hpp" #include "asm/macroAssembler.inline.hpp"
#include "assembler_sparc.inline.hpp"
#include "interpreter/interpreter.hpp" #include "interpreter/interpreter.hpp"
#include "nativeInst_sparc.hpp" #include "nativeInst_sparc.hpp"
#include "oops/instanceOop.hpp" #include "oops/instanceOop.hpp"
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "asm/assembler.hpp" #include "asm/macroAssembler.hpp"
#include "interpreter/bytecodeHistogram.hpp" #include "interpreter/bytecodeHistogram.hpp"
#include "interpreter/interpreter.hpp" #include "interpreter/interpreter.hpp"
#include "interpreter/interpreterGenerator.hpp" #include "interpreter/interpreterGenerator.hpp"
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "assembler_sparc.inline.hpp" #include "asm/macroAssembler.inline.hpp"
#include "memory/resourceArea.hpp" #include "memory/resourceArea.hpp"
#include "runtime/java.hpp" #include "runtime/java.hpp"
#include "runtime/stubCodeGenerator.hpp" #include "runtime/stubCodeGenerator.hpp"
......
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "asm/assembler.hpp"
#include "code/vmreg.hpp" #include "code/vmreg.hpp"
......
...@@ -23,8 +23,7 @@ ...@@ -23,8 +23,7 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "asm/assembler.hpp" #include "asm/macroAssembler.inline.hpp"
#include "assembler_sparc.inline.hpp"
#include "code/vtableStubs.hpp" #include "code/vtableStubs.hpp"
#include "interp_masm_sparc.hpp" #include "interp_masm_sparc.hpp"
#include "memory/resourceArea.hpp" #include "memory/resourceArea.hpp"
......
此差异已折叠。
此差异已折叠。
...@@ -28,48 +28,6 @@ ...@@ -28,48 +28,6 @@
#include "asm/assembler.inline.hpp" #include "asm/assembler.inline.hpp"
#include "asm/codeBuffer.hpp" #include "asm/codeBuffer.hpp"
#include "code/codeCache.hpp" #include "code/codeCache.hpp"
#include "runtime/handles.inline.hpp"
inline void MacroAssembler::pd_patch_instruction(address branch, address target) {
unsigned char op = branch[0];
assert(op == 0xE8 /* call */ ||
op == 0xE9 /* jmp */ ||
op == 0xEB /* short jmp */ ||
(op & 0xF0) == 0x70 /* short jcc */ ||
op == 0x0F && (branch[1] & 0xF0) == 0x80 /* jcc */,
"Invalid opcode at patch point");
if (op == 0xEB || (op & 0xF0) == 0x70) {
// short offset operators (jmp and jcc)
char* disp = (char*) &branch[1];
int imm8 = target - (address) &disp[1];
guarantee(this->is8bit(imm8), "Short forward jump exceeds 8-bit offset");
*disp = imm8;
} else {
int* disp = (int*) &branch[(op == 0x0F)? 2: 1];
int imm32 = target - (address) &disp[1];
*disp = imm32;
}
}
#ifndef PRODUCT
inline void MacroAssembler::pd_print_patched_instruction(address branch) {
const char* s;
unsigned char op = branch[0];
if (op == 0xE8) {
s = "call";
} else if (op == 0xE9 || op == 0xEB) {
s = "jmp";
} else if ((op & 0xF0) == 0x70) {
s = "jcc";
} else if (op == 0x0F) {
s = "jcc";
} else {
s = "????";
}
tty->print("%s (unresolved)", s);
}
#endif // ndef PRODUCT
#ifndef _LP64 #ifndef _LP64
inline int Assembler::prefix_and_encode(int reg_enc, bool byteinst) { return reg_enc; } inline int Assembler::prefix_and_encode(int reg_enc, bool byteinst) { return reg_enc; }
...@@ -87,12 +45,6 @@ inline void Assembler::prefixq(Address adr, Register reg) {} ...@@ -87,12 +45,6 @@ inline void Assembler::prefixq(Address adr, Register reg) {}
inline void Assembler::prefix(Address adr, XMMRegister reg) {} inline void Assembler::prefix(Address adr, XMMRegister reg) {}
inline void Assembler::prefixq(Address adr, XMMRegister reg) {} inline void Assembler::prefixq(Address adr, XMMRegister reg) {}
#else
inline void Assembler::emit_long64(jlong x) {
*(jlong*) _code_pos = x;
_code_pos += sizeof(jlong);
code_section()->set_end(_code_pos);
}
#endif // _LP64 #endif // _LP64
#endif // CPU_X86_VM_ASSEMBLER_X86_INLINE_HPP #endif // CPU_X86_VM_ASSEMBLER_X86_INLINE_HPP
...@@ -23,7 +23,8 @@ ...@@ -23,7 +23,8 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "asm/assembler.hpp" #include "asm/macroAssembler.hpp"
#include "asm/macroAssembler.inline.hpp"
#include "c1/c1_Compilation.hpp" #include "c1/c1_Compilation.hpp"
#include "c1/c1_LIRAssembler.hpp" #include "c1/c1_LIRAssembler.hpp"
#include "c1/c1_MacroAssembler.hpp" #include "c1/c1_MacroAssembler.hpp"
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "asm/assembler.hpp" #include "asm/macroAssembler.hpp"
#include "interpreter/bytecodeHistogram.hpp" #include "interpreter/bytecodeHistogram.hpp"
#include "interpreter/cppInterpreter.hpp" #include "interpreter/cppInterpreter.hpp"
#include "interpreter/interpreter.hpp" #include "interpreter/interpreter.hpp"
......
...@@ -25,6 +25,8 @@ ...@@ -25,6 +25,8 @@
#ifndef CPU_X86_VM_FRAME_X86_INLINE_HPP #ifndef CPU_X86_VM_FRAME_X86_INLINE_HPP
#define CPU_X86_VM_FRAME_X86_INLINE_HPP #define CPU_X86_VM_FRAME_X86_INLINE_HPP
#include "code/codeCache.hpp"
// Inline functions for Intel frames: // Inline functions for Intel frames:
// Constructors: // Constructors:
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册