Reland "fix: move V8_EXPORT_PRIVATE marks to prevent unresolvable references"
This is a reland of13a04abacd
Original change's description: > fix: move V8_EXPORT_PRIVATE marks to prevent unresolvable references > > This change fixes missing symbol errors in the Windows 10 on ARM build > of Node.js. > > When a whole class is marked for export, all of its members are marked > as well. This can be a problem when inline members call undefined yet > inline members of other classes: the exported function will contain a > reference to the undefined inline function that should be satisfied at > link time, but because the other function is inline no symbol will be > produced that will satisfy that reference. > > Clang gets around this by masking inlined class members from export > using /Fc:dllexportInlines-. This is whyb0a2a567
worked. > > Node.js' Windows builds use MSVC and so do not have access to this > flag. This results in unresolved symbols at link time. > > Bug: v8:9465 > Change-Id: Ief9c7ab6ba35d22f995939eb62a64d6f1992ed85 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1696771 > Reviewed-by: Sigurd Schneider <sigurds@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Commit-Queue: Sigurd Schneider <sigurds@chromium.org> > Cr-Commit-Position: refs/heads/master@{#62660} Bug: v8:9465 Change-Id: Ib7f1d84e080929e3db1b2a2b001e8e08924f4da0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1703462 Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#62791}
This commit is contained in:
parent
7d6cb4fb7f
commit
58d1e842eb
@ -1970,7 +1970,7 @@ class InstructionAccurateScope {
|
||||
// original state, even if the lists were modified by some other means. Note
|
||||
// that this scope can be nested but the destructors need to run in the opposite
|
||||
// order as the constructors. We do not have assertions for this.
|
||||
class V8_EXPORT_PRIVATE UseScratchRegisterScope {
|
||||
class UseScratchRegisterScope {
|
||||
public:
|
||||
explicit UseScratchRegisterScope(TurboAssembler* tasm)
|
||||
: available_(tasm->TmpList()),
|
||||
@ -1981,7 +1981,7 @@ class V8_EXPORT_PRIVATE UseScratchRegisterScope {
|
||||
DCHECK_EQ(availablefp_->type(), CPURegister::kVRegister);
|
||||
}
|
||||
|
||||
~UseScratchRegisterScope();
|
||||
V8_EXPORT_PRIVATE ~UseScratchRegisterScope();
|
||||
|
||||
// Take a register from the appropriate temps list. It will be returned
|
||||
// automatically when the scope ends.
|
||||
@ -1995,10 +1995,11 @@ class V8_EXPORT_PRIVATE UseScratchRegisterScope {
|
||||
}
|
||||
|
||||
Register AcquireSameSizeAs(const Register& reg);
|
||||
VRegister AcquireSameSizeAs(const VRegister& reg);
|
||||
V8_EXPORT_PRIVATE VRegister AcquireSameSizeAs(const VRegister& reg);
|
||||
|
||||
private:
|
||||
static CPURegister AcquireNextAvailable(CPURegList* available);
|
||||
V8_EXPORT_PRIVATE static CPURegister AcquireNextAvailable(
|
||||
CPURegList* available);
|
||||
|
||||
// Available scratch registers.
|
||||
CPURegList* available_; // kRegister
|
||||
|
Loading…
Reference in New Issue
Block a user