2

I am trying to compile the create op code example in here Create new contract via .call(). But it fails:

execute.sol:17:19: Error: Identifier not found. jumpi(invalidJumpLabel,iszero(extcodesize(addr)))

Looks like invalidJumpLabel mysteriously disappeared from the solidity docs from 0.4.9 to 0.4.10. Couldn't find anything in the solidity git history referencing such changes. Any idea how I can get that contract compiling with the same functionality? Is there a new label other than invalidJumpLabel I can use?

1 Answer 1

2

Your question got me curious, so I dug around the Solidity repo. Turns out that feature was introduced in Nov 2016, and pulled a few months later, in Apr 2017.

$ git clone https://github.com/ethereum/solidity
$ git log -S invalidJumpLabel --source --all 
commit 28f10f4783bd4365654191740069a7112be03d92 refs/remotes/origin/inheritanceCleanup
Author: chriseth <[email protected]>
Date:   Fri Apr 28 13:09:48 2017 +0200
Remove error label / invalid jump label.
[...]
commit ae8403ed08cf3b2b5bec1d3f8da0c6c7425a4d5a refs/tags/untagged-ac13667a0597c2802196 
Author: Alex Beregszaszi <[email protected]> 
Date:   Tue Nov 15 10:12:03 2016 +0000
Rename ErrorTag to invalidJumpLabel in inline assembly

If you check the tests in InlineAssembly.cpp, you will also see:

BOOST_AUTO_TEST_CASE(error_tag)
{
    CHECK_ERROR("{ jump(invalidJumpLabel) }", true, DeclarationError, "Identifier not found", true);
}

So, it appears this feature is no longer available.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.