mirror of
https://github.com/status-im/react-native.git
synced 2025-02-27 16:40:38 +00:00
Make loadRAMBundle a C function, not a method
Summary: This makes the state it uses more explicit. It also makes a bug with performance measurement obvious: if we early return to error, we never mark stop for `RCTPLRAMStartupCodeSize`. Reviewed By: javache Differential Revision: D3542751 fbshipit-source-id: e6c1e3f3a76098ca37b8078f6e9abc805ad2d9da
This commit is contained in:
parent
b33424e5ed
commit
8fb6111fa5
@ -666,8 +666,12 @@ static void installBasicSynchronousHooksOnContext(JSContext *context)
|
|||||||
uint32_t magicNumber = NSSwapLittleIntToHost(*((uint32_t *)script.bytes));
|
uint32_t magicNumber = NSSwapLittleIntToHost(*((uint32_t *)script.bytes));
|
||||||
BOOL isRAMBundle = magicNumber == RCTRAMBundleMagicNumber;
|
BOOL isRAMBundle = magicNumber == RCTRAMBundleMagicNumber;
|
||||||
if (isRAMBundle) {
|
if (isRAMBundle) {
|
||||||
|
[_performanceLogger markStartForTag:RCTPLRAMBundleLoad];
|
||||||
NSError *error;
|
NSError *error;
|
||||||
script = [self loadRAMBundle:sourceURL error:&error];
|
script = loadRAMBundle(sourceURL, &error, _randomAccessBundle);
|
||||||
|
[self registerNativeRequire];
|
||||||
|
[_performanceLogger markStopForTag:RCTPLRAMBundleLoad];
|
||||||
|
[_performanceLogger setValue:script.length forTag:RCTPLRAMStartupCodeSize];
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
if (onComplete) {
|
if (onComplete) {
|
||||||
@ -892,9 +896,8 @@ static RandomAccessBundleStartupCode readRAMBundle(file_ptr bundle, RandomAccess
|
|||||||
return {std::move(code), startupCodeSize};
|
return {std::move(code), startupCodeSize};
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSData *)loadRAMBundle:(NSURL *)sourceURL error:(NSError **)error
|
static NSData *loadRAMBundle(NSURL *sourceURL, NSError **error, RandomAccessBundleData &randomAccessBundle)
|
||||||
{
|
{
|
||||||
[_performanceLogger markStartForTag:RCTPLRAMBundleLoad];
|
|
||||||
file_ptr bundle(fopen(sourceURL.path.UTF8String, "r"), fclose);
|
file_ptr bundle(fopen(sourceURL.path.UTF8String, "r"), fclose);
|
||||||
if (!bundle) {
|
if (!bundle) {
|
||||||
if (error) {
|
if (error) {
|
||||||
@ -903,10 +906,7 @@ static RandomAccessBundleStartupCode readRAMBundle(file_ptr bundle, RandomAccess
|
|||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
[self registerNativeRequire];
|
auto startupCode = readRAMBundle(std::move(bundle), randomAccessBundle);
|
||||||
|
|
||||||
|
|
||||||
auto startupCode = readRAMBundle(std::move(bundle), _randomAccessBundle);
|
|
||||||
if (startupCode.isEmpty()) {
|
if (startupCode.isEmpty()) {
|
||||||
if (error) {
|
if (error) {
|
||||||
*error = RCTErrorWithMessage(@"Error loading RAM Bundle");
|
*error = RCTErrorWithMessage(@"Error loading RAM Bundle");
|
||||||
@ -914,8 +914,6 @@ static RandomAccessBundleStartupCode readRAMBundle(file_ptr bundle, RandomAccess
|
|||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
[_performanceLogger markStopForTag:RCTPLRAMBundleLoad];
|
|
||||||
[_performanceLogger setValue:startupCode.size forTag:RCTPLRAMStartupCodeSize];
|
|
||||||
return [NSData dataWithBytesNoCopy:startupCode.code.release() length:startupCode.size freeWhenDone:YES];
|
return [NSData dataWithBytesNoCopy:startupCode.code.release() length:startupCode.size freeWhenDone:YES];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user