git ssb

0+

wanderer🌟 / js-primea-hypervisor



Commit f0f5d06d3b472948e6b2269470149e2cbea149b3

Interace: use Address type where appropriate

Alex Beregszaszi committed on 8/16/2016, 11:12:39 PM
Parent: 049bedec5fd1ee9c75b10b89b9254d6d5ecaa39c

Files changed

interface.jschanged
interface.jsView
@@ -2,8 +2,9 @@
22 * This is the Ethereum interface that is exposed to the WASM instance which
33 * enables to interact with the Ethereum Environment
44 */
55 const constants = require('./constants.js')
6+const Address = require('./address.js')
67
78 // The interface exposed to the WebAessembly Core
89 module.exports = class Interface {
910 constructor (environment) {
@@ -80,9 +81,9 @@
8081 * the given offset.
8182 * @param {integer} offset
8283 */
8384 address (offset) {
84- this.setMemory(offset, constants.ADDRESS_SIZE_BYTES, this.environment.address)
85+ this.setMemory(offset, constants.ADDRESS_SIZE_BYTES, this.environment.address.toBuffer())
8586 }
8687
8788 /**
8889 * Gets balance of the given account and loads it into memory at the given
@@ -90,9 +91,9 @@
9091 * @param {integer} addressOffset the memory offset to laod the address
9192 * @param {integer} resultOffset
9293 */
9394 balance (addressOffset, offset) {
94- const address = this.getMemory(addressOffset, constants.ADDRESS_SIZE_BYTES)
95+ const address = new Address(this.getMemory(addressOffset, constants.ADDRESS_SIZE_BYTES))
9596 // call the parent contract and ask for the balance of one of its child contracts
9697 const balance = this.environment.parent.environment.getBalance(address)
9798 this.setMemory(offset, constants.BALANCE_SIZE_BYTES, balance)
9899 }
@@ -103,18 +104,18 @@
103104 * account with non-empty associated code.
104105 * @param {integer} offset
105106 */
106107 origin (offset) {
107- this.setMemory(offset, constants.ADDRESS_SIZE_BYTES, this.environment.origin)
108+ this.setMemory(offset, constants.ADDRESS_SIZE_BYTES, this.environment.origin.toBuffer())
108109 }
109110
110111 /**
111112 * Gets caller address and loads it into memory at the given offset. This is
112113 * the address of the account that is directly responsible for this execution.
113114 * @param {integer} offset
114115 */
115116 caller (offset) {
116- this.setMemory(offset, constants.ADDRESS_SIZE_BYTES, this.environment.caller)
117+ this.setMemory(offset, constants.ADDRESS_SIZE_BYTES, this.environment.caller.toBuffer())
117118 }
118119
119120 /**
120121 * Gets the deposited value by the instruction/transaction responsible for
@@ -170,9 +171,9 @@
170171 * @param {integer} addressOffset the offset in memory to load the address from
171172 * @return {integer}
172173 */
173174 extCodeSize (addressOffset) {
174- const address = this.getMemory(addressOffset, constants.ADDRESS_SIZE_BYTES)
175+ const address = new Address(this.getMemory(addressOffset, constants.ADDRESS_SIZE_BYTES))
175176 const code = this.environment.getCode(address)
176177 return code.length
177178 }
178179
@@ -183,9 +184,9 @@
183184 * @param {integer} codeOffset the code offset
184185 * @param {integer} length the length of code to copy
185186 */
186187 extCodeCopy (addressOffset, offset, codeOffset, length) {
187- const address = this.getMemory(addressOffset, constants.ADDRESS_SIZE_BYTES)
188+ const address = new Address(this.getMemory(addressOffset, constants.ADDRESS_SIZE_BYTES))
188189 let code = this.environment.getCode(address)
189190 code = new Uint8Array(code, codeOffset, length)
190191 this.setMemory(offset, length, code)
191192 }
@@ -212,9 +213,9 @@
212213 * Gets the block’s beneficiary address and loads into memory.
213214 * @param offset
214215 */
215216 coinbase (offset) {
216- this.setMemory(offset, constants.ADDRESS_SIZE_BYTES, this.environment.coinbase)
217+ this.setMemory(offset, constants.ADDRESS_SIZE_BYTES, this.environment.coinbase.toBuffer())
217218 }
218219
219220 /**
220221 * Get the block’s timestamp.
@@ -291,9 +292,9 @@
291292 if (gas === undefined) {
292293 gas = this.gasLeft()
293294 }
294295 // Load the params from mem
295- const address = this.getMemory(addressOffset, constants.ADDRESS_SIZE_BYTES)
296+ const address = new Address(this.getMemory(addressOffset, constants.ADDRESS_SIZE_BYTES))
296297 const value = this.getMemory(valueOffset, constants.BALANCE_SIZE_BYTES)
297298 const data = this.getMemory(dataOffset, dataLength)
298299 // Run the call
299300 const [result, errorCode] = this.environment.call(gas, address, value, data)
@@ -314,9 +315,9 @@
314315 * @return {integer} Returns 1 or 0 depending on if the VM trapped on the message or not
315316 */
316317 callDelegate (gas, addressOffset, dataOffset, dataLength, resultOffset, resultLength) {
317318 const data = this.getMemory(dataOffset, dataLength)
318- const address = this.getMemory(addressOffset, constants.ADDRESS_SIZE_BYTES)
319+ const address = new Address(this.getMemory(addressOffset, constants.ADDRESS_SIZE_BYTES))
319320 const [result, errorCode] = this.environment.callDelegate(gas, address, data)
320321 this.setMemory(resultOffset, resultLength, result)
321322 return errorCode
322323 }
@@ -373,9 +374,9 @@
373374 * balance to an address path
374375 * @param {integer} offset the offset to load the address from
375376 */
376377 suicide (addressOffset) {
377- this.environment.suicideAddress = this.getMemory(addressOffset, constants.ADDRESS_SIZE_BYTES)
378+ this.environment.suicideAddress = new Address(this.getMemory(addressOffset, constants.ADDRESS_SIZE_BYTES))
378379 }
379380
380381 getMemory (offset, length) {
381382 return new Uint8Array(this.module.exports.memory, offset, length)

Built with git-ssb-web