Skip to content

Commit 7e3a43c

Browse files
RSNarafacebook-github-bot
authored andcommitted
Fix NativeJSCHeapCapture
Summary: In D15393464, we introduced `NativeHeapCapture`, but it had a few problems: 1. It required `JSCHeapCapture` by doing `TurboModuleRegistry.get<Spec>('HeapCapture')`, when it should have done `TurboModuleRegistry.get<Spec>('JSCHeapCapture')`. 2. It had an additional method `captureHeap`, which didn't exist on the Android NativeModule. This diff corrects those mistakes. Changelog: [Both][Fixed] - Fix JSCHeapCapture Reviewed By: PeteTheHeat Differential Revision: D19383511 fbshipit-source-id: 30e69afbcdba673f3f32c16bde4f0342568ab97d
1 parent 6bdfd84 commit 7e3a43c

File tree

5 files changed

+72
-55
lines changed

5 files changed

+72
-55
lines changed

Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm

+20-27
Original file line numberDiff line numberDiff line change
@@ -1204,33 +1204,6 @@ + (RCTManagedPointer *)JS_NativeFrameRateLogger_SpecSetGlobalOptionsOptions:(id)
12041204

12051205

12061206

1207-
}
1208-
1209-
} // namespace react
1210-
} // namespace facebook
1211-
namespace facebook {
1212-
namespace react {
1213-
1214-
1215-
static facebook::jsi::Value __hostFunction_NativeHeapCaptureSpecJSI_captureHeap(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
1216-
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "captureHeap", @selector(captureHeap:), args, count);
1217-
}
1218-
1219-
static facebook::jsi::Value __hostFunction_NativeHeapCaptureSpecJSI_captureComplete(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
1220-
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "captureComplete", @selector(captureComplete:error:), args, count);
1221-
}
1222-
1223-
1224-
NativeHeapCaptureSpecJSI::NativeHeapCaptureSpecJSI(id<RCTTurboModule> instance, std::shared_ptr<CallInvoker> jsInvoker)
1225-
: ObjCTurboModule("HeapCapture", instance, jsInvoker) {
1226-
1227-
methodMap_["captureHeap"] = MethodMetadata {1, __hostFunction_NativeHeapCaptureSpecJSI_captureHeap};
1228-
1229-
1230-
methodMap_["captureComplete"] = MethodMetadata {2, __hostFunction_NativeHeapCaptureSpecJSI_captureComplete};
1231-
1232-
1233-
12341207
}
12351208

12361209
} // namespace react
@@ -1522,6 +1495,26 @@ + (RCTManagedPointer *)JS_NativeImageStore_SpecAddImageFromBase64ErrorCallbackEr
15221495

15231496

15241497

1498+
}
1499+
1500+
} // namespace react
1501+
} // namespace facebook
1502+
namespace facebook {
1503+
namespace react {
1504+
1505+
1506+
static facebook::jsi::Value __hostFunction_NativeJSCHeapCaptureSpecJSI_captureComplete(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
1507+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "captureComplete", @selector(captureComplete:error:), args, count);
1508+
}
1509+
1510+
1511+
NativeJSCHeapCaptureSpecJSI::NativeJSCHeapCaptureSpecJSI(id<RCTTurboModule> instance, std::shared_ptr<CallInvoker> jsInvoker)
1512+
: ObjCTurboModule("JSCHeapCapture", instance, jsInvoker) {
1513+
1514+
methodMap_["captureComplete"] = MethodMetadata {2, __hostFunction_NativeJSCHeapCaptureSpecJSI_captureComplete};
1515+
1516+
1517+
15251518
}
15261519

15271520
} // namespace react

Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h

