Add locking around CatalystInstance.getJavaScriptContext()

Reviewed By: kathryngray

Differential Revision: D5861693

fbshipit-source-id: 226ff15622d5e1a8ae3ad4c63f1434bd95c1fa21
This commit is contained in:
Charles Dick
2017-09-22 08:23:35 -07:00
committed by Facebook Github Bot
parent c1058b1e90
commit e9aab0d452
5 changed files with 66 additions and 19 deletions
@@ -0,0 +1,29 @@
// Copyright 2004-present Facebook. All Rights Reserved.
package com.facebook.react.bridge;
import javax.annotation.concurrent.GuardedBy;
/**
* Wrapper for JavaScriptContext native pointer. CatalystInstanceImpl creates this on demand, and
* will call clear() before destroying the VM. People who need the raw JavaScriptContext pointer
* can synchronize on this wrapper object to guarantee that it will not be destroyed.
*/
public class JavaScriptContextHolder {
@GuardedBy("this")
private long mContext;
public JavaScriptContextHolder(long context) {
mContext = context;
}
@GuardedBy("this")
public long get() {
return mContext;
}
public synchronized void clear() {
mContext = 0;
}
}