func:  WebGLContext::CompileShader(WebGLShader *shader) if ( IsContextLost ( ) )  if ( ! ValidateObject ( "compileShader" , shader ) )  if ( ! mShaderValidation )  if ( ! shader -> NeedsTranslation ( ) )  StripComments stripComments ( shader -> Source ( ) ) ; const nsAString & cleanSource = Substring ( stripComments . result ( ) . Elements ( ) , stripComments . length ( ) ) ; if ( ! ValidateGLSLString ( cleanSource , "compileShader" ) )  NS_LossyConvertUTF16toASCII sourceCString ( cleanSource ) ; if ( gl -> WorkAroundDriverBugs ( ) )  const uint32_t maxSourceLength = 0x3ffff ; if ( sourceCString . Length ( ) > maxSourceLength )  const char * s = sourceCString . get ( ) ; static const char * bypassPrefixSearch = "#version proto-200" ; const bool bypassANGLE = IsWebGL2 ( ) && ( strstr ( s , bypassPrefixSearch ) != 0 ) ; nsTArray < char > bypassDriverShaderCode ; if ( bypassANGLE )  const char * originalShader = strstr ( s , bypassPrefixSearch ) + strlen ( bypassPrefixSearch ) ; strcpy ( bypassDriverShaderCode . Elements ( ) , "#extension GL_EXT_gpu_shader4 : enable\n" ); strcat ( bypassDriverShaderCode . Elements ( ) , originalShader ); const char * driverShaderCode = bypassDriverShaderCode . Elements ( ) ; 