43 lines
1.2 KiB
JavaScript
43 lines
1.2 KiB
JavaScript
const BlockUtility = require('../engine/block-utility');
|
|
|
|
class CompatibilityLayerBlockUtility extends BlockUtility {
|
|
constructor () {
|
|
super();
|
|
this._startedBranch = null;
|
|
}
|
|
|
|
get stackFrame () {
|
|
return this.thread.compatibilityStackFrame;
|
|
}
|
|
|
|
startBranch (branchNumber, isLoop) {
|
|
this._startedBranch = [branchNumber, isLoop];
|
|
}
|
|
|
|
startProcedure () {
|
|
throw new Error('startProcedure is not supported by this BlockUtility');
|
|
}
|
|
|
|
// Parameters are not used by compiled scripts.
|
|
initParams () {
|
|
throw new Error('initParams is not supported by this BlockUtility');
|
|
}
|
|
pushParam () {
|
|
throw new Error('pushParam is not supported by this BlockUtility');
|
|
}
|
|
getParam () {
|
|
throw new Error('getParam is not supported by this BlockUtility');
|
|
}
|
|
|
|
init (thread, fakeBlockId, stackFrame) {
|
|
this.thread = thread;
|
|
this.sequencer = thread.target.runtime.sequencer;
|
|
this._startedBranch = null;
|
|
thread.stack[0] = fakeBlockId;
|
|
thread.compatibilityStackFrame = stackFrame;
|
|
}
|
|
}
|
|
|
|
// Export a single instance to be reused.
|
|
module.exports = new CompatibilityLayerBlockUtility();
|