+19-20
Original file line numberDiff line numberDiff line change
@@ -1304,26 +1304,6 @@ namespace facebook {
13041304
};
13051305
} // namespace react
13061306
} // namespace facebook
1307-
@protocol NativeHeapCaptureSpec <RCTBridgeModule, RCTTurboModule>
1308-
1309-
- (void)captureHeap:(NSString *)path;
1310-
- (void)captureComplete:(NSString *)path
1311-
error:(NSString * _Nullable)error;
1312-
1313-
@end
1314-
namespace facebook {
1315-
namespace react {
1316-
/**
1317-
* ObjC++ class for module 'HeapCapture'
1318-
*/
1319-
1320-
class JSI_EXPORT NativeHeapCaptureSpecJSI : public ObjCTurboModule {
1321-
public:
1322-
NativeHeapCaptureSpecJSI(id<RCTTurboModule> instance, std::shared_ptr<CallInvoker> jsInvoker);
1323-
1324-
};
1325-
} // namespace react
1326-
} // namespace facebook
13271307

13281308
namespace JS {
13291309
namespace NativeI18nManager {
@@ -1631,6 +1611,25 @@ namespace facebook {
16311611
};
16321612
} // namespace react
16331613
} // namespace facebook
1614+
@protocol NativeJSCHeapCaptureSpec <RCTBridgeModule, RCTTurboModule>
1615+
1616+
- (void)captureComplete:(NSString *)path
1617+
error:(NSString * _Nullable)error;
1618+
1619+
@end
1620+
namespace facebook {
1621+
namespace react {
1622+
/**
1623+
* ObjC++ class for module 'JSCHeapCapture'
1624+
*/
1625+
1626+
class JSI_EXPORT NativeJSCHeapCaptureSpecJSI : public ObjCTurboModule {
1627+
public:
1628+
NativeJSCHeapCaptureSpecJSI(id<RCTTurboModule> instance, std::shared_ptr<CallInvoker> jsInvoker);
1629+
1630+
};
1631+
} // namespace react
1632+
} // namespace facebook
16341633
@protocol NativeJSCSamplingProfilerSpec <RCTBridgeModule, RCTTurboModule>
16351634

16361635
- (void)operationComplete:(double)token

Libraries/HeapCapture/HeapCapture.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
'use strict';
1212

13-
import NativeHeapCapture from './NativeHeapCapture';
13+
import NativeJSCHeapCapture from './NativeJSCHeapCapture';
1414

1515
const HeapCapture = {
1616
captureHeap: function(path: string) {
@@ -22,8 +22,8 @@ const HeapCapture = {
2222
console.log('HeapCapture.captureHeap error: ' + e.toString());
2323
error = e.toString();
2424
}
25-
if (NativeHeapCapture) {
26-
NativeHeapCapture.captureComplete(path, error);
25+
if (NativeJSCHeapCapture) {
26+
NativeJSCHeapCapture.captureComplete(path, error);
2727
}
2828
},
2929
};

Libraries/HeapCapture/NativeHeapCapture.js Libraries/HeapCapture/NativeJSCHeapCapture.js

+1-5
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,7 @@ import type {TurboModule} from '../TurboModule/RCTExport';
1414
import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
1515

1616
export interface Spec extends TurboModule {
17-
// Common interface
18-
+captureHeap: (path: string) => void;
19-
20-
// Android only
2117
+captureComplete: (path: string, error: ?string) => void;
2218
}
2319

24-
export default (TurboModuleRegistry.get<Spec>('HeapCapture'): ?Spec);
20+
export default (TurboModuleRegistry.get<Spec>('JSCHeapCapture'): ?Spec);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* Copyright (c) Facebook, Inc. and its affiliates.
3+
*
4+
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
5+
* directory of this source tree.
6+
*
7+
* <p>Generated by an internal genrule from Flow types.
8+
*
9+
* @generated
10+
* @nolint
11+
*/
12+
13+
package com.facebook.fbreact.specs;
14+
15+
import com.facebook.react.bridge.ReactApplicationContext;
16+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
17+
import com.facebook.react.bridge.ReactMethod;
18+
import com.facebook.react.bridge.ReactModuleWithSpec;
19+
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
20+
import javax.annotation.Nullable;
21+
22+
public abstract class NativeJSCHeapCaptureSpec extends ReactContextBaseJavaModule implements ReactModuleWithSpec, TurboModule {
23+
public NativeJSCHeapCaptureSpec(ReactApplicationContext reactContext) {
24+
super(reactContext);
25+
}
26+
27+
@ReactMethod
28+
public abstract void captureComplete(String path, @Nullable String error);
29+
}

0 commit comments

Comments
 (0